我对此感到非常困惑,因为它们曾经工作过,但现在我什至没有收到任何错误消息。代码如下:
(欢迎嵌入)
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
位于 list of events 上这将需要订阅一个意图。
以下是您在定义客户端时需要实现的一种可能的修复方法:
const intents = ["GUILDS", "GUILD_MEMBERS"];
const bot = new Discord.Client({intents: intents, ws:{intents: intents}});
请注意,您必须使用 discord.js v12.x.x
才能使用意图,因此,如果您使用的是旧版本,则需要更新才能解决您的问题。
您还需要在其 Discord 开发人员页面上为您的机器人启用以下设置,因为公会成员加入/离开事件是特权意图:
相关资源:
List of intents and associated events
General info about intents
关于javascript - guildMemberAdd 和 guildMemberRemove 嵌入不再发送 (Discord.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65458029/