discord.js v13 | не удается получить информацию о целевом пользователе

#javascript #node.js #discord.js #bots

Вопрос:

я использую discord.js версия 13.1.0 с node.js версия 16.7.0, я написал этот код, чтобы показать мне информацию о пользователе во встраивании, но проблема в том, что он показывает мне только мою информацию.

Я также попробовал это guildMember.user вместо user , но он не может выполнить команду, которую он показывает мне в консоли TypeError: Cannot read property 'user' of undefined .

Вот код команды:

 module.exports = {
    data: new SlashCommandBuilder()
        .setName('info')
        .setDescription('Get info about a user or a server!')
        .addSubcommand(subcommand =>
            subcommand
                .setName('user')
                .setDescription('Info about a user')
                .addUserOption(option => option.setName('target').setDescription('The user'))),
    async userInfo = new MessageEmbed()
                .setColor('#0099ff')
                .setTitle('Some title')
                .setAuthor('Some name', interaction.user.displayAvatarURL({ dynamic: true }))
                .setDescription('Some description here')
                .setThumbnail(interaction.user.displayAvatarURL({ dynamic: true }))
                .addFields(
                    { name: 'Hello', value: 'Hello' },
                    { name: 'u200B', value: 'u200B' },
                    { name: 'ID', value: interaction.user.id, inline: true },
                    { name: 'Username', value: interaction.user.tag, inline: true },
                )
                .setTimestamp()
                .setFooter('Some footer text here', 'https://i.imgur.com/AfFp7pu.png');
    if (interaction.options.getSubcommand() === 'user') {
            const user = interaction.options.getUser('target');
            if (user) {
            await interaction.reply({ embeds: [userInfo] });
   };
};
 

Комментарии:

1. у вас включены привилегированные намерения в вашем боте?

2. Где это interaction определено?

3. Этот код даже не является допустимым javascript… Он SlashCommandBuilder создает метаданные для вашей команды, и вы должны обрабатывать взаимодействия в функции или interactionCreate прослушивателе.

4. @G-Force да, я написал const client = new Client({ intents:[Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] }); в главном файле своего бота (index.js).

5. @MrMythical в index.js файл, который я еще не сделал обработчиком событий, смотри! код работает, я сказал, что проблема в том, что бот возвращал только мою информацию, даже если я нацелился на кого-то, чтобы получить его информацию, надеюсь, вы можете увидеть мой ответ ниже

Ответ №1:

в любом случае проблема заключалась в том , что interaction раньше user.'property or method' , когда вы ставили interaction перед классом user , вы указывали только пользователя, который командовал ботом в discord, используя команды слэша, когда вы удаляете его, вы указываете целевого пользователя. Я надеюсь, вы понимаете, что это для вас исключение:

 data: new SlashCommandBuilder()
    .setName('user-tag')
    .setDescription('show a user's tag')
    .addUserOption(option => option.setName('target').setDescription('to show the targeted user's tag')),

async execute(interaction) {
    const user = interaction.options.getUser('target');
    if (user) {
        //to show targeted user's tag
        return interaction.reply(`the user's tag :${user.tag}`);
    } else {
        //to show your tag if you were the commander
        return interaction.reply(`the user's tag :${interaction.user.tag}`);
    }
 

если у вас есть какие-либо другие сведения о interaction вас, вы можете указать источник информации или сообщить нам в комментариях.