我一直在尝试编写一个排名不和谐的机器人,我设法编码了它,但是当我运行该机器人并尝试在我的不和谐服务器中设置它时,它给了我这个错误,说“应用程序没有响应”有人可以帮忙吗我发现了这一点,我什至不确定代码是否能完成这项工作,但这是我的第一个项目,我刚刚开始学习如何编码,所以如果有任何问题,请随时告诉我
const Discord = require('discord.js');
const { REST } = require('@discordjs/rest');
const { Routes } = require('discord-api-types/v9');
const client = new Discord.Client({
intents: [
Discord.GatewayIntentBits.Guilds,
Discord.GatewayIntentBits.GuildMessages
]
});
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}`);
});
const Enmap = require('enmap');
const prefix = '-'; // Change this to your desired prefix
const queues = new Enmap({ name: 'queues' });
const rankings = new Enmap({ name: 'rankings' });
client.on('messageCreate', async (message) => {
if (!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).split(/ +/);
const command = args.shift().toLowerCase();
// Command to check rank
if (command === 'rank') {
const playerID = message.author.id;
const playerRank = rankings.get(playerID) || 0;
message.reply(`Your rank is ${playerRank}`);
}
// New command: Setup with -sett
if (command === '-sett') {
try {
const channel = await message.guild.channels.create('Queue', { type: 'GUILD_TEXT' });
const joinButton = new Discord.MessageButton()
.setCustomId('join_queue')
.setLabel('Join Queue')
.setStyle('PRIMARY');
const leaveButton = new Discord.MessageButton()
.setCustomId('leave_queue')
.setLabel('Leave Queue')
.setStyle('DANGER');
const row = new Discord.MessageActionRow()
.addComponents(joinButton, leaveButton);
const queueMessage = await channel.send({ content: 'Click a button to join or leave the queue:', components: [row] });
// Store queue message and channel id for future reference
queues.set('queue_message', queueMessage.id);
queues.set('queue_channel', channel.id);
// Inform setup completion
message.reply('Queue setup completed.');
} catch (err) {
console.error('Error during setup:', err);
message.reply('There was an error during setup.');
}
}
});
const YOUR_BOT_TOKEN = '';
const YOUR_APPLICATION_ID = '';
const YOUR_GUILD_ID = '';
client.login(YOUR_BOT_TOKEN);
const commands = [
{
name: 'sett',
description: 'Set up the queue system',
type: 1,
},
];
const rest = new REST({ version: '9' }).setToken(YOUR_BOT_TOKEN);
(async () => {
try {
console.log('Started refreshing application (/) commands.');
await rest.put(
Routes.applicationGuildCommands(YOUR_APPLICATION_ID, YOUR_GUILD_ID),
{ body: commands },
);
console.log('Successfully reloaded application (/) commands.');
} catch (error) {
console.error(error);
}
})();
我尝试了一切,但我似乎找不到问题出在哪里
您的问题是您没有处理按钮交互。 Discord 向客户端显示“应用程序没有响应”,因为 Discord 从未收到对其发送到您的机器人的按钮交互的响应。
interactionCreate
事件处理程序,如下所示:
client.on('interactionCreate', interaction => {
// Filter out other interaction types
if (!interaction.isButton()) return;
// Extract important properties
const { customId } = interaction;
// Perform an action based on customId
switch (customId) {
case 'join_queue':
// Add user to queue
break;
case 'leave_queue':
// Remove user from queue
break;
}
});
我强烈建议您对您处理的每种交互类型以及
messageCreate
使用此代码模式。我对 Discord.js 有太多的经验,所以如果你想了解更多,请留下评论。