• Чем require отличается от import? B почему require не совместим с import?

    Syjalo
    @Syjalo
    Представьте себе бота
    require — способ импортирования для CommonJS
    import — способ импортирования для ECMAScript

    С помощью import вы можете выбрать те данные, которые хотите импортировать, а с помощью require — нет. import также может импортировать данные асинхронно.

    Если вы хотите использовать node-fetch с CommonJS, то установите соответствующую версию npm i node-fetch@cjs
    Ответ написан
    Комментировать
  • Создание нескольких хендлеров сообщений?

    Syjalo
    @Syjalo
    Представьте себе бота
    Ошибка DiscordAPIError: Unknown interaction обычно происходит, когда срок действия токена интеракции истёк.

    Возможные причины
    • Первоначальный ответ не был дан в течении 3 секунд
    • Дополнительный ответ не был дан в течении 15 минут
    Ответ написан
    Комментировать
  • Voice Activity Tracking System discord.js?

    Syjalo
    @Syjalo
    Представьте себе бота
    Для начала убедитесь, что у вас есть интент GUILD_VOICE_STATES в опциях клиента.

    Теперь создайте Map для интервалов перед регистрацией ивента
    const intervals = new Map();
    Далее при подключении к каналу создавайте интервал и записывайте в только что созданный Map
    client.on("voiceStateUpdate", (oldState, newState) => {
      function addVoiceTime() {}
      if (!oldState.channelId && newState.channelId) {
        intervals.set(newState.id, setInterval(addVoiceTime, 5000));
      }
    });

    А при отключении отчищайте
    client.on("voiceStateUpdate", (oldState, newState) => {
      if (oldState.channelId && !newState.channelId) {
        clearInterval(intervals.get(newState.id));
        intervals.delete(newState.id);
      }
    });

    Результирующий код
    const intervals = new Map();
    client.on("voiceStateUpdate", (oldState, newState) => {
      function addVoiceTime() {}
      if (!oldState.channelId && newState.channelId) {
        intervals.set(newState.id, setInterval(addVoiceTime, 5000));
      }
      if (oldState.channelId && !newState.channelId) {
        clearInterval(intervals.get(newState.id));
        intervals.delete(newState.id);
      }
    });
    Ответ написан
    Комментировать
  • Как с помощью одной команды параллельно запустить более одного collector'а?

    Syjalo
    @Syjalo
    Представьте себе бота
    Коллекторы не мешают работе друг друга. Возможно у вас есть некоторые проблемы в обработчике команд.
    Ответ написан
    Комментировать