Как сделать статус бота, на котором есть memberCount? - PullRequest
1 голос
/ 14 февраля 2020

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

if (Object.keys(this.config.presence).length !== 0) {
        this.user.setPresence({
            game: {
                name: this.config.presence.name,
                type: this.config.presence.type
            },
            status: "online"
        }).catch(console.error);
    }

Ответы [ 2 ]

1 голос
/ 14 февраля 2020

Сначала вам нужно установить команду интервала для обновления элемента.

Вам не нужно использовать this.user для этой операции. Прежний метод ответа будет отображать только кэшированных пользователей, так что это неправильный путь, потому что при запуске бота у вас не будет пользователей в этой коллекции.

Если вам нужно отобразить участников на вашем собственном сервере Вы можете сделать так:

  1. Получить свою гильдию по ID
  2. Получить свойство guild.memberCount
  3. Обновлять его каждые 5 минут
client.on('ready', () => {
        setInterval(() => {
          targetGuild = client.guilds.get('GUILD ID HERE')
          if(targetGuild) {
              client.user.setPresence({ game: { name: targetGuild.memberCount + ' people verifying!', type: 'WATCHING' }, status: 'online'  })
                    .then(console.log)
                    .catch(console.error);
          }
    }, 1000 * 60 * 5);

});

После запуска бота это обновится через 5 минут.

Для теста вы можете изменить }, 1000 * 60 * 5) на }, 1000);

0 голосов
/ 14 февраля 2020

Добро пожаловать в StackOverflow!

client.users.size должен вернуть вам всех пользователей из всех гильдий, в которые входит бот!

if (Object.keys(this.config.presence).length !== 0) {
    this.user.setPresence({
            game: {
                name: client.users.size + ' people verifying!',
                type: this.config.presence.type
            },
            status: "online"
        }).catch(console.error);
    }

Вы также можете найти это на дискорд. js документация.

...