Онлайн сервера discord в названии канала

Возникла такая проблема с ботов discord. Мне нужно, что бы бот выводил количество пользователей онлайн в названии канала. Имеется 2 кода. Первый Не работает вовсе. После запуска бота он показывает правильное значение, а потом это число только растет, не зависимо от реального числа пользователей онлайн.

async function test1() {
    bot.channels.find(c => c.id === "ID канала").setName(`В сети: ${bot.guilds.get('ID сервера').presences.size}`);
}; setInterval(test1, 30000)

Второй работает и обновляет информацию корректно, но показывает только тех пользователей, у которых горит зеленый статус. Желтых и красных он не считает.

async function test1() {
    bot.channels.find(c => c.id === "ID канала").setName(`В сети: ${bot.guilds.get('ID сервера').members.filter(m => ["online"].includes(m.presence.status)).size}`);
};setInterval(test1, 30000)

Подскажите правильный код, что бы учитывались не только пользователи со статусом "в сети", но и "не активен", "не беспокоить"

const channelId = 'ID канала';
function test1() {
	const channel = bot.channels.find(channel => channel.id === channelId);
	const allMembers = bot.guilds.get('ID сервера').members;
	const notOfflineMembers = allMembers.filter(member => member.status !== 'offline');
	channel.setName(`В сети: ${notOfflineMembers.length}`);
}
test1();
setInterval(() => test1(), 30000);
Ругается на

E:\BDOhelp\bot.js:67
        const allMembers = bot.guilds.get('674747448534630421').members;
                                                               ^

TypeError: Cannot read property 'members' of undefined
    at test1 (E:\BDOhelp\bot.js:67:57)
    at Object.<anonymous> (E:\BDOhelp\bot.js:73:1)

Итоговый вариант:

async function test1() {
    bot.channels.find(c => c.id === "ID канала").setName(`Участников: ${bot.guilds.get('ID сервера').members.size}`);
    bot.channels.find(c => c.id === "ID канала").setName(`В сети: ${bot.guilds.get('ID сервера').members.filter((member) => !member.user.bot && member.user.presence.status !== 'offline').size}`);
};
setInterval(test1, 30000);


Ответы (1 шт):

Автор решения: MoloF
// Подключаем библиотеку - npm install discord.js
const Discord = require('discord.js');

// Инициализируем клиент
const client = new Discord.Client();

// Подгружаем конфигурационный файл с токеном и ID сервера
const config = require('./config.json');

// Авторизуем клиент
client.login(config.token);

// Дожидаемся события ready для подлюкчения бота к серверам
client.on('ready', () => {
    setChannelName();
    setInterval(setChannelName, 30 * 1000);
});

// Асинхронная функция установки названия сервера
async function setChannelName() {
    // Находим наш сервер
    const channel = client.guilds.array().find((guild) => guild.id === config.channelID);

    // Проверяем найден ли сервер
    if (!channel) return;

    // Посылаем запрос для получения списка всех участников на сервере
    const responseMembers = await channel.fetchMembers();

    // Фильтруем коллекцию участников, не бот и не оффлайн.
    const notOfflineMembersLength = responseMembers.members.filter(
        (member) => !member.user.bot && member.user.presence.status !== 'offline'
    ).size;

    // Устанавливаем название сервера
    channel.setName(`В сети: ${notOfflineMembersLength}`);
}
→ Ссылка