Discord.js guildMemberUpdate 事件

Posted

技术标签:

【中文标题】Discord.js guildMemberUpdate 事件【英文标题】:Discord.js guildMemberUpdate event 【发布时间】:2021-04-30 20:01:45 【问题描述】:

我正在尝试使用 Discord.js 制作欢迎消息机器人,当成员有权访问时,欢迎消息将通过特定渠道中的 webhook 发送。

这就是我现在拥有的:

client.on("guildMemberUpdate", member => 

  const wc = new WebhookClient('webhook-id', 'webook-token');

  if (member.roles.cache.some(r => r.name === "test")) 
    wc.send(`Welcome <@$member.id> !`);
   else if (member.roles.cache.find(r => r.name === "Server Booster")) 
    wc.send(`Thank you for the boost <@$member.id> !`);
   else return;
);

我在添加角色时遇到guildMemberUpdate 未发出的问题,控制台日志显示它仅在删除角色时触发。

任何见解将不胜感激!

感谢阅读

【问题讨论】:

【参考方案1】:

使用oldMembernewMember 代替member 解决了问题

client.on("guildMemberUpdate", (oldMember, newMember) => 

  const wc = new WebhookClient("webhook-id', 'webook-token");

  if (oldMember.roles.cache.isze !== newMember.roles.cache.size) 
    if (!oldMember.roles.cache.has("role-id") && newMember.roles.cache.has("role-id")) 
        wc.send(`Welcome $newMember !`);
    
    if (!oldMember.roles.cache.has("boost-role-id") && newMember.roles.cache.has("boost-role-id")) 
        wc.send(`Thank you for the Nitro Boost $newMember !`);
    
  
);

【讨论】:

以上是关于Discord.js guildMemberUpdate 事件的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法让 guildMemberUpdate 事件区分角色更改和昵称更改,而不是检测其中任何一个?

无法安装 discord.js / 找不到模块 discord.js

我将如何使用两个不同版本的 discord.js | Discord.js 机器人

Discord 错误错误 Discord.js 中的无效令牌

Discord 仅识别 discord.js 中的“ping”命令

错误“const Discord = require(discord.js) ^ ReferenceError: discord is not defined”