Discord.js Билетная система | Проблема со спамом билетов

#javascript #node.js #discord #discord.js #ticket-system

#JavaScript #node.js #Discord #discord.js #Система тикетов

Вопрос:

Я пытаюсь создать систему тикетов, но есть проблема. Я хочу сделать это, когда кто-то открывает тикет, подождите, пока тикет не закроется, а затем дайте им снова отреагировать.

Вот мой код:

 const Discord = require('discord.js');
const client = new Discord.Client({
 partials: ['MESSAGE', 'USER', 'REACTION'],
});
const enmap = require('enmap');
const { token, prefix } = require('./config.json');

const settings = new enmap({
 name: 'settings',
 autoFetch: true,
 cloneLevel: 'deep',
 fetchAll: true,
});

client.on('ready', () => {
 console.log('Ticket System');
 client.user.setActivity(`Community`, { type: 'WATCHING' });
});

client.on('message', async (message) => {
 if (message.author.bot) return;
 if (message.content.indexOf(prefix) !== 0) return;

 const args = message.content
  .slice(prefix.length)
  .trim()
  .split(/  /g);
 const command = args.shift().toLowerCase();

 if (command == 'ticket-setup') {


  if (message.author == '409327435188928526') {
   let channel = message.mentions.channels.first();
   if (!channel) return message.reply('Usage: `!ticket-setup`');

   let sent = await channel.send(
    new Discord.MessageEmbed()
     .setTitle('Ticket System')
     .setDescription(
      'If you want to buy something from us,n react with‏‏‎ ‎‏‏‎ ‎ 🎫 ‏‏‎ ‎‏‏‎ ‎to open a ticket'
     )
     .setFooter(
      'Community',
      ''
     )
     .setColor('00f8ff')
   );

   sent.react('🎫');
   settings.set(`${message.guild.id}-ticket`, sent.id);

   message.channel.send('Ticket System Setup Done!');
  }
 }

 if (command == 'close') {
  if (!message.channel.name.includes('ticket-'))
   return message.channel.send('You cannot use that here!');
  message.channel.delete();
 }
});

client.on('messageReactionAdd', async (reaction, user) => {
 if (user.partial) await user.fetch();
 if (reaction.partial) await reaction.fetch();
 if (reaction.message.partial) await reaction.message.fetch();

 if (user.bot) return;

 let ticketid = await settings.get(`${reaction.message.guild.id}-ticket`);

 if (!ticketid) return;

 if (reaction.message.id == ticketid amp;amp; reaction.emoji.name == '🎫') {
  reaction.users.remove(user);

  reaction.message.guild.channels
   .create(`ticket-${user.username}`, {
    permissionOverwrites: [
     {
      id: user.id,
      allow: ['SEND_MESSAGES', 'VIEW_CHANNEL'],
     },
     {
      id: reaction.message.guild.roles.everyone,
      deny: ['VIEW_CHANNEL'],
     },
    ],
    type: 'text',
   })
   .then(async (channel) => {
    channel.send(
     `<@${user.id}> Welcome!`,
     new Discord.MessageEmbed()
      .setDescription(
       'Support will be with you shortly.n n !close to close the ticket.'
      )
      .setColor('00f8ff')
      .setFooter(
       'Community',
       ''
      )
      .setTimestamp()
    );
   });
 }
});

client.login(token);
  

Кроме того, вместо того, чтобы использовать команду для закрытия тикета, я хочу, чтобы бот добавил ответ «да» и «нет» на сообщение и спросил меня, хочу ли я его закрыть.

Комментарии:

1. «Я хочу что-то сделать» — это не проблема. Проблема в том, что «я пытался что-то сделать, и это не сработало». Мы не можем написать код для вас; StackOverflow — это сайт вопросов и ответов.

2. Вам нужно будет сохранить пользователей, у которых в настоящее время открыт тикет, в переменной (или базе данных)

3. как я могу сделать это Giuliopime?