要在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 3x版本 discord bot 消息内添加按钮

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

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