应用程序没有响应

问题描述 投票:0回答:1

我一直在尝试编写一个排名不和谐的机器人,我设法编码了它,但是当我运行该机器人并尝试在我的不和谐服务器中设置它时,它给了我这个错误,说“应用程序没有响应”有人可以帮忙吗我发现了这一点,我什至不确定代码是否能完成这项工作,但这是我的第一个项目,我刚刚开始学习如何编码,所以如果有任何问题,请随时告诉我

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);
  }
})();

我尝试了一切,但我似乎找不到问题出在哪里

javascript discord bots
1个回答
0
投票

您的问题是您没有处理按钮交互。 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 有太多的经验,所以如果你想了解更多,请留下评论。

© www.soinside.com 2019 - 2024. All rights reserved.