elixir上的电报机器人

时间:2017-01-13 21:32:18

标签: elixir bots telegram

我是Elixir的新手,我写了电报机器人。我将此项目用作模板:https://github.com/lubien/elixir-telegram-bot-boilerplate

它工作正常,但我有几个问题。

  1. 如何分割"命令"如果它太大了?我有一个想法是使用use App.Commander创建一个新模块NewCommands,并将其添加到Matcher中的handle_cast。这是正确的方式吗?

  2. 为什么Matcher作为GenServer运行?我认为它不需要任何状态或任何状态。

1 个答案:

答案 0 :(得分:2)

  1. 请先阅读Elixir中use, import, and require之间的区别。
  2.   

    每当我们想要在不使用完全限定名称的情况下轻松访问其他模块的函数或宏时,我们就会使用import

    所以不,use不应该在这里使用:import应该。其他方式是将命令定义为宏并将require定义为它们,或者在__using__的{​​{1}}宏中编写一个特殊函数生成,然后才NewCommands它。< / p>

    1. 我没有深入研究代码,但我想你希望use自动重生,出现问题并且崩溃了,对吧? Erlang的理念是“很快崩溃”,因此我们只是让进程崩溃而不是繁琐的错误处理。 Aftwerwards,如果您仍想匹配,则应重新生成,以便提供进一步的请求。
    2. 此外,它在Matcher之前用作调度程序。