【问题标题】:How to get username from client id after the user has left the guild用户离开公会后如何从客户端ID获取用户名
【发布时间】:2018-12-08 09:51:28
【问题描述】:

我有统计数据。我正在从 User Id 数据库下载并用它的名称替换 ID,但是如果用户离开了服务器,则会出现错误,因为没有这样的用户。

我有bot.users.get(id),但是当用户离开服务器时,会弹出一个错误。

如果用户不在服务器上,我可以用不同的ID获取用户名吗?

【问题讨论】:

  • 如果用户不在服务器上,你打算如何获取 id。输入?
  • 如何检查服务器上的用户 ID?

标签: discord discord.js


【解决方案1】:

很抱歉迟到了,就像字面意思一样。您可以通过UserResolvableClient#fetchUser(<UserResolvable>); 执行从Discord 获取用户的请求。

在实践中,代码应该是这样的;

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.
});

还是希望我能帮到你。 ~问

【讨论】:

    【解决方案2】:

    由于client.users 仅存储缓存的用户,您将无法从那里以可靠的方式检索他们的用户名。

    免责声明:这种方法真的效率低下,但 discord.js 并没有为这种工作而生。如果你想让它更容易,只需写Unknown user (client_id)

    如果您无法从用户列表中获取用户名,您可以尝试使用消息:在您公会的每个频道上使用channel.fetchMessages(),直到找到message.author.id == your_id 的消息,当您找到它时可以通过message.author.username获取用户名

    还有另一种解决方案:self-bot。请记住,Discord 本身不支持此功能,并且可能导致a permanent ban for the account you're using。 话虽如此,如果您使用自我机器人,您可以使用TextChannel.search() 方法快速找到带有您的作者ID的消息,然后从作者那里获取用户名。

    【讨论】:

    • 请帮忙。我如何检查用户 ID 是否在服务器上?现在,如果用户不在服务器上 - 机器人崩溃。 message.guild.members.get(rows[4]['userID']).user.username
    • 阅读我的回答:你的方法行不通,因为你的公会中没有这样的成员。
    • 但是我如何检查用户 ID 是否在服务器上,因为我想替换为例如“此用户不在此服务器上!”
    • 如果guild.members.get("user_id_here")返回undefined,那么用户已经不在公会中了。
    猜你喜欢
    • 1970-01-01
    • 2022-01-21
    • 2011-10-22
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 2014-06-02
    相关资源
    最近更新 更多