所以这可以向其他用户添加角色,但是如果角色有两个单词,它将无法工作
{
await Context.Channel.SendMessageAsync($"User already has this role");
}
else
{
Context.Guild.Roles.FirstOrDefault(x => x.Mention == "RoleName");
await (user as IGuildUser).AddRoleAsync(role);
await Context.Channel.SendMessageAsync($"{user.Mention} has been assigned {role}");
}
答案 0 :(得分:0)
Context.Guild.Roles.FirstOrDefault(x => x.Mention == "RoleName")
首先,您可能忘记了为操作的返回结果分配role
。
(或者您没有正确复制粘贴该部分。)
应该是
role = Context.Guild.Roles.FirstOrDefault(x => x.Mention == "RoleName")
您正在尝试将角色名称与role's mentioned string进行比较。
您应该将其与角色的Name
属性进行比较,就像这样:
role = Context.Guild.Roles.FirstOrDefault(x => x.Name == "RoleName");
或者,您也可以将其与角色的ID相比较,如下所示:
role = Context.Guild.Roles.FirstOrDefault(x => x.Id == roleID);
您可以通过使用Guild
中的GetRole(Id)
函数进一步简化操作,如下所示:
role = Context.Guild.GetRole(roleId);