在单个事件中处理多个功能

时间:2020-05-05 15:59:35

标签: javascript node.js discord.js

我已经为我的机器人编写代码已有一年多了,但我仍在努力在一个事件中处理多个机器人功能。示例:

// message event

//advert protection
const checkAdve = db.prepare('.......').get();
if (!checkAdve') {
   return;
}

// economy
const checkEco = db.prepare('.......').get();
if (!checkEco') {
   return;
}

这只是一个粗糙的示例(目前我手头没有代码),但实际上,这里的问题是,如果checkAdve返回,那么经济功能就永远不会像广告返回那样运行。我知道我能做到

if (checkAdve) {
// do stuff
}

但是我的某些功能并不总是可以实现的。

我仍在学习“ discord.js”,如果有人可以教我如何处理此类问题,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以编写包含功能的多个功能,然后在事件中调用它们。

示例:

09:04:49.591 -> Sent: <1>
09:04:50.564 -> Sent: <2>
09:04:51.368 -> Recd: <0>
09:04:51.477 -> Recd: <1>
09:04:51.583 -> Recd: <2>
09:04:51.687 -> Sent: <3>
09:04:52.080 -> Recd: <3>
09:04:52.777 -> Sent: <4>
09:04:52.997 -> Recd: <4>
09:04:53.804 -> Sent: <5>
09:04:54.096 -> Recd: <5>
09:04:54.896 -> Sent: <6>
09:04:55.083 -> Recd: <6>
09:04:55.995 -> Sent: <7>
09:04:56.104 -> Recd: <7>
09:04:56.970 -> Sent: <8>
09:04:57.073 -> Recd: <8>
09:04:58.084 -> Recd: <9>
09:04:58.084 -> Sent: <9>
09:04:59.106 -> Recd: <10>
09:04:59.174 -> Sent: <10>
09:05:00.087 -> Recd: <11>
09:05:00.197 -> Sent: <11>
09:05:01.111 -> Recd: <12>
09:05:01.291 -> Sent: <12>
09:05:02.091 -> Recd: <13>
09:05:02.380 -> Sent: <13>
09:05:03.103 -> Recd: <14>
09:05:03.390 -> Sent: <14>
09:05:04.087 -> Recd: <15>
09:05:04.518 -> Sent: <15>
09:05:05.091 -> Recd: <16>
09:05:05.607 -> Sent: <16>

答案 1 :(得分:1)

如果您在侦听器内部工作,则它具有自己的作用域。使用from typing import List class Knapsack: def __init__(self, capacity: int, objects: int): self.capacity = capacity self.objects = objects def newHillclimber(self) -> List[int]: return [randint(0,1) for x in range(1,11)] k = Knapsack(20, 10) print(k.newHillclimber()) 时,您将忽略范围并停止进一步执行。您需要创建其他作用域来处理逻辑,例如使用函数。

return

然后在您的消息事件侦听器中,您可以使用函数:

function checkAdve(db) {
  const adveResult = db.prepare('.......').get();
  if(!adveResult) return false;
  return adveResult;
}