Discord.js 存在活动状态和名称存在问题

Posted

技术标签:

【中文标题】Discord.js 存在活动状态和名称存在问题【英文标题】:Having issues with Discord.js Presence Activity state and name 【发布时间】:2021-03-03 19:33:07 【问题描述】:

所以我正在制作一个机器人,我想为“userinfo”命令制作一个我很少或几乎从未在机器人上看到的很酷的小功能。

我目前卡在活动/游戏信息上。我已经为用户的所有活动制作了地图,以防用户有多个活动。

例如: 用户同时拥有自定义状态并且正在收听 Spotify 或玩游戏。我设法制作了一张地图,上面写着用户正在玩的游戏,我想让自定义状态也显示出来。不幸的是,对于自定义状态,它只写“自定义状态”而不是用户状态包含的文本。

这个想法是让机器人输入用户在他的状态下的文本,例如“今天无聊”状态。

我进行了一些研究,有人评论说活动的“.state”是状态中的文本,而“.name”是字面意义上的“自定义状态”。所以我尝试同时使用 .state 和 .name 但不幸的是它返回了一个未定义的值。

此外,“.name”的工作方式应该与现在没有它的工作方式相同。

例子:

user.presence.activities; 返回活动名称(“Spotify”、“游戏名称”、“自定义状态”)

user.presence.activities.name; 返回 undefined 和 if 应该返回活动的名称,如文档和问题线程中所述。 (“Spotify、“游戏名称”、自定义状态”)

user.presence.activities.state 返回 undefined 并且提到应该返回 Activity 的状态(“Spotify Song Name”、“Name of the game”、“Text in custom statu”)

问题线程:https://github.com/discordjs/discord.js/issues/3552

文档:https://discord.js.org/#/docs/main/master/class/Presence?scrollTo=activity(已编辑)

代码:

    日志undefined
var aktivnost = user.presence.activities.state;

console.log(`$aktivnost`);
    日志undefined
var aktivnost = user.presence.activities.name;

console.log(`$aktivnost`);
    日志,例如 SpotifyDead by DaylightCustom Status - 应该如此
var aktivnost = user.presence.activities;

console.log(`$aktivnost`);
    日志,例如 SpotifyCustom Status - 应该如此
var aktivnost = user.presence.activities.map(a => `<:arrow:779290699236900864> $a`).join(`\n`)

console.log(`$aktivnost`);

问题: 如何让它写出自定义状态的文本。显然,从文档和问题线程中,它应该给我文本,但它给了我未定义的内容。如果 .name 和 .state 被删除,我没有找到任何信息,因为它们存在于 v12 文档中。

提前致谢,卢克。

【问题讨论】:

【参考方案1】:

游戏

为了与 API 保持一致,移除了 Game 类以支持 Activity 类。它也是一个多个活动的数组,因为一个用户可以有多个。

根据 v12 的文档,它是一个数组,您需要在活动上运行 foreach 或获取第一个。

一个foreach:

user.presence.activities.forEach((activity) => 
    console.log(activity.name)
    console.log(activity.state)

使用第一个

console.log(user.presence.activities[0].name)
console.log(user.presence.activities[0].state)

希望这有帮助:)

【讨论】:

【参考方案2】:

据我所知,.state.name 都在工作。 实际上,我试过了,它适用于

console.log(message.member.user.presence.activities[0].state)

【讨论】:

以上是关于Discord.js 存在活动状态和名称存在问题的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB / Discord.js - 检查集合的存在

Discord JS(机器人存在)

Discord.js 变量在定义时不存在?

Discord.js 不检查参数是不是存在

Discord 返回指定用户的活动状态

Node.js、discord.js 和 MySQL - ER_NO_SUCH_TABLE:表 'NAME' 不存在