我试图让我的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语句,因为我已经在其中输出了。唯一似乎不起作用的是实际分配。任何帮助是极大的赞赏。谢谢!
答案 0 :(得分:0)
嘿,Solonce,您添加角色的方法几乎是正确的,但不是使用if
来完成此操作,而是使用已经添加的方法向机器人添加新命令。我假设!
是您的前缀,stream
是您希望机器人读取并相应添加角色的命令/单词。让我知道您的情况是否与我的假设不符。
因此,这是理想的方式。
ModuleBase<SocketCommandContext>
,使其看起来像public class Matches : ModuleBase<SocketCommandContext>
。 [Command("stream")]
来设置机器人所需的任何命令。添加角色的方法有点像这样
[Command("stream")]
public async Task RoleTask()
{
ulong roleId = 486599202093269012;
var role = Context.Guild.GetRole(roleId);
await ((SocketGuildUser) Context.User).AddRoleAsync(role);
}
对此,机器人(如果具有足够的权限)应将角色与roleId一起授予发送命令的用户。即!stream
另外,如果您要入门,我真的建议您看看http://docs.stillu.cc上的一些出色文档,另一种好方法是查看示例以进行学习。 This是我刚入门时所使用的机器人。也许你可以学习。
答案 1 :(得分:0)