#What error again Can you show the error

1 messages · Page 1 of 1 (latest)

native fossil
#
const Levels = require("discord-xp");

module.exports = {
    name: "— User Rank",
    type: 2,
    run: async (interaction) => {
        const target = interaction.guild.members.cache.get(
            interaction.targetId
        );

        const user = await Levels.fetch(target.id, interaction.guild.id); // Selects the target from the database.

        if (!user) {
            await interaction.reply({
                content: "Seems like this user has not earned any xp so far.",
                ephemeral: true,
            });
        } else {
            await interaction.reply({
                content: `__${
                    target.tag
                }__\n\n> **Level**\n> :arrowup: ${
                    user.level
                }\n\n> **Current XP**\n> :field: ${
                    user.xp
                } / :field: ${Levels.xpFor(
                    user.level + 1
                )}`,
                ephemeral: true,
            });
        }
    },
};
mild briar
#

And error

native fossil
#
Promise {
  <rejected> TypeError: Cannot read properties of undefined (reading 'members')
      at Object.run (C:\Users\neoai\Desktop\Depom\Neobot\commands\user\level\rank.js:7:36)
      at Client.<anonymous> (C:\Users\neoai\Desktop\Depom\Neobot\events\guild\interactionCreate.js:29:12)
...
}```
mild briar
#

Is this a context menu?

native fossil
#

For User

mild briar
#

And to be sure what’s line 29?

native fossil
#

running code

native fossil
#
command.run(client, interaction, config);```
mild briar
#

If that’s how you run the command then I’m guessing you missed your ordering of params

mild briar
native fossil
#

alr

#

I thought params werent that important for these stuffs

mild briar
#

They aren’t, but the order matters

#

As if you do
Client, interaction
Then pass
Run async (interaction, client)

#

Interaction in your run function will be client

#

As you passed it to be that

#

Change it and see if it errors again

native fossil
#

I see

#

@mild briar command is working but target.tag does not return user's username and discrim, eh

#

returns undefined xd

#

but other parts works well

warm havenBOT
#

Despite sounding similar there is a distinct difference between users and members in Discord:
User: global Discord user data (global avatar, username, tag, id)
GuildMember: user data associated to a guild (guild, nickname, roles, voice, guild avatar, etc.)
• Conversion: User ➞ GuildMember | GuildMember ➞ User

mild briar
#

Also this ^

native fossil
#

na na

mild briar
#

Users have usernames members have nicknames

native fossil
#

user.tag

#

should return

#

usertag

#

lemme check

mild briar
native fossil
#

target.tag should've returned tho

mild briar
#

Yh members don’t have tags, users do

native fossil
#

user.tag did not work

#

user is var

mild briar
#

No

#

The variable, target, is a member

warm havenBOT
#

Despite sounding similar there is a distinct difference between users and members in Discord:
User: global Discord user data (global avatar, username, tag, id)
GuildMember: user data associated to a guild (guild, nickname, roles, voice, guild avatar, etc.)
• Conversion: User ➞ GuildMember | GuildMember ➞ User

native fossil
#

and it contains interaction.guild.member.cache from target variable

mild briar
#

Right

native fossil
#

so it is containing member

mild briar
#

Let me explain this

#

guild.member

#

Is getting a member

native fossil
#

yes

mild briar
#

So your target variable is a member

#

Not a user

native fossil
#

yes a guild member is my target.

mild briar
#

Exactly

#

Members don’t have tags

#

Users do

native fossil
#

mhm

mild briar
#

So use target.user.tag for their tag

native fossil
#

:D

#

Thank you for your help

mild briar
#

No worries, you got it now?