我是js的新手,也是我的初学者,所以我想知道如何才能让bot.on(' chat ')运行一次,比如聊天中的第一条消息。在这个例子中,机器人只回复发送的每一条消息,并说回相同的消息。
我不知道如何解决这个问题,我试着把它放在一个函数中,这样它就只会被调用,但它看起来就像是打开了一个侦听器,即使在函数运行完之后也会继续说消息。
var bot = mineflayer.createBot({
host: "localhost",
port: 25565,
username: "",
password: "",
version: "1.8.9"
});
bot.on('chat', function(username, message) {
if (username === bot.username) return;
bot.chat(message);
});任何让它在被调用时只回复消息的方法,或者只运行一次该事件的方法都会有所帮助。谢谢!
发布于 2019-10-21 02:16:41
N.B.现在是2019年;在现代NodeJS环境中,请使用let/const over var,并且在未使用绑定“function**s”时,请使用,而不是未命名的var。**即const bot = mineflayer...
每次触发'chat‘事件时,on处理程序都会运行。使用bot.once不会让你一直检查你是否真的回复了。您是js的新手,所以我不会深入研究用于删除事件侦听器的API。
考虑到这些限制,让我们保持简单。您可以有一个外部布尔标志,它还允许您在运行时稍后通过在以下代码中的if (responded) return;之前设置内容来轻松地切换开/关。您的代码可能如下所示:
let responded = false;
bot.on('chat', (username, message) => {
if (responded) return;
if (username === bot.username) return;
bot.chat(`Received ${message}`);
responded = true;
return;
});https://stackoverflow.com/questions/58475475
复制相似问题