C# Discord.Net MessageReceived 事件内容属性是空字符串

问题描述 投票:0回答:1

我目前正在重写我的 Discord Bot,因为旧的机器人仍在 .Net 4.8 Framework 上运行,因此我无法访问新功能,并且许多地方的代码写得不好。这就是为什么我开始使用当前版本的库 (3.8.1) 在 .Net 6 中重写机器人。

我当前遇到的问题是,在我的命令处理程序中,MessageReceived 事件的内容属性是一个空字符串。整个互联网上都在讨论 Discord 开发者门户中的消息内容网关意图,但我启用了此意图,当我从应用程序启动任何其他机器人时,我遇到了完全相同的问题。

这也不能算是验证,因为机器人只在 4 台服务器上。同样奇怪的是,只要消息中的某处提到了机器人,一切都会正常进行,例如如果我写“ping”,那么模块库中相应的命令不会被执行,因为 SocketMessage 内容为空,但当我写“ping @Botname”时,它会起作用。所以这也不能是由于通道中的读/写权限造成的。在与机器人的 DM 聊天中我没有遇到问题。斜杠命令工作正常,但我不想在斜杠命令上构建整个机器人,因为我计划了很多命令,并且不希望所有命令都出现在命令浏览器中。即使降级到旧版本的库也没有改变任何东西。它的代码与我的旧机器人的代码几乎相同,但我的旧机器人可以正常工作。

Content Empty

如果问题需要部分代码,请告诉我。 在那之前,提前致谢!我希望我从谷歌翻译器那里得到的帮助不是那么明显。


我在开发人员门户中尝试了网关意图激活的所有组合,在客户端配置中测试了 GatewayIntents 枚举器的多种组合,我尝试了其他机器人和其他服务器,甚至尝试了其他不和谐帐户。

c# string discord event-handling .net-6.0
1个回答
0
投票

这里也有同样的问题。我通过设置网关意图解决了这个问题

public async Task RunBotAsync()
{
    var cfg = new DiscordSocketConfig()
    {
        GatewayIntents = GatewayIntents.MessageContent
    };
    _client = new DiscordSocketClient(cfg);
}
© www.soinside.com 2019 - 2024. All rights reserved.