node.js - Node js,使用 exec 启动 Discord.js 机器人,无法正常运行

标签 node.js discord.js

假设我有 2 个文件,a.js 和 b.js,其中 a.js 是一个简单的 node.js 脚本,它调用 b.js,它是一个 Discord.js 机器人。

a.js

const { exec } = require(‘child_process’);
exec(‘node b.js’, (err,stdout,stderr) => {
console.log(‘err: ‘ + err + ‘\n stdout: ‘ + stdout + ‘\n stderr:‘ + stderr);
});

b.js

const Discord = require(‘discord.js’);
const fs = require(‘fs’);
var bot = new Discord.Client();
var token;
fs.readFile(‘token.txt’,(err,data) => {
    if(err){console.log(err); process.exit(0);}
    token = data;
});
bot.on(‘ready’,()=>{console.log(‘ready’);});
bot.on(‘message’, message => {
    if(message.content == ‘ping’){
        message.channel.send(‘pong’);
    }
});
bot.login(token);

当我运行 a.js 时,唯一的输出是

err:
stdout:
stderr:

a.js 然后终止,看起来好像 b.js 从未运行过。 我想知道为什么会发生这种情况以及原因。 另外,如果有人想知道我为什么要这样做,我将其作为一个更大脚本的一部分,并将问题归结为这一点。主要部分是 b.js 必须从 exec 运行。我在 Windows 10 中使用最新版本的 Node 和 Discord.js 运行此程序。谢谢

最佳答案

我又尝试了一次,但是当完成完整的不和谐机器人设置后......

我的a.js看起来像这样......

const { spawn } = require('child_process');

const child = spawn('node',['b.js']);

process.stdin.pipe(child.stdin);

child.stdout.on('data', (data) => {
  console.log(`child stdout:\n${data}`);
});

child.stderr.on('data', (data) => {
    console.log(`child stderr:\n${data}`);
});

我的 b.js 看起来像这样...

const Discord = require('discord.js');
const fs = require('fs');
var bot = new Discord.Client();
var token;
fs.readFile('token.txt', {encoding: 'utf8'}, (err,token) => {
    if(err){console.log(err); process.exit(0);}

    bot.on('ready',()=>{
            console.log('ready');
    });
    bot.on('message', message => {
        if(message.content == 'ping'){
            message.channel.send('pong');
        }
    });

    bot.login(token);
});

b.js 上,我必须以 utf8 读取文件,并确保我的 token.txt 文件没有尾随、前导空格。另外,我将机器人登录代码移至 token 文件读取的回调中。

下面的输出示例...

enter image description here

我在不和谐上发送了 ping 来看看它是否有效,机器人用 pong 响应。

截图如下。 enter image description here

我希望这段代码对您有用,请告诉我...

关于node.js - Node js,使用 exec 启动 Discord.js 机器人,无法正常运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47210575/

相关文章:

DiscordAPI错误: Missing Access on createOverwrite

javascript - 当用户对消息使用react时如何消除 react ? -Discord.js

javascript - 我在尝试分配角色时不断收到错误消息

javascript - Discord.js - 类型错误 : "listener" argument must be a function

javascript - 用于多个连接的 DRY 解决方案?

node.js - NodeJS & SSL - "bad password read"

javascript - 使用 SinonJS stub (带重新布线)

javascript - Selenium 、 Mocha 、MySQL。 mysql运行顺序

javascript - 运行 npm install 时出错 Error : 404 Not Found: 7zip-bin@~4. 1.0

javascript - 如何在不重新启动 Express.js 项目的情况下刷新 API 端点