我想写一个代码,将发送一个嵌入与所有的命令,所以我写了一个代码的工作,但在发送嵌入后,它显示了一个错误以上的嵌入:embed。代码如下:
const { Client, GatewayIntentBits, CommandInteraction, EmbedBuilder } = require('discord.js')
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
// ...
]
});
client.on('ready', async () => {
console.log(`Logged in as ${client.user.tag}!`);
const commands = [
{
name: 'pomoc',
description: 'Wyświetla wszystkie komendy'
}
];
const commandData = commands.map(command => ({
name: command.name,
description: command.description
}));
const commandManager = await client.application?.commands.set(commandData);
console.log(`Registered ${commandManager.size} slash commands`);
});
client.on('interactionCreate', interaction => {
if (!interaction.isCommand()) return;
if (interaction.commandName === 'pomoc') {
const embed = new EmbedBuilder()
.setTitle('some title')
.setDescription('some description')
interaction.channel.send({embeds: [embed]})
}
});
client.login(process.env.CLIENT_TOKEN);
我试过这个方法:
interaction.channel.send({
embeds: [{
title: 'some title',
description: 'some description',
image: {url: 'image url'}
}]
})
1条答案
按热度按时间hc8w905p1#
问题在于您在交互通道中发送消息,而不是回复交互本身。
当调用一个斜杠命令时,discord会向服务器发送一个请求并等待响应。这个错误是由于响应超时,因为服务器发出了一个单独的请求而不是响应初始请求。
您应该使用
interaction.reply(details)
来响应交互,而不是使用interaction.channel.send(details)
。