Discord.JS - 如何从用户名中获取用户 ID?

时间:2021-05-28 20:04:28

标签: discord.js

有人可以帮我从用户 ID 中检索用户名并向使用该 ID 的聊天发送消息吗?

    if (message.content.startsWith(prefix)) {
        const [CMD_NAME, ...args] = message.content
          .trim()
          .substring(prefix.length)
          .split(/\s+/);

      if (CMD_NAME === "getid") {
        const getid1 = new MessageEmbed()
          .setDescription("❗️ | Please tag the member to retrieve the ID!")
          .setColor(10181046);
      if (args.length === 0) return message.reply(getid1);

        const username = client.guilds.cache.get('<GUILD ID>');
        const userid = client.users.cache.find(username => username.tag === 'Someone#1234').id
        message.channel.send(`${username} id is ${userid}`);

      }
    }

});

当我输入命令“d!getid @Username”时,它显示了这个错误:

<块引用>

C:\Users\USER\Desktop\DiscordBotas\index.js:152 const userid = client.users.cache.find(username => username.tag === 'Someone#1234').id TypeError: 不能在客户端读取未定义的属性“id”。 (C:\Users\USER\Desktop\DiscordBotas\index.js:152:90)

2 个答案:

答案 0 :(得分:1)

您正在创建一个您刚刚在实际 lambda 之上定义的变量的 lambda,这可能会干扰您的代码。

const username = client.guilds.cache.get('<GUILD ID>'); 是错误的。

如果您修复了它上面的行,那么获取 userId 应该可以正常工作。

答案 1 :(得分:0)

您试图以错误的方式吸引用户。首先,为什么要尝试将用户的标签与公会匹配?也许你认为 guild.cache 有用户?嗯,实际上,这是 client.guilds.cache,它只有公会,它返回一个公会,而不是用户。其次,要获取一个用户,可以试试这个方法:

const user = client.users.cache.find(u => u.tag === 'SomeUser#0000')
console.log(user.id);

下面是通过 ID 获取用户的代码,但考虑到您已经可以访问 ID,它可能无济于事

const user = client.users.cache.get("<UserID>");
console.log(user);

此外,您应该添加代码以查看是否找不到用户(客户端无法找到具有条件的用户)。下面是一些代码来检查:

//... the find user code I put
if(!user) return message.reply('User could not be found');
message.channel.send(user.id);