@firenot

Как остановить ответ бота?

В дискорде создается кнопка, по нажатию в период с 08:00 до 16:59 выдается ответ, что в данный момент магазин работает, дополнительно ответ, что с 17:00 до 23:59 он не работает. Жмешь на кнопку и ответ верный в промежутках времени, но он бесконечно повторяется. Можно ли его как-то остановить? С другими кнопками, написанными так же проблем нет. Только при использовании node-cron.
const msgss = new ActionRowBuilder()
            .addComponents(
               new ButtonBuilder()
                  .setCustomId('Successs')
                  .setLabel('График работы')
                  .setStyle(ButtonStyle.Success),
            )

         await interaction.guild.channels.cache.get(`1095424849131678493`).send({ components: [msgss] }),

            collector.on('collect', async i => {
               if (i.customId === 'Successs') {
                  await i.guild.channels.cache.get(`1095424849131678493`).send({ content: '**В данный момент:**', });
                  cron.schedule('0-59 0-59 8-16 * * 1', () => {
                     i.guild.channels.cache.get(`1095424849131678493`).send({ embeds: [on] })
                  });
                  cron.schedule('0-59 0-59 17-23 * * 1', () => {
                     i.guild.channels.cache.get(`1095424849131678493`).send({ embeds: [off] })
                  });
               }
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ответы на вопрос 1
Скорее всего проблему вызывает не верное взаимодействие с библиотекой cron, предлагаю реализовать более простой вариант работающий на unix timestamp, или еще проще Date.getHour(). Если нужно получать время именно из таблицы, то проще сделать функцию, которая переводит значение из таблицы в timestamp.

Еще вариантом можно вынести send вниз под взаимодействие с cron и отправлять одно и тоже embed, но присваивать ему разные значения во взаимодействие с сron, так-же Discord.js рекомендует использовать await перед вызовом метода .send()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы