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

如何通过Java Discord Bot实现@提及任意指定成员的功能

实现方案

核心逻辑是直接调用Discord Bot库自带的提及用户解析接口获取被@的用户ID,动态拼接进回复内容即可,无需自行正则解析消息文本。

代码修改说明

  1. 原逻辑用equalsIgnoreCase全匹配指令内容是错误的,因为指令后带有@用户的参数,需要改为匹配前缀即可
  2. 从消息对象的提及集合中取出被@的目标用户
  3. 动态拼接用户ID到回复模板中,Discord会自动将<@!用户ID>格式渲染为@提及效果

修改后完整代码

if(message.getMessageContent().startsWith(main.prefix + "inappropriate"))
{
    // 获取当前消息中所有被@的用户列表
    List<User> mentionedUsers = message.getMentions().getUsers();
    // 校验参数:用户没有@任何成员时给出提示
    if(mentionedUsers.isEmpty()) {
        message.getChannel().sendMessage("使用指令时请@要举报的违规用户").queue();
        return;
    }
    // 取第一个被@的目标用户
    User target = mentionedUsers.get(0);
    // 动态拼接生成带@提及的回复内容
    message.getChannel().sendMessage("username of <@!" + target.getId() + "> is inappropriate.").queue();
}

补充说明

  • 若需要支持同时举报多个用户,遍历mentionedUsers列表拼接所有用户的@格式即可
  • 若要做权限管控,可增加权限校验逻辑,仅允许管理员/相关角色使用该指令
  • 如果你用的是其他语言的Discord库,核心逻辑通用:从消息对象的提及属性中取目标用户ID,拼入<@!用户ID>格式即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:24:01