长生不老药上的电报机器人
Telegram bot on elixir
我是 Elixir 的新手,我正在编写电报机器人。我使用这个项目作为模板:https://github.com/lubien/elixir-telegram-bot-boilerplate
它工作正常,但我有几个问题。
如果 "Commands" 太大了怎么拆分?我想用 use App.Commander
创建一个新模块 NewCommands 并将其添加到 Matcher 中的 handle_cast
。这样对吗?
为什么 Matcher 作为 GenServer 运行?我不认为它需要任何状态或smth。
- 请先阅读 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
它.
- 我没有深入研究代码,但我猜你希望
Matcher
自动重生是出了什么问题导致它崩溃了,对吧? Erlang 的理念是“很快就会崩溃”,因此我们不进行繁琐的错误处理,而是让进程崩溃。之后,如果你还想匹配,它应该重新生成,以满足进一步的请求。
此外,它在Commands
之前用作调度程序。
我是 Elixir 的新手,我正在编写电报机器人。我使用这个项目作为模板:https://github.com/lubien/elixir-telegram-bot-boilerplate
它工作正常,但我有几个问题。
如果 "Commands" 太大了怎么拆分?我想用
use App.Commander
创建一个新模块 NewCommands 并将其添加到 Matcher 中的handle_cast
。这样对吗?为什么 Matcher 作为 GenServer 运行?我不认为它需要任何状态或smth。
- 请先阅读 Elixir 中
use
,import
, andrequire
的区别。
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
它.
- 我没有深入研究代码,但我猜你希望
Matcher
自动重生是出了什么问题导致它崩溃了,对吧? Erlang 的理念是“很快就会崩溃”,因此我们不进行繁琐的错误处理,而是让进程崩溃。之后,如果你还想匹配,它应该重新生成,以满足进一步的请求。
此外,它在Commands
之前用作调度程序。