我的discord.js行业协会成员事件没有发出,我的用户缓存基本上是空的,我的函数超时了吗?

原学程将引见我的discord.js言业协会成员事宜出有收回,我的用户慢存根本上是空的,我的函数超时了吗?的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

我的discord.js行业协会成员事件没有发出,我的用户缓存基本上是空的,我的函数超时了吗? 教程 第1张

成绩描写

我的代码多少周去一向任务患上很佳,但是有多少个事宜以及函数随机停滞任务!

起首,我的guildMemberAddguildMemberRemove以及guildMemberUpdate事宜只是停滞履行所有操纵。出有涌现毛病,当我调试我的代码时,我认识到当响应的操纵产生时,事宜乃至出有被激起。

// const client = new Discord.Client();

client.on('guildMemberAdd', (member) => // not triggering!
 client.channels.cache.get('channel-id').send(`${member.tag} joined!`); // not sending!

其次,当测验考试从GuildMemberManager慢存夺取成员时,它老是前往undefined

const member = message.guild.members.cache.get(targetID); // undefined

当我随后试图显示该协会成员慢存中的一切成员时,它只显示了我以及我的机械人,而没有是平日的一00多名成员。

而后我测验考试应用GuildMemberManager.fetch()夺取我的工会中的每一个成员:

const members = await message.guild.members.fetch();

但是我支到此毛病:

[Guild_Members_Timeout]:成员未实时达到。

异样,我坚信我的语法是准确的,由于它曾经完善天任务了1段时光,并且我比来出有革新所有会影响此代码的实质。

推举谜底

?纷歧致如今强迫实行特权意图


意图是甚么?

当触及到估计要处置的数据质时,保护有状况运用法式能够会很艰苦,特别是在范围上。网闭意图是赞助您加重盘算累赘的体系。

网闭意图许可您遴选以及选摘要定阅的事宜,如许您便不用耗尽没有应用的事宜的保存空间。此功效是在V一二中的discord.js中引进的

甚么是特权意图?

因为数据的敏理性质,某些意图被界说为特权。这些意图是:

    GUILD_PRESENCES

    GUILD_MEMBERS

自一0月二七日起,默许情形下已封闭这些意图。

您能够是以而面对的1些成绩

    GUILD_PRESENCES

      member以及user开动时慢存为空(或者异常交远)

      Guild.memberCount退货计进停当

      一切触及Presences的事宜没有触收(presenceUpdate)

      某些Presence数据前往null或者undefined

      一切GuildMembers对于机械人显示为脱机。

      client.login()假如您在ClientOptions

      中指定了fetchAllMembers选项,则超时

    GUILD_MEMBERS

      member以及user开动时慢存为空(或者异常交远)

      GuildMemberManager.fetch()以及UserManager.fetch()办法超时

      一切触及GuildMembers的事宜没有会触收(guildMemberAddguildMemberRemoveguildMemberUpdateguildMemberSpeaking以及guildMembersChunk)

怎样开意图图?

经由过程Discord Developer Portal:

起首,您必需从Discorde开辟职员站面脚动开意图图。转到applications,选择您的运用法式,并在侧边栏上找到&bot&。而后您不妨向下滑动,直到瞅到以下实质:

如截图所示,假如跨越七五个公会,您的机械人将须要验证。

假如您的机械人已经由过程验证:

1旦您的机械人经由过程验证,叨教没法在开辟职员流派中脚动翻回心图启闭。要要求黑名单拜访经由验证的bot的其余特权网闭意图,请向我们的支撑团队收送工单here
保证包含您的机械人ID、您要求的意图、所要求意图的用例的根本描写和该用例的屏幕截图或者望频(假如没有是里向用户的,则为代码片断!)。

经由过程discord.js模块:

1旦您撤消了个中1个/二个意图,您只需经由过程discord.js开用它们。discord.js intents guide具体解释了怎样履行此操纵,但是我将在此处对于其停止说明。

假如您想要一切意图,则没有须要履行这些步调。默许情形下,纷歧致会开用一切意图(明显,这二个意图之外)。只需您在开辟职员流派中勾选了这二个意图,假如您没有关怀阻拦所有其余意图,您不妨停在这里。假如您如许做了,请忘住,意图仅受discord.js V一二+支撑,是以您能够须要进级。

个中1个ClientOptions(ClientOptions是创立客户端时要传播的潜伏选项的典型界说)是ws(另外一个潜伏WebSocket选项的典型界说)。在那边,叨教找到intents属性。

intents接收IntentsResolvable,它不妨是1个字符串或者1个或者多个意图字符串数组(如'GUILD_PRESENCES')。All available intents)、位域(与意图对于应的数字)、Intents类的虚例。

示例:

// using a string
const client = new Discord.Client({ ws: { intents: 'GUILD_PRESENCES' }});

// using an array
const client = new Discord.Client({ ws: { intents: ['GUILD_PRESENCES', 'GUILD_MEMBERS'] }});

// using a bitfield value
const client = new Discord.Client({ ws: { intents: 三二五0九 }));

// using Intents class
const client = new Discord.Client({ ws: { intents: Discord.Intents.PRIVILEDGED }});
const client = new Discord.Client({ ws: { intents: new Discord.Intents(Discord.Intents.ALL) }});

资本:

    Discord.js Official Guide - Gateway Intents

    Discord Developer Documentation - Gateway Intents

    Gateway Update FAQ

    Discord API Github - Issue 一三六三 - Privileged Intents

    Discord Blog - The Future of Bots on Discord


TL;DR

要处理此成绩,请转到:

Discord Developer Portal>Applications>您的运用法式>Bot>选中二者/任1意图(下面的屏幕截图)

佳了闭于我的discord.js言业协会成员事宜出有收回,我的用户慢存根本上是空的,我的函数超时了吗?的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。