DSharpPlus开发的Discord Bot仅响应@提及,!前缀命令无反应求助
问题原因及解决方案
1. 未启用消息内容意图(Message Content Intent)
Discord新权限模型规定,Bot必须申请消息内容意图才能读取普通消息内容,否则仅能响应@提及的消息,这是此类问题的最常见诱因:
修复步骤:
- 登录Discord开发者门户,找到你的Bot应用,进入「Bot」页面
- 在「Privileged Gateway Intents」板块,开启「Message Content Intent」
- 在代码的
DiscordConfiguration中补充意图配置:var config = new DiscordConfiguration { Token = configJson.Token, TokenType = TokenType.Bot, AutoReconnect = true, MinimumLogLevel = LogLevel.Debug, // 添加该行启用消息内容意图 Intents = DiscordIntents.AllUnprivileged | DiscordIntents.MessageContent };
2. ConfigJson类反序列化失败
若ConfigJson类的属性名称与config.json中的键不匹配,会导致configJson.Prefix值为空,此时CommandsNext仅会启用提及前缀:
检查并修正ConfigJson类:
确保类属性与json键完全对应(大小写敏感),或添加JsonProperty特性明确映射:
namespace MyBot.Models.Generic { public class ConfigJson { [JsonProperty("Token")] public string Token { get; set; } [JsonProperty("Prefix")] public string Prefix { get; set; } } }
3. 其他排查方向
- 确认config.json已被复制到输出目录:右键文件→属性→「复制到输出目录」选择「始终复制」
- 检查Bot在服务器中是否拥有「读取消息历史」「发送消息」权限
- 临时添加日志验证前缀读取是否正确:
client.Logger.LogInformation(BotEventId, $"当前加载的命令前缀:{configJson.Prefix}");
内容的提问来源于stack exchange,提问作者goalie35
相关产品推荐
相关产品推荐

