guildMemberAdd 和 guildMemberRemove 嵌入不再发送 (Discord.js)

时间:2020-12-26 15:42:52

标签: javascript node.js discord 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));
});

它工作的截图: enter image description here

我在它下面也有一个 guildCreate 和 guildRemove,但我不知道是不是这个原因。

1 个答案:

答案 0 :(得分:0)

问题很可能是 Discord API 相对较新的 intents 功能。您需要订阅特定的意图才能可靠地接收附属事件。 guildMemberAddguildMemberRemove 位于需要订阅意图的 vuex 上。

以下是您在定义客户端的任何地方都需要实施的一种可能的解决方法:

const intents = ["GUILDS", "GUILD_MEMBERS"];
const bot = new Discord.Client({intents: intents, ws:{intents: intents}});

请注意,您必须使用 discord.js v12.x.x 才能使用意图,因此如果您使用的是旧版本,则需要更新以解决您的问题。

您还需要在其不和谐开发者页面上为您的机器人启用以下设置,因为公会成员加入/离开事件是一个特权意图: list of events

相关资源:
enter image description here
List of intents and associated events