Discord.js 如何感知公会成员何时更改活动

Posted

技术标签:

【中文标题】Discord.js 如何感知公会成员何时更改活动【英文标题】:Discord.js How to sense when member of guild changes the activity 【发布时间】:2021-05-29 09:59:31 【问题描述】:

我想做一个不和谐的机器人来抓取公会成员的活动。

所以,我阅读了 discord.js 的文档。

但我不知道如何感知成员何时更改活动。

这种情况有例子吗?

【问题讨论】:

【参考方案1】:

使用Client#presenceUpdate 事件来跟踪状态更新。见https://discord.js.org/#/docs/main/stable/class/Client?scrollTo=e-presenceUpdate

<Client>.on("presenceUpdate", (oldPresence, newPresence) => 
    // do something
);

【讨论】:

哦,这就是这个问题的解决方案。谢谢。【参考方案2】:

我真的不知道你在寻找什么样的活动,但它是通过事件发射器处理的任何活动。例如,假设用户通过消息发送了一条命令,您可以像这样捕获它。

const  Client  = require('discord.js');
const client = new Client();

//event emitter
client.on('message', (message) => 
//do something

如果您正在使用 VsCode,智能感知可以让您轻松快速地了解您可以收听哪些类型的事件。但这里是所有事件的列表:

https://discord.js.org/#/docs/main/stable/class/Client?scrollTo=e-channelCreate

如果我正确理解您的问题,那么您正在寻找的事件将是

userUpdate

每当用户的详细信息(例如用户名)更改时发出。由 Discord 网关事件 USER_UPDATE、GUILD_MEMBER_UPDATE 和 PRESENCE_UPDATE 触发。

client.on('userUpdate', (oldUser, newUser) => 
// do something
);

也可以

presenceUpdate

每当公会成员的存在(例如状态、活动)发生变化时发出。

client.on('presenceUpdate', (oldPresence, newPresence) => 
// do something
);

【讨论】:

感谢您的评论,我有信心尝试使用客户端处理程序。

以上是关于Discord.js 如何感知公会成员何时更改活动的主要内容,如果未能解决你的问题,请参考以下文章

如何获取公会 Discord.js 中的成员列表

如何在 discord.js v12 中列出所有公会成员

Discord.js 让所有成员陷入公会问题

Discord.js - 发送消息的计数器,DM给公会的所有成员

如何自动更改不和谐机器人的昵称。 (Javascript)(Discord.js)

我的 discord.js 公会成员事件都没有发出,我的用户缓存基本上是空的,我的函数超时了?