首页 > 解决方案 > Discord.NET 分配角色

问题描述

我试图让我的 discord 机器人在用户输入命令“!stream”时为其分配一个角色。我对 c# 和 discord.net 编程非常陌生。现在我有应该在消息接收方法中分配角色的代码。这可能不是最好的方法,但我现在不确定更好的方法。无论如何,这里是代码:

IGuildUser user = (IGuildUser)arg.Author;
IRole role = ((IGuildChannel)arg.Channel).Guild.GetRole(theRoleID);
if (arg.Content == "!stream") {
    await (user as IGuildUser).AddRoleAsync(role);
}

我已经确保用户和角色都获得了正确的用户和正确的角色。它也运行 if 语句,因为我在其中有输出。唯一似乎不起作用的是实际分配。任何帮助是极大的赞赏。谢谢!

标签: c#discorddiscord.net

解决方案


如果代码方面的一切都已经正常工作,那么您可能在 Discord 服务器本身上遇到了权限问题。

我会用一个例子来解释:

不久前,当我尝试做出一些对我的生活不起作用的审核命令时,类似的事情发生在我身上,即使代码是正确的并且它没有给出任何错误。

问题原来是discord服务器上的角色层次结构:基本上机器人分配的角色只能影响他下面的角色,例如截图:

不和谐角色层次结构

你会注意到Inquisition下面有一个角色Admin

这是一个机器人,它需要位于所有其他角色之上才能与这些用户进行交互,所以我建议你尝试将你的机器人提升到角色阶梯上,看看是否能解决你的问题。


推荐阅读