#telegram-bot #bot #telegram #bot-api #client #async #api

app overbot

Telegram Bot Manager,抽象出无聊的部分,让你只关注有趣的部分

8个版本

使用旧的Rust 2015

0.3.3 2017年8月20日
0.3.2 2017年8月13日
0.3.1 2017年7月31日
0.2.0 2017年6月24日
0.1.2 2017年6月14日

#45 in #bot-api

MIT/Apache

23KB
486

Overbot - 一个Telegram机器人助手

Overbot的目标是移除编写Telegram机器人所需的所有样板代码,只让你关注业务逻辑。

Overbot通过处理网络通信来实现这一点,同时你可以在配置文件中指定机器人的行为。

支持的格式是 jsontoml。以下是一个使用toml格式的简单示例

#mybot.toml

token = "mytoken"

[[command]]
regex='hello ([A-z]+)'
executable = '/bin/echo'
args = ['$1']
input = 'text'
output = 'text'

以下参数可用

token

模拟机器人的所需令牌

command

支持任意数量的命令块,以下参数是支持的

regex

用于匹配特定命令的regex。

命令按顺序进行匹配测试,第一个匹配的将被执行。

支持的语法是rust regex crate支持的语法。

可以指定捕获组,并在后面的 args 字段中通过编号和/或名称引用它们。

executable

响应接收到的消息时要执行的程序的绝对路径。

程序将通过 stdin 接收消息,其 stdout 将是响应消息的主体。

args

传递给可执行文件的参数数组。

可以使用 $ 符号作为捕获组编号或名称的前缀,它将被相应地展开为提供的查询。

capture group $0 是整个匹配。

input

将要使用的输入模式。支持的模式有

  • json:将原始json消息发送到stdin
  • text:将消息的 text 字段发送到stdin

input

将要使用的输出模式。支持的模式有

  • json:期望程序stdout包含一个原始json消息响应
  • text:期望程序stdout包含消息响应的 text 字段
  • textmono:期望程序stdout包含消息响应的 text 字段,该字段将被封装在 monopaced 格式化中
  • markdown:期望程序stdout包含消息响应的 text 字段,并识别Telegram接受的Markdown子集
  • html:程序的标准输出应包含消息响应的文本字段,并识别Telegram接受的HTML子集

访问控制

可选地,可以指定一个allowed参数,作为接受为机器人或单个命令的Telegram ID列表(如果该字段存在于[[command]]部分)。

这些ID可以是群组ID或用户ID。

运行程序

程序接受一个包含任意数量.toml.json配置文件(每个机器人一个)的文件夹作为参数

overbot my_bot_dir

限制

该程序目前还在开发中,缺少许多期望的功能,特别是

  • 对配置错误的合理且易于阅读的错误处理
  • 支持内联模式
  • 合理且可配置的日志记录

许可证

许可协议为以下之一

依赖项

~17–26MB
~403K SLoC