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

Discord.Net机器人接收消息为空,斜杠命令失效求助

Discord机器人消息为空+斜杠命令失效问题解决

核心问题分析

你的问题根源是Gateway意图配置不完整,以及Discord平台对特权意图的强制要求。一年前的代码能正常运行,是因为当时AllUnprivileged包含消息内容权限,但现在Discord将消息内容设为了特权意图,必须手动开启。

解决方案步骤

1. 在Discord开发者门户开启特权意图

  • 登录Discord开发者门户,进入你的机器人应用
  • 切换到"Bot"页面,找到"Privileged Gateway Intents"区域
  • 开启Message Content Intent开关

2. 修改代码中的GatewayIntents配置

在创建DiscordSocketClient时,补充MessageContent意图:

.AddSingleton(x => new DiscordSocketClient(new DiscordSocketConfig
{
    GatewayIntents = GatewayIntents.AllUnprivileged | GatewayIntents.MessageContent,
    AlwaysDownloadUsers = true,
}))

3. 优化消息处理逻辑(避免无效消息干扰)

在PrefixHandler的HandleCommandAsync方法中,先过滤机器人消息和非用户消息:

async Task HandleCommandAsync(SocketMessage messageParam)
{
    // 排除非用户消息(如系统消息)
    if (messageParam is not SocketUserMessage message) return;
    // 排除机器人自身发送的消息
    if (message.Author.IsBot) return;

    Console.WriteLine("Message: '" + message.Content + "'");
}

4. 检查斜杠命令的初始化逻辑

确保InteractionHandler正确注册了交互事件,比如在InitializeAsync中添加:

_client.InteractionCreated += HandleInteractionAsync;

同时确认在Ready事件中注册命令时,使用的服务器ID正确,且机器人有权限创建命令。

额外排查点

  • 确认机器人令牌config["token"]正确无误
  • 检查机器人在服务器中的权限,确保拥有"发送消息"、"使用应用命令"等基础权限
  • 查看Discord客户端的日志输出,是否有网关连接或命令注册的错误提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:55:20