如何停止按钮收集器?

编程入门 行业动态 更新时间:2024-10-03 23:30:56

如何停止<a href=https://www.elefans.com/category/jswz/34/1771225.html style=按钮收集器?"/>

如何停止按钮收集器?

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

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(' 
          

更多推荐

如何停止按钮收集器?

本文发布于:2024-05-31 05:20:04,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:按钮   收集器

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!