Discord.ЧИСТЫЙ c # SocketUser возвращает значение null

#c# #discord #bots #discord.net

#c# #Discord #боты #discord.net

Вопрос:

Я кодирую бот на c # и пытаюсь выполнить команду !user @, которая предоставляет информацию о помеченном пользователе.

Вот как я получаю идентификатор пользователя

 public async Task Info(string user)
 

Вот как я превращаю его просто в числа

 user = user.Substring(3);
int k = user.Length;
user = user.Substring(0, k - 1);
 

Например: !user <@!749020331187896410> преобразуется в 749020331187896410

И это то, что я делаю, чтобы получить пользователя, как я бы сделал для Context.Message.Автор

 var client = Context.Client;
ulong id = Convert.ToUInt64(user);
var socketUser = client.GetUser(id);
 

Я попытался добавить as SocketUser и as SocketGuildUser в последней строке, но все равно возвращает null
Справка :/

Комментарии:

1. Server Members Intent Включен ли он в вашем боте?

2. Да, это сделало это, спасибо

3. Я публикую это как ответ, чтобы его можно было принять.

Ответ №1:

Вы должны включить намерение участников сервера в консоли разработчика Discord:

Переключатель

Ответ №2:

Это должно сработать

    [Command("user")]
    public async Task blizz_con(IGuildUser user)
    {
        await ReplyAsync(user.Id.ToString());
    }
 

или, если вы непосредственно работаете с сообщением:

 message.Author.id