Discord Api 必须为客户端提供有效意图 [重复]

Posted

技术标签:

【中文标题】Discord Api 必须为客户端提供有效意图 [重复]【英文标题】:Discord Api Valid intents must be provided for the Client [duplicate] 【发布时间】:2021-10-12 12:29:42 【问题描述】:

我正在编写一个不和谐的机器人。当我尝试运行节点时。在 cmd 我得到这个:

C:\Users\utente\Desktop\bouncerBot\node_modules\discord.js\src\client\Client.js:544 抛出新的 TypeError('CLIENT_MISSING_INTENTS'); ^

TypeError [CLIENT_MISSING_INTENTS]:必须为 客户端。 在 Client._validateOptions (C:\Users\utente\Desktop\bouncerBot\node_modules\←[4mdiscord.js←[24m\src\client\Client.js:544:13) 在新客户端 (C:\Users\utente\Desktop\bouncerBot\node_modules\←[4mdiscord.js←[24m\src\client\Client.js:73:10) 在对象。 (C:\Users\utente\Desktop\bouncerBot\main.js:2:16) ←[90m at Module._compile (internal/modules/cjs/loader.js:1072:14)←[39m ←[90m 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)←[39m ←[90m at Module.load (内部/模块/cjs/loader.js:937:32)←[39m ←[90m at Function.Module._load (internal/modules/cjs/loader.js:778:12)←[39m ←[90m at Function.executeUserEntryPoint [as runMain] (内部/模块/run_main.js:76:12)←[39m ←[90m at 内部/main/run_main_module.js:17:47←[39m [←[32mSymbol(代码)←[39m]: ←[32m'CLIENT_MISSING_INTENTS'←[39m

C:\Users\utente\Desktop\bouncerBot>节点。 C:\Users\utente\Desktop\bouncerBot\node_modules\discord.js\src\client\Client.js:544 抛出新的 TypeError('CLIENT_MISSING_INTENTS'); ^

TypeError [CLIENT_MISSING_INTENTS]:必须为 客户端。 在 Client._validateOptions (C:\Users\utente\Desktop\bouncerBot\node_modules\←[4mdiscord.js←[24m\src\client\Client.js:544:13) 在新客户端 (C:\Users\utente\Desktop\bouncerBot\node_modules\←[4mdiscord.js←[24m\src\client\Client.js:73:10) 在对象。 (C:\Users\utente\Desktop\bouncerBot\main.js:3:16) ←[90m at Module._compile (internal/modules/cjs/loader.js:1072:14)←[39m ←[90m 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)←[39m ←[90m at Module.load (内部/模块/cjs/loader.js:937:32)←[39m ←[90m at Function.Module._load (internal/modules/cjs/loader.js:778:12)←[39m ←[90m at Function.executeUserEntryPoint [as runMain] (内部/模块/run_main.js:76:12)←[39m ←[90m at 内部/main/run_main_module.js:17:47←[39m [←[32mSymbol(代码)←[39m]: ←[32m'CLIENT_MISSING_INTENTS'←[39m

我试图在网上搜索解决方案,但一无所获。我还在机器人设置中激活了以下药水,但没有任何变化:

这是我的代码,即使它不是错误的原因:

Main.js:

   const Discord = require('discord.js');
    const fs = require('fs');
    const client = new Discord.Client();
    
    let rawdata = fs.readFileSync('config.json');
    let config = JSON.parse(rawdata);
    
    const TOKEN = config.botToken
    const prefix = config.prefix
    
    client.login(TOKEN)
    client.on('message', message => 
        if (!message.content.startsWith(prefix) || message.author.bot) return;
        const args = message.content.slice(prefix.lenght).split(/ +/)
        const command = args[1].toLowerCase()
        console.log(args)
        //Command test!
    )
    
    client.once('ready', () => 
        console.log("Discord bot online")
    
    );

config.json:


    "botToken":"",
    "prefix":"!pgc"

编辑:

我尝试更新代码如下:

    const Discord = require('discord.js');
    const fs = require('fs');
    
    const  Client, Intents  = require('discord.js');
    
    const client = new Client( intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] );
    
    let rawdata = fs.readFileSync('config.json');
    let config = JSON.parse(rawdata);
    
    const TOKEN = config.botToken
    const prefix = config.prefix
    
    
    client.on('message', message => 
        if (!message.content.startsWith(prefix) || message.author.bot) return;
        const args = message.content.slice(prefix.lenght).split(/ +/)
        const command = args[1].toLowerCase()
        console.log(args)
        //Command test!
    )
    
    client.once('ready', () => 
        console.log("Discord bot online")
    
    );
client.login(TOKEN)

但我仍然收到错误:

(node:12216) UnhandledPromiseRejectionWarning: ReferenceError: 未定义 AbortController 在 RequestHandler.execute (C:\Users\utente\Desktop\bouncerBot\node_modules\discord.js\src\rest\RequestHandler.js:172:15) 在 RequestHandler.execute (C:\Users\utente\Desktop\bouncerBot\node_modules\discord.js\src\rest\RequestHandler.js:176:19) 在 RequestHandler.push (C:\Users\utente\Desktop\bouncerBot\node_modules\discord.js\src\rest\RequestHandler.js:50:25) 在异步 WebSocketManager.connect (C:\Users\utente\Desktop\bouncerBot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:128:9) 在异步 Client.login (C:\Users\utente\Desktop\bouncerBot\node_modules\discord.js\src\client\Client.js:245:7) (使用node --trace-warnings ... 显示警告的位置 创建)(节点:12216)UnhandledPromiseRejectionWarning:未处理 承诺拒绝。此错误源于抛出内部 一个没有 catch 块的异步函数,或者通过拒绝一个承诺 .catch() 没有处理。终止节点进程 未处理的承诺拒绝,使用 CLI 标志 --unhandled-rejections=strict(见 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。 (拒绝 ID:2)(节点:12216)[DEP0018] DeprecationWarning:未处理 不推荐使用承诺拒绝。在未来,承诺拒绝 未处理的将终止 Node.js 进程 非零退出代码。

【问题讨论】:

我之前遇到过这个错误,那是因为我没有将我的 Node.js 升级到所需的版本 16。你运行的是什么版本 (node -v)? @Variable 我有 v14.17.4 那么你需要将你的 Node.js 版本升级到版本 16,如documentation中所述 一般只需要报错的前几行,其余的可以丢弃 【参考方案1】:

首先,永远不要显示你的机器人的令牌,或者稍后尝试更改它。

其次:

尝试使用它。由于新更新了 discord.js,如 ^13.0 版,您必须指定客户端意图:

const  Client, Intents  = require('discord.js');

const client = new Client( intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] );

显然,将client.login(TOKEN) 放在最底部。

有关新版本 discord.js 所需的更多更新,请单击 here

【讨论】:

我按照你说的尝试过,但总是出错(在编辑中查看我的问题的底部) 两种解决方案:要定义 AbortController,现在抛出任何类型的错误,您应该将 nodejs 版本升级到 v16.6 或尝试使用旧版本的 discord.js,如 11.6.4 或 12.0。和平男孩,我希望它对我的问题有所帮助,它适用于升级节点版本 如何将节点 js 更新到该版本?因为我知道最新版本是14.17.4 点击here,这就是你现在应该做的,还有一个安装程序。也在官方网站上:click 好的,现在它正在工作!谢谢

以上是关于Discord Api 必须为客户端提供有效意图 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的TypeError [CLIENT_MISSING_INTENTS]:必须为客户端提供有效的意图[重复]

Discord Bot 不会登录到服务器

为 discord.py 机器人启用意图

Twitch API 集成到 Discord Bot - 更有效的方式?

Discord bot 嵌入消息错误 长度必须为 2048 或更少

Discord bot 无法访问 Google Sheets 获取错误请求缺少有效的 API 密钥