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

标签 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 ,但我不知道这是否是原因。

最佳答案

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

以下是您在定义客户端时需要实现的一种可能的修复方法:

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

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

您还需要在其 Discord 开发人员页面上为您的机器人启用以下设置,因为公会成员加入/离开事件是特权意图: enter image description here

相关资源:
List of intents and associated events
General info about intents

关于javascript - guildMemberAdd 和 guildMemberRemove 嵌入不再发送 (Discord.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65458029/

相关文章:

javascript - 是否可以制作 p :dataTable with a column that contains a stopwatch using javascript?

javascript - Node.js 全局变量

javascript - 按顺序一个接一个地加载图像。

javascript - 如何将包含 mongoose 函数的方法与控制流框架(例如 Async 或 Step)一起使用

python - Discord py 向 channel 发送消息

c# - 更改 DropDownList 项取决于另一个 DropDownList(OnChange 事件)ASP.NET 网页中的值

node.js - 混淆 SSL 与 Node 和使用 cURL

javascript - Socket.IO - 如何向房间里的每个人发出事件,包括发件人?

node.js - Discord.js - guildMemberUpdate 不会被调用,除非机器人用户发生更改

javascript - 在所有有没有 GuildID (Discord.js v12) 的机器人的服务器中使用斜杠命令