Discord.NET Guild.DefaultChannel 无效

Discord.NET Guild.DefaultChannel does not work

我正在编写一个 discord 机器人,我希望它在机器人加入新服务器时向服务器默认频道发送消息。

这是我的代码

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

错误发生在 channel.SendMessageAsync,当我调试程序时,它一直显示 channel 为空,即使我的服务器中确实有一个默认频道。

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

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

Discord.NET v2+ 有一个工作 DefaultChannel 属性。 (它使用自己的一套算法来确定公会的默认频道。)

算法的源代码是here。 (第 66-69 行)

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