【发布时间】:2020-02-16 20:30:36
【问题描述】:
(js 新手) 我正在与我的世界机器人不和谐,它在一个文件上使用 discord.js,为我的世界机器人使用 mineflayer。当一个命令在不和谐中运行时,它会让机器人运行它并运行一个检测聊天中正确行的功能,问题是即使在它检测到消息之后,它也会一直保持并读取每一行,永远。这意味着如果其他人键入它检测到的内容会干扰并认为那是正确的聊天线路..
我不知道如何让它停止,在运行一次事件后,或者在聊天中找到线路后,我可能需要在运行一次后停止它,以防线路由于某种原因没有出现。
function balOutput() {
bot.on('message', jsonMsg => {
if (Array.isArray(jsonMsg.json.extra)) {
var message = '';
jsonMsg.json.extra.forEach(function(element) {
message = message + element.text;
});
if (message.toLowerCase().includes('\'s balance')) {
var msg = message;
fs.writeFile('output.txt', msg, err => {
if (err) throw err;
});
} else if (message.toLowerCase().includes('is not locally online')) {
var msg = 'That player is not online!';
fs.writeFile('output.txt', msg, err => {
if (err) throw err;
});
}
}
continue;
});
}
一旦 discord 命令通过并在 minecraft 中运行,就会调用该函数。它确实工作了一次,但随后其他消息毁了它。问题是我不能只使用正则表达式并让它检测到玩家说它的消息,因为,其他一些命令需要以完全相同的输出运行但被放置在不同的位置,所以我不需要它来触发 bot.on ('message') 在 baloutput 函数中......我几乎需要在运行一次后关闭该事件。
【问题讨论】:
-
当这个函数执行时,
bot.on()现在会监听每一条进来的消息。我假设你在执行特定命令时调用这个函数?如果是这样,为什么不直接删除bot.on()并将消息传递给函数以便它可以使用呢?
标签: javascript discord.js