我正在编写一个不和谐的机器人,并且我希望它在机器人加入新服务器时将消息发送到服务器默认通道。

这是我的代码

client.JoinedGuild += async guild =>
{
var channel = guild.DefaultChannel;
await channel.SendMessageAsync("test");
};


该错误发生在channel.SendMessageAsync上,并且当我调试程序时,即使我的服务器中确实有默认通道,它仍显示channel为空。

最佳答案

几个月前的不和谐更新删除了defaultChannel属性。这意味着服务器现在根本不需要默认通道。
(您甚至可以删除服务器中的所有频道!)

这也意味着Guild.DefaultChannel属性将不再按预期工作。
(如果我错了,请更正我,但是如果服务器仍然具有#general通道,则该属性将按预期工作。)

Discord.NET v2 +具有有效的DefaultChannel属性。 (它使用自己的一组算法来确定哪个将是行会的默认频道。)

该算法的源代码为here。 (66-69行)

看一下算法,您可能要谨慎使用它,如果您的机器人有权在任何地方发送消息,则DefaultChannel属性将只是服务器通道列表中的第一个通道。
(如果这是一个自述频道,那将是个坏消息)

关于c# - Discord.NET Guild.DefaultChannel不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46515121/

10-17 02:01
查看更多