Ответы пользователя по тегу JavaScript
  • Как вывести информацию сайта в канал дискорд (cheerio)?

    Syjalo
    @Syjalo
    Представьте себе бота
    Одно из следующих
    • Клиент на готов к работе. Дождитесь ивента ready.
    • Нет интента Guilds в опциях клиента
    • Указан id несуществующего канала
    • Кэш был модифицирован
    Ответ написан
    Комментировать
  • Перестал работать бот после обновления DS, почему?

    Syjalo
    @Syjalo
    Представьте себе бота
    3 недели назад Discord анонсировали изменение API, которое затронуло исходный код discord.js. Вчера было выпущено в публичный API. Обновитесь до последней версии.

    v14: npm i discord.js@latest
    v13: npm i discord.js@v13-lts
    Ответ написан
    1 комментарий
  • Методы keys(), values(), entries() находятся в Symbol.iterator у итерируемых объектов?

    Syjalo
    @Syjalo
    Представьте себе бота
    keys(), values() и entries() — методы Map, Set, Array и Object, которые возвращают итератор или массив, у которого есть метод по ключу Symbol.iterator.

    Symbol.iterator — символ, который выступает в качестве ключа (имени) для метода, который возвращает итератор.
    Ответ написан
    1 комментарий
  • 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);
      }
    });
    Ответ написан
    Комментировать