要在 Java Discord4J 3.x 版本的 Discord Bot 消息中添加按钮,需要使用 Discord4J 的交互组件 API。以下是添加按钮的步骤:

  1. 导入 Discord4J 的依赖:
<dependency>
    <groupId>com.discord4j</groupId>
    <artifactId>discord4j-core</artifactId>
    <version>3.1.2</version>
</dependency>
  1. 创建一个按钮:
Button button = Button.primary('button-id', 'Button Label');

这将创建一个主要按钮,其 ID 为 'button-id',标签为 'Button Label'。您可以使用其他按钮类型(次要、危险等)和其他选项(样式、URL 等)。

  1. 创建一个交互消息:
InteractionMessageCreateSpec messageSpec = InteractionMessageCreateSpec.create()
        .setContent('This is a message with a button!')
        .addComponent(button);

这将创建一个交互消息规范,其中包含一个文本内容和一个按钮。

  1. 发送交互消息:
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!'。

Java Discord4J 3.x 版本:如何在 Discord Bot 消息中添加按钮

原文地址: https://www.cveoy.top/t/topic/jqFh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录