Dyzelinas
Dyzelinas

Reputation: 13

Discord.JS - How to get user ID from username?

can someone please help me to retrieve username from user ID and send a message to the chat with that 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}`);

      }
    }

});

When I type the command "d!getid @Username", it shows me this error:

C:\Users\USER\Desktop\DiscordBotas\index.js:152 const userid = client.users.cache.find(username => username.tag === 'Someone#1234').id TypeError: Cannot read property 'id' of undefined at Client. (C:\Users\USER\Desktop\DiscordBotas\index.js:152:90)

Upvotes: 1

Views: 2256

Answers (2)

MrMythical
MrMythical

Reputation: 9041

You are trying to get the user the wrong way. Firstly, why are you trying to match a user's tag with a guild? Maybe you think guild.cache has users? Well actually, this is client.guilds.cache, which only has guilds in it, and it returns a guild, not a user. Secondly, to get a user, you can try this method:

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

Below is code to get user by ID, but it probably won’t help with this, considering you would already have access to the ID

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

Also, you should add code to see if user isn’t found (client can’t find user with the condition). Here is some code to check that:

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

Upvotes: 0

Kim Kakan Andersson
Kim Kakan Andersson

Reputation: 637

You are creating a lambda of a variable that you just defined above the actual lambda, this could probably mess with your code.

The const username = client.guilds.cache.get('<GUILD ID>'); is wrong.

The fetching of the userId should probably work if you fix the line above it.

Upvotes: 1

Related Questions