【问题标题】:Discord.js weclome command [duplicate]Discord.js weclome 命令[重复]
【发布时间】:2020-12-15 01:32:33
【问题描述】:

我很困惑为什么这不起作用。控制台中没有错误。 当用户加入或离开时它不发送消息

    member.roles.add(member.guild.roles.cache.find(i => i.name === 'Member'))

    const welcomeEmbed = new Discord.MessageEmbed()

    welcomeEmbed.setColor('#5cf000')
    welcomeEmbed.setTitle('**' + member.user.username + '** is now Among Us other **' + member.guild.memberCount + '** people')
    welcomeEmbed.setImage('https://cdn.mos.cms.futurecdn.net/93GAa4wm3z4HbenzLbxWeQ-650-80.jpg.webp')

    member.guild.channels.cache.find(i => i.name === '〔????〕arrivals').send(welcomeEmbed)
})

client.on('guildMemberRemove', member => {
    const goodbyeEmbed = new Discord.MessageEmbed()

    goodbyeEmbed.setColor('#f00000')
    goodbyeEmbed.setTitle('**' + member.user.username + '** was not the impostor there are **' + member.guild.memberCount + '** left Among Us')
    goodbyeEmbed.setImage('https://gamewith-en.akamaized.net/article/thumbnail/rectangle/22183.png')

    member.guild.channels.cache.find(i => i.name === '〔????〕departures').send(goodbyeEmbed)
})
//Welcome & goodbye messages end\\
    
});


client.login(config.token);```

【问题讨论】:

标签: discord discord.js


【解决方案1】:

问题在于 Discord API 相对较新的 intents 功能。您需要订阅特定的意图才能可靠地接收关联事件。 guildMemberAddguildMemberRemove 位于 the list of events 上,可能需要订阅意图。

这是您在定义客户端的任何地方都需要实施的一种可能的修复方法:

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

您可能还需要在其 discord 开发者页面上为您的机器人启用以下设置,因为我认为 guildMemberAddguildMemberRemove 是特权意图的一部分:

相关资源:
General info about intents
List of events requiring intents
A similar question that I previously answered

【讨论】:

  • 我已经启用了服务器成员意图,所以这不是问题。我会试试你建议的其他方法
  • 您可以做的一件事是在您的guildMemberAddguildMemberRemove 处理程序的顶部添加一个console.log,这样您就可以告诉我们事件是否被触发了。如果是,意味着控制台日志已执行,那么问题不是意图。
猜你喜欢
  • 2021-03-08
  • 2021-11-16
  • 2021-02-21
  • 2022-01-07
  • 2021-11-10
  • 2021-05-06
  • 1970-01-01
  • 2021-08-07
  • 2020-12-04
相关资源
最近更新 更多