NodeJS - 我如何制作一个将在命令之后运行的命令?
Posted
技术标签:
【中文标题】NodeJS - 我如何制作一个将在命令之后运行的命令?【英文标题】:NodeJS - How do i make a command that will run after a command? 【发布时间】:2018-05-16 21:40:03 【问题描述】:我想创建一个在命令被调用后运行的命令 这是我的代码:
ownerID = "12042";
if (message.content.startsWith(config.prefix+"afk on"))
afk = true;
if (afk == true)
message.channel.send("Turned on AFK mode");
if (message.content.includes(config.ownerID))
message.reply(`X is away. Try again later.`);
if (message.content.startsWith(config.prefix+"afk off"))
afk = false;
if (afk == false)
message.channel.send("Turned off AFK mode");
我尝试在这里发出“AFK 模式”命令,如果我发送afk on
,它会在有人输入12042
时回复X is away
。
使用该代码,我根本没有得到任何答案,但如果我成功了
if (message.content.includes(config.ownerID))
message.reply(`X is away. Try again later.`);
它会毫无问题地回复,但我们都知道它会一直回复
【问题讨论】:
在您的*** if 语句中,您将变量分配给它们各自的值并立即检查该值。您不需要在这里进行分配,因为您知道您的表达式是真实的并且没有替代执行流程。另外,你为什么使用字符串而不是布尔值? @NoMoreQuestions 啊,我的代码实际上是布尔值,因为我是 *** 的新手,在发布此内容时有点困惑,所以我重新编写了代码。请问代码应该是什么样子的? 这是您的message
事件处理程序的全部内容吗? afk
的范围是什么?
您在第一个区块中遇到的问题到底在哪里?您的预期输出究竟是什么?
@AuxTaco 这不是全部内容,我只想让机器人运行 if (message.content.includes(config.ownerID)) message.reply("X is away. Try again later.");
仅当我运行 afk on
并且如果我运行 afk off
它将不会运行
【参考方案1】:
您的机器人应该寻找三种类型的消息:<prefix>afk on
、<prefix>afk off
,以及包括12042
在内的任何消息。您的代码仅处理<prefix>afk on
和<prefix>afk off
,12042
作为“开启”消息的特例。 (如果您尝试发送<prefix>afk on 12042
,您应该会看到您离开的消息。)重组您的代码以检查所有三种情况。最简单(但不一定是最好)的方法是
if (message.content.startsWith(config.prefix+"afk on"))
// turn on afk mode
else if (message.content.startsWith(config.prefix+"afk off"))
// turn off afk mode
else if (message.content.includes(config.ownerID))
// send the afk message if afk mode is on
【讨论】:
如果message.content.includes(config.ownerID)
在 message.content.startsWith(config.prefix+"afk on")
之外,每次提到 ownerID 时,bot 都会发送 afk 消息,这就是为什么我让它 if (afk == true)
但它不起作用
注意该分支中的注释:发送 afk 消息如果 afk 模式开启。您可以将其作为ownerID
分支内的辅助检查或通过将条件更改为afk && message.content.includes(config.ownerID)
来实现。无论哪种方式,它都与afk on
分支无关。
我正在使用afk && message.content....
,现在每当我提到ownerID时,机器人都会不断回复,我不知道为什么,我已经制作了afk = true;
和afk = false
并添加了if (afk=true && message.content.includes....
它。
最后一个 sn-p 中的等号数量完全错误。零个或三个,不是一个。但是你确定afk
有你认为的吗?如果要跟踪消息之间的 afk 模式,则需要在此处理程序之外定义它。
我不确定,但这是我的猜测。 'var afk' 不会将其值更改为true
,也不会更改为false
。这就是为什么即使我运行afk off
机器人也会继续回答以上是关于NodeJS - 我如何制作一个将在命令之后运行的命令?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 shell 命令中发送 Jenkins 版本号作为参数,该命令将在构建结束后执行