最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何停止按钮收集器?

网站源码admin35浏览0评论

如何停止按钮收集器?

如何停止按钮收集器?

问题是我需要处理按钮按下,这样如果我按下一个新按钮,前一个按钮的收集器就会停止,这样就不会出现未知交互或交互已经确认的错误:

DiscordAPIError[10062]: Unknown interaction
 at handleErrors (C:\Users\user\Desktop\Discord Bot Version 1.0.0 (Beta)\node_modules\@discordjs\rest\dist\index.js:640:13)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async BurstHandler.runRequest (C:\Users\user\Desktop\Discord Bot Version 1.0.0 (Beta)\node_modules\@discordjs\rest\dist\index.js:736:23)
    at async REST.request (C:\Users\user\Desktop\Discord Bot Version 1.0.0 (Beta)\node_modules\@discordjs\rest\dist\index.js:1387:22)
    at async ButtonInteraction.update (C:\Users\user\Desktop\Discord Bot Version 1.0.0 (Beta)\node_modules\discord.js\src\structures\interfaces\InteractionResponses.js:233:5)
    at async InteractionCollector.<anonymous> (C:\Users\user\Desktop\Discord Bot Version 1.0.0 (Beta)\buttons\moderates\listRaiting.js:51:7) {
  requestBody: { files: [], json: { type: 7, data: [Object] } },
  rawError: { message: 'Unknown interaction', code: 10062 },
  code: 10062,
  status: 404,
  method: 'POST',
  url: ''

我的代码:

const { SlashCommandBuilder } = require('@discordjs/builders');
const {
  ActionRowBuilder,
  ButtonBuilder,
  EmbedBuilder,
  ButtonStyle,
} = require('discord.js');

const muteButton = require('../../buttons/moderates/muteButton.js');
const unMuteButton = require('../../buttons/moderates/unMuteButton.js');
const warnButton = require('../../buttons/moderates/warnButton.js');
const unWarnButton = require('../../buttons/moderates/unWarnButton.js');
const listRaitingButton = require('../../buttons/moderates/listRaiting.js');
const infractionButton = require('../../buttons/moderates/infractionButton.js');
const raitingButton = require('../../buttons/moderates/raitingButton.js');
const unRaitingButton = require('../../buttons/moderates/unraitingButton.js');
const unraitingButton = require('../../buttons/moderates/unraitingButton.js');

const collectors = {};

async function createCollector(interaction, customId, executeFunction) {
  const filter = i => i.user.id === interaction.user.id && i.isButton() && i.customId === customId;

  const collector = interaction.channel.createMessageComponentCollector({ filter, time: 30000 });

  collector.on('collect', async i => {
    executeFunction(i);
  });

  collector.on('end', collected => {
    console.log(`Collector для кнопки ${customId} завершен. Собрано ${collected.size} элементов.`);
  });
}    
  
  module.exports = {
    data: new SlashCommandBuilder()
      .setName('moderate')
      .setDescription('Предоставляет модераторскую панель с действиями, такими как мут, размут, предупреждение и т.д.'),
    async execute(interaction) {
      const member = interaction.member;
      const moderatorRole = member.roles.cache.find(r => r.name === 'Модератор');
      if (!moderatorRole) {
          return interaction.reply({ content: 'Вы не являетесь Модератором, у вас нет прав для использования этой команды.', ephemeral: true });
      }
  
      for (let collector in collectors) {
          collectors[collector].stop();
      }
  
      const filter = i => i.user.id === interaction.user.id;
      const collector = interaction.channel.createMessageComponentCollector({ filter, time: 30000 });
    
      const row = new ActionRowBuilder()
        .addComponents(
          new ButtonBuilder()
            .setCustomId('mute')
            .setEmoji('

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论