首页 > 解决方案 > 如何在 js 文件 (discord.js) 中执行终端命令

问题描述

我的不和谐机器人目前有一个本地录音功能,每次有人说话时都会创建一个文件。当机器人与语音通话(从!stoprecording)断开连接时,我需要node merge.js在终端中手动运行以将所有这些文件合并到 1 个主 PCM 文件中。从那里,我需要运行另一个 FFMPEG 终端命令将合并的 PCM 文件转换为 MP3。这本身就很好,但很好奇是否有任何方法可以自动化?有没有办法在实际代码本身中执行终端命令。这样每次运行 !stoprecording 时,它都会合并文件并使用 FFMPEG 转换为 mp3?

标签: javascriptnode.jsterminaldiscorddiscord.js

解决方案


在处理 discord.js bot 命令时,您可以使用 Node.JS 原生的东西来执行 shell 命令

const util = require('util');
const exec = util.promisify(require('child_process').exec);

async function ls() {
  const { stdout, stderr } = await exec('ls');
  console.log('stdout:', stdout);
  console.log('stderr:', stderr);
}

// ls function is called in command exec function
ls();

推荐阅读