【问题标题】:Telegram bot on elixir长生不老药上的电报机器人
【发布时间】:2017-01-14 14:24:03
【问题描述】:

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

效果很好,但我有几个问题。

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

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

【问题讨论】:

    标签: elixir bots telegram


    【解决方案1】:
    1. 请先了解 Elixir 中 use, import, and require 之间的区别。

    当我们想要轻松访问来自其他模块的函数或宏而不使用完全限定名称时,我们会使用import

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

    1. 我没有深入研究代码,但我猜你希望Matcher 自动重生,是不是出了点问题,它崩溃了,对吧? Erlang 的哲学是“很快崩溃”,因此我们只是让进程崩溃,而不是繁琐的错误处理。之后,如果您仍想匹配,则应重新生成它,以提供更多请求。

    另外,它在Commands之前用作调度器。

    【讨论】:

    • 我知道 import/use/require,但我不知道如何在我的情况下使用它。有一个宏模块Commander,它被Commands 使用。我试图制作一个新模块(使用use Commander)并在那里编写命令,并在命令中编写import,但它不起作用。我
    • 看看Commander#__using__/1是如何实现的,并为你的NewCommands做同样的事情。
    猜你喜欢
    • 2016-02-01
    • 2016-08-26
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多