Как получить имя пользователя из идентификатора клиента после того, как пользователь покинул гильдию - PullRequest
0 голосов
/ 29 июня 2018

У меня есть: bot.users.get (id), но когда пользователь покидает сервер, появляется сообщение об ошибке. Могу ли я получить имя пользователя с идентификатором по-другому, если пользователь не находится на сервере? У меня есть статистика. Я загружаю из базы данных User Id и заменяю идентификатор на его имя, но если пользователь покинул сервер, возникает ошибка, поскольку такого пользователя нет. Что я могу сделать?

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Извините за опоздание, как в буквальном смысле. Вы можете выполнить запрос на получение пользователя от Discord по UserResolvable с Client#fetchUser(<UserResolvable>);.

На практике код должен выглядеть так:

const Discord = require("discord.js");
const Client  = new Discord.Client();

Client.login("YoUr.nIcE.toKe.n");

Client.on("ready", function () { // Should do that when the client is ready.
    const User = Client.fetchUser("123456789012345678");
    console.log(User); // Some user object.
});

Надеюсь, я все же помог тебе. ~ Q

0 голосов
/ 29 июня 2018

Поскольку client.users хранит только кэшированных пользователей, вы не сможете получить их имя надежным способом оттуда.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ : Этот метод действительно неэффективен, но discord.js не был создан для такой работы. Если вы хотите сделать это проще, просто напишите Unknown user (client_id)

Если вы не можете получить имя пользователя из списка пользователей, вы можете попробовать использовать сообщения: используйте channel.fetchMessages() на каждом канале вашей гильдии, пока не найдете сообщение, в котором message.author.id == your_id , когда вы найдете его, вы можете получить имя пользователя с message.author.username

Есть и другое решение: self-bot . Помните, что этот метод не поддерживается самой компанией Discord и может привести к постоянному бану для учетной записи, которую вы используете . С учетом вышесказанного, если вы используете автобота, вы можете использовать метод TextChannel.search(), чтобы быстро найти сообщение с вашим идентификатором автора, а затем получить имя пользователя от автора.

...