Java Discord4J 3.x 版本:如何在 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/jqFh 著作权归作者所有。请勿转载和采集!