#node.js #discord.js
#node.js #discord.js
Вопрос:
В Discord.js версию 12 я использую message.channel.members.random().toString()
для получения случайного имени пользователя в текущем канале. Но я хочу это только для участников, которые имеют статус «Онлайн» в текущем канале. Не участники со статусом присутствия dnd, бездействующие или автономные.
Всех пользователей, которые находятся в Сети, можно запросить следующим образом для всего сервера (чего я не хочу) и выбрать случайное имя пользователя для упоминания. message.guild.members.cache.filter(member => member.presence.status == 'online').random().toString()
message.channel.members не имеют информации о статусе присутствия (онлайн, оффлайн, dnd, idle).
[{«guildID»:»12…89″,»joinedTimestamp»:12…89,»lastMessageChannelID»:null,»premiumSinceTimestamp»:null,»deleted»:false,»nickname»:null,»userID»:»12…89″,»displayName»:»Nickname»}]
Как я могу получить имя (упоминание) случайно выбранного участника со статусом присутствия «онлайн» в текущем канале?
Источник https://discordjs.guide /
Ответ №1:
Вы можете сделать это, отфильтровав статус пользователей, которые могут просматривать канал.
message.channel.members.filter(member => member.presence.status == 'online').random()
channel.members
имеет тип Collection<Snowflake, GuildMember>
, поэтому вы можете получить доступ к данным о присутствии внутри GuildMember
.
Комментарии:
1. Как мне не стыдно, я попробовал это с помощью «cache» message.channel.members.cache. фильтр (..) и сбой. Решение было так близко. 😉