Присвоение роли не будет работать с ролями, состоящими из более чем одного слова - PullRequest
0 голосов
/ 21 сентября 2019

так что это работает для добавления ролей другим пользователям, но если роль имеет два слова, она не будет работать

                {
                    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 голосов
/ 24 сентября 2019

Context.Guild.Roles.FirstOrDefault(x => x.Mention == "RoleName")

Прежде всего, вы, вероятно, забыли присвоить role возвращаемому результату операции.
(Или вы не скопировали и вставили эту часть должным образом.)

Это должно быть

role = Context.Guild.Roles.FirstOrDefault(x => x.Mention == "RoleName")


Вы пытались сравнитьимя роли против указанной роли роли .
Вместо этого следует сравнить со свойством роли Name, например:

role = Context.Guild.Roles.FirstOrDefault(x => x.Name == "RoleName");

В качестве альтернативы , вы также можете сравнить с идентификатором роли, например, так:

role = Context.Guild.Roles.FirstOrDefault(x => x.Id == roleID);

, что вы можете просто использовать функцию GetRole(Id) из Guild,вот так:

role = Context.Guild.GetRole(roleId);
...