#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
вас, вы можете указать источник информации или сообщить нам в комментариях.