Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在没有硬编码的情况下使用多个discord bot帐户登录?_Javascript_Node.js_Json_Foreach_Discord.js - Fatal编程技术网

Javascript 如何在没有硬编码的情况下使用多个discord bot帐户登录?

Javascript 如何在没有硬编码的情况下使用多个discord bot帐户登录?,javascript,node.js,json,foreach,discord.js,Javascript,Node.js,Json,Foreach,Discord.js,我已经试着让它工作了一段时间,但没有结果 下面是我尝试过的,我想做的是让多个discord bot帐户同时响应相同的提示,而无需硬编码,下面是我迄今为止最好的示例 编辑:我知道客户的情况。有错误,但这是迄今为止我遇到的最好的例子 const auth = require("./tokens.json"); const Discord = require("discord.js"); client = new Discord.Client(); var clients = []; auth["To

我已经试着让它工作了一段时间,但没有结果

下面是我尝试过的,我想做的是让多个discord bot帐户同时响应相同的提示,而无需硬编码,下面是我迄今为止最好的示例

编辑:我知道客户的情况。有错误,但这是迄今为止我遇到的最好的例子

const auth = require("./tokens.json");
const Discord = require("discord.js");
client = new Discord.Client();
var clients = [];
auth["Tokens"].forEach(element => {
    console.log(clients)
    clients.push(new Discord.Client().login(element));
    console.log(clients)
});
console.log(clients[0])
console.log(clients[1])
console.log(clients[2])

clients.forEach(client => {
    client.on("ready", () => {
        console.log("I am ready!");
        console.log(client.user.id)
    });
});

My tokens.json代码:

{
    "Tokens": ["MjIxtokentoken","MjIxtokentokenc","MjIxtokentoken"]
}
输出:

PS E:\test> node app.js
[]
[ Promise { <pending> } ]
[ Promise { <pending> } ]
[ Promise { <pending> }, Promise { <pending> } ]
[ Promise { <pending> }, Promise { <pending> } ]
[ Promise { <pending> }, Promise { <pending> }, Promise { <pending> } ]
Promise { <pending> }
Promise { <pending> }
Promise { <pending> }
E:\test\app.js:40
    client.on("ready", () => {
           ^

TypeError: client.on is not a function
    at E:\test\app.js:40:12
    at Array.forEach (<anonymous>)
    at Object.<anonymous> (E:\test\app.js:39:9)
    at Module._compile (internal/modules/cjs/loader.js:959:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:995:10)
    at Module.load (internal/modules/cjs/loader.js:815:32)
    at Function.Module._load (internal/modules/cjs/loader.js:727:14)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1047:10)
    at internal/main/run_main_module.js:17:11
PS E:\test>node app.js
[]
[承诺{}]
[承诺{}]
[承诺{},承诺{}]
[承诺{},承诺{}]
[承诺{},承诺{},承诺{}]
承诺{}
承诺{}
承诺{}
E:\test\app.js:40
client.on(“ready”,()=>{
^
TypeError:client.on不是函数
在E:\test\app.js:40:12
在Array.forEach()处
at对象。(E:\test\app.js:39:9)
at模块编译(内部/modules/cjs/loader.js:959:30)
at Object.Module._extensions..js(internal/modules/cjs/loader.js:995:10)
在Module.load(内部/modules/cjs/loader.js:815:32)
at Function.Module._load(内部/modules/cjs/loader.js:727:14)
位于Function.Module.runMain(internal/modules/cjs/loader.js:1047:10)
在internal/main/run\u main\u module.js:17:11

您可以用一种简单的方法来完成。首先,在您的令牌上执行一个循环,然后完成您的工作

这看起来像:

const auth=require('./tokens.json')
const Discord=require('Discord.js')
for(身份验证令牌的常量令牌){
const client=new Discord.client()
client.on('ready',()=>{
console.log('我准备好了!')
console.log(client.user.id)
})
client.login(令牌)
}

clients.push(new Discord.Client().login(element))
附加登录承诺,而不是客户端。相反
const c=new Discord.Client();c.login(element);clients.push(c);
但也以其他方式处理promise。@Aivaras不是每次迭代foreach时都会覆盖const,因此只有最后一个auth标记的值吗?不,它是在该函数内部为每次迭代创建的,从外部无法访问。我的意思是
auth[“Tokens”]。foreach(t=>{const c=new Discord.Client();c.login(t);clients.push(c);});