分配角色命令不适用于多个单词的角色

时间:2019-09-21 19:07:21

标签: c# .net discord.net

所以这可以向其他用户添加角色,但是如果角色有两个单词,它将无法工作

                {
                    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}");
                }

1 个答案:

答案 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);