Нет доступа к user.presence.activities в discord.js

Я кодирую бота discord.js и пытаюсь узнать активность пользователя (игры, в которые он играет, спотифицируйте вещи и т. Д.).

Когда я смотрю документацию, я вижу класс Presence и свойство .activities, которые должны возвращать массив действий пользователя.

Однако при запуске кода я получаю сообщение Не удается отправить пустой файл при запущенном действии.

Вот мой реальный код:

let member = message.users.mention.first || message.author;

message.channel.send(member.presence.activities);

person Ituriel    schedule 22.01.2021    source источник
comment
Вы пытались console.log(member.presence.activities) увидеть, действительно ли этот участник занимается активностью?   -  person Worthy Alpaca    schedule 22.01.2021
comment
да. он возвращает пустой массив, даже если у меня есть активность, отображаемая в Discord ...   -  person Ituriel    schedule 22.01.2021
comment
это похоже на проблему с привилегированными намерениями. Посмотрите, если это поможет вам   -  person Worthy Alpaca    schedule 23.01.2021


Ответы (1)


Вероятно, что у пользователя нет активности, поэтому member.presence.activities возвращает ноль, что приводит к ошибке empty message.

Уловить это просто:

let member = message.users.mention.first || message.author;

let memberActivies = member.presence.activities;
if (!memberActivities) return message.channel.send(':x: User has no activity set'); 

message.channel.send(memberActivities); //sends the activities

Кроме того, если параметр activities является массивом, наверняка вам придется выбирать из массива, используя, например, обычный синтаксис arr[0]?

person Joe Moore    schedule 22.01.2021
comment
Я уже пробовал console.log (memberActivities), но он не возвращает «у пользователя нет активности» и по-прежнему дает «невозможно отправить пустое сообщение». Я действительно не знаю, что случилось. - person Ituriel; 22.01.2021