java discord4j 3x版本 discord bot 消息内添加按钮
要在Java Discord4J 3.x版本的Discord Bot消息中添加按钮,需要使用Discord4J的交互组件API。以下是添加按钮的步骤:
- 导入Discord4J的依赖:
<dependency>
<groupId>com.discord4j</groupId>
<artifactId>discord4j-core</artifactId>
<version>3.1.2</version>
</dependency>
- 创建一个按钮:
Button button = Button.primary("button-id", "Button Label");
这将创建一个主要按钮,其ID为“button-id”,标签为“Button Label”。您可以使用其他按钮类型(次要、危险等)和其他选项(样式、URL等)。
- 创建一个交互消息:
InteractionMessageCreateSpec messageSpec = InteractionMessageCreateSpec.create()
.setContent("This is a message with a button!")
.addComponent(button);
这将创建一个交互消息规范,其中包含一个文本内容和一个按钮。
- 发送交互消息:
channel.createMessage(messageSpec).block();
这将在指定的频道中发送交互消息。
完整的示例代码如下:
import discord4j.core.DiscordClient;
import discord4j.core.GatewayDiscordClient;
import discord4j.core.event.domain.interaction.ButtonInteractEvent;
import discord4j.core.event.domain.interaction.InteractionCreateEvent;
import discord4j.core.event.domain.lifecycle.ReadyEvent;
import discord4j.core.object.entity.channel.MessageChannel;
import discord4j.core.object.entity.channel.TextChannel;
import discord4j.core.spec.InteractionMessageCreateSpec;
import discord4j.rest.util.Button;
public class MyBot {
public static void main(String[] args) {
DiscordClient client = DiscordClient.create("your-bot-token");
GatewayDiscordClient gateway = client.login().block();
gateway.on(ReadyEvent.class).subscribe(event -> {
System.out.println("Logged in as " + event.getSelf().getUsername());
});
gateway.on(InteractionCreateEvent.class).subscribe(event -> {
if (event instanceof ButtonInteractEvent) {
ButtonInteractEvent buttonEvent = (ButtonInteractEvent) event;
buttonEvent.reply("Button clicked!").block();
}
});
TextChannel channel = gateway.getChannelById("channel-id").cast(TextChannel.class).block();
Button button = Button.primary("button-id", "Button Label");
InteractionMessageCreateSpec messageSpec = InteractionMessageCreateSpec.create()
.setContent("This is a message with a button!")
.addComponent(button);
channel.createMessage(messageSpec).block();
gateway.onDisconnect().block();
}
}
这个例子创建了一个Discord Bot,它在指定的频道中发送一条带有一个按钮的消息。当用户点击该按钮时,Bot会回复“Button clicked!”。
原文地址: https://www.cveoy.top/t/topic/bFN0 著作权归作者所有。请勿转载和采集!