长生不老药上的电报机器人

Telegram bot on elixir

我是 Elixir 的新手,我正在编写电报机器人。我使用这个项目作为模板:https://github.com/lubien/elixir-telegram-bot-boilerplate

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

  1. 如果 "Commands" 太大了怎么拆分?我想用 use App.Commander 创建一个新模块 NewCommands 并将其添加到 Matcher 中的 handle_cast。这样对吗?

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

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

We use import whenever we want to easily access functions or macros from other modules without using the fully-qualified name.

所以不,use 不应该在这里使用: import 应该。另一种方法是将命令定义为宏和 require 它们,或者在 NewCommands__using__ 宏中编写一个 ad-hoc 函数生成,然后才 use 它.

  1. 我没有深入研究代码,但我猜你希望 Matcher 自动重生是出了什么问题导致它崩溃了,对吧? Erlang 的理念是“很快就会崩溃”,因此我们不进行繁琐的错误处理,而是让进程崩溃。之后,如果你还想匹配,它应该重新生成,以满足进一步的请求。

此外,它在Commands之前用作调度程序。