You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaCord Discord API获取用户输入,开发Discord管理申请机器人

基于JavaCord的管理员申请收集Embed推送实现方案

前置准备

你需要先在项目中引入JavaCord依赖,以Maven为例,在pom.xml中添加如下配置:

<dependency>
    <groupId>org.javacord</groupId>
    <artifactId>javacord-api</artifactId>
    <version>3.8.0</version>
</dependency>
<dependency>
    <groupId>org.javacord</groupId>
    <artifactId>javacord-core</artifactId>
    <version>3.8.0</version>
</dependency>

Gradle配置参考:

implementation 'org.javacord:javacord-api:3.8.0'
runtimeOnly 'org.javacord:javacord-core:3.8.0'

核心实现逻辑

我们采用斜杠命令的方式收集申请信息,相比普通消息输入格式更规范,用户提交门槛更低:

  • 首先注册全局/服务器专属的/申请管理员斜杠命令,配置需要用户填写的参数:昵称、申请理由、相关管理经验
  • 监听斜杠命令提交事件,提取用户提交的所有参数
  • 构建Embed格式的审核消息,推送到指定的管理员审核频道
  • 给提交申请的用户返回受理成功的提示

完整代码示例

import org.javacord.api.DiscordApi;
import org.javacord.api.DiscordApiBuilder;
import org.javacord.api.entity.message.embed.EmbedBuilder;
import org.javacord.api.interaction.SlashCommand;
import org.javacord.api.interaction.SlashCommandOption;
import org.javacord.api.interaction.SlashCommandOptionType;
import java.awt.*;
import java.time.Instant;
import java.util.List;

public class AdminApplyBot {
    // 替换为你自己的审核频道ID
    private static final long AUDIT_CHANNEL_ID = 123456789012345678L;
    // 替换为你的机器人Token
    private static final String BOT_TOKEN = "你的机器人Token";
    // 替换为你的服务器ID
    private static final long SERVER_ID = 987654321098765432L;

    public static void main(String[] args) {
        DiscordApi api = new DiscordApiBuilder().setToken(BOT_TOKEN).login().join();

        // 注册管理员申请斜杠命令,仅当前服务器生效,全局生效请用createGlobal方法
        SlashCommand.with("申请管理员", "提交服务器管理员申请",
                List.of(
                    SlashCommandOption.create(SlashCommandOptionType.STRING, "昵称", "你在服务器内的常用昵称", true),
                    SlashCommandOption.create(SlashCommandOptionType.STRING, "申请理由", "申请成为管理员的原因", true),
                    SlashCommandOption.create(SlashCommandOptionType.STRING, "相关经验", "过往的社区管理相关经验", true)
                )).createForServer(api.getServerById(SERVER_ID).get()).join();

        // 监听斜杠命令提交事件
        api.addSlashCommandCreateListener(event -> {
            if (event.getSlashCommandInteraction().getCommandName().equals("申请管理员")) {
                // 提取用户提交的参数
                String nickname = event.getSlashCommandInteraction().getOptionStringValueByName("昵称").get();
                String reason = event.getSlashCommandInteraction().getOptionStringValueByName("申请理由").get();
                String experience = event.getSlashCommandInteraction().getOptionStringValueByName("相关经验").get();
                long applyUserId = event.getSlashCommandInteraction().getUser().getId();

                // 构建Embed审核消息
                EmbedBuilder applyEmbed = new EmbedBuilder()
                        .setTitle("新的管理员申请")
                        .setColor(Color.BLUE)
                        .addField("申请人昵称", nickname, false)
                        .addField("申请人ID", String.valueOf(applyUserId), false)
                        .addField("申请理由", reason, false)
                        .addField("相关经验", experience, false)
                        .setTimestamp(Instant.now())
                        .setFooter("管理员申请系统");

                // 推送到指定审核频道
                api.getTextChannelById(AUDIT_CHANNEL_ID).ifPresent(channel -> {
                    channel.sendMessage(applyEmbed);
                });

                // 给用户返回受理提示
                event.getSlashCommandInteraction().createImmediateResponder()
                        .setContent("你的管理员申请已提交,我们会尽快审核后通知你结果")
                        .respond();
            }
        });
    }
}

注意事项

  • 启动前请确认机器人已经开启Server Members Intent权限,否则无法正常获取用户信息
  • 确认机器人在审核频道拥有发送消息、嵌入链接权限,否则Embed消息无法正常发送
  • 代码中所有占位的ID、Token都需要替换为你自己的实际参数
  • 如果你更习惯用普通消息收集申请,只需监听ServerMessageReceivedEvent,按约定格式拆分用户输入内容即可,Embed构建、推送逻辑和上述示例完全一致
  • 可以根据需要扩展申请字段,比如在线时长、擅长的管理方向等,只需在斜杠命令配置中新增对应Option即可

内容的提问来源于stack exchange,提问作者Adityacraft1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:24:03