javascript - guildMemberAdd 和 guildMemberRemove 嵌入不再发送(Discord.js)
问题描述
我对此感到非常困惑,因为它们曾经工作过,但现在我什至没有收到任何错误消息。这是代码:
(欢迎嵌入)
bot.on("guildMemberAdd", (member) => {
let welcomembed = new Discord.MessageEmbed()
.setAuthor(`${member.user.tag} just joined!`, member.user.avatarURL())
.setDescription("Welcome to Angry Birds Economy Server! Don't forget to read the <#748333038294794241>! <:WelcomePigHappy:777683105863041054>")
.setColor("FF0000");
member.guild.channels.cache.get("channelid").send(welcomembed)
.catch((err) => console.log(err));
});
(再见嵌入)
bot.on("guildMemberRemove", (member) => {
let goodbyembed = new Discord.MessageEmbed()
.setAuthor(`${member.user.tag} just left!`, member.user.avatarURL())
.setDescription("Sad! Let's just hope that they enjoyed their stay <:WelcomePigSad:777683637830680586>")
.setColor("FF0000");
member.guild.channels.cache.get("samechannelid").send(goodbyembed)
.catch((err) => console.log(err));
});
它工作的屏幕截图:
我也有一个 guildCreate 和 guildRemove 在它下面,但我不知道这是否是原因。
解决方案
这个问题很可能是 Discord API 的相对较新的intents
功能。您需要订阅特定的意图才能可靠地接收关联事件。guildMemberAdd
并且guildMemberRemove
在需要订阅意图的事件列表中。
这是您在定义客户端的任何地方都需要实施的一种可能的修复方法:
const intents = ["GUILDS", "GUILD_MEMBERS"];
const bot = new Discord.Client({intents: intents, ws:{intents: intents}});
请注意,您必须使用discord.js v12.x.x
to 使用意图,因此如果您使用的是旧版本,则需要更新以解决您的问题。
您还需要在其不和谐开发者页面上为您的机器人启用以下设置,因为公会成员加入/离开事件是一种特权意图:
相关资源:
意图和相关事件列表 关于意图的
一般信息
推荐阅读
- python - 通过 sleep 模拟 django 视图的延迟
- spring-boot - 在本地环境中禁用 jms 侦听器
- r - 如何使用 OSX 命令行更改 R 中可用于数据存储设置的内存?
- c++ - 二维分拣卡算法
- php - 将目标空白添加到返回 $original_url
- twitter-bootstrap - Bootstrap 4如何根据数据属性值过滤列表
- c++11 - Dev-Cpp 5.11 是否支持 C++ 11?
- javascript - 如何在内容可编辑的 div 中编辑确切的元素?
- c++ - CMake check_function_exists 没有
- python - 使用 pip 在哪里放置用于安装的轮文件?