#node.js #discord #discord.js #bots
Вопрос:
это код, который у меня есть до сих пор:
setInterval(function () {
let myGuild = client.guilds.cache.get("0000000000000");
let memberNumber = myGuild.members.cache.filter(member => !member.user.bot).size;
}, 1000);
И, как вы, вероятно, можете сказать здесь, мне успешно удалось создать бота Discord для подсчета количества участников на моем сервере, боты не включены, и это проверяется каждую секунду в Discord.JS.
Что я не знаю, что делать, так это показывать этот номер в названии канала и постоянно обновлять его, как это делает бот Discord «ServerStats». (например, укажите название канала Участники: 1, и обновите номер, когда количество участников увеличится или уменьшится, у меня будет фотография примера). Не могли бы вы показать мне, как это сделать, и подробно объяснить, что вы сделали, но на уровне нуба, так как я очень новичок в кодировании?
Ответ №1:
Во-первых, может быть проще запустить его в событии guildMemberAdd вместо того, чтобы обновлять его каждую секунду, чтобы не спамить API.
Это, вероятно, больше то, что вы хотите:
client.on("guildMemberAdd", function(member){
let myGuild = member.guild
let myChannel = myGuild.channels.cache.get("CHANNEL ID HERE");
let memberNumber = myGuild.members.cache.filter(member => !member.user.bot).size;
myChannel.name = `Members: ${memberNumber}`
})
Комментарии:
1. Как часто это будет обновляться, если вы можете немного объяснить код, это просто каждый раз, когда добавляется новый участник?
2. Он обновляется каждый раз, когда участник присоединяется. Я также забыл упомянуть, что, вероятно, было бы лучше добавить тот же код в событие guildMemberRemove, чтобы оно обновлялось и при уходе участников
3. Я продолжаю получать эту ошибку: events.js:131 выдает новый тип ERR_INVALID_ARG_TYPE («прослушиватель», «Функция», прослушиватель); в этой строке: пусть MemberNumber = myGuild.members.cache. фильтр(участник => !участник.пользователь.бот).размер;
4. > события.js:131 Вы храните все свои события здесь? Почему бы им не разделиться?