Telegram Bot

dimlau
题图

我尽力了,但是实在忍不住,还是要显摆一下:我看着 GO 语言文档Telegram Bot API 文档,外加在网上搜索各种入门级教程,用了大概两周时间借鉴、实现、重构、完善……做出来一个用于群组新进成员验证的 Telegram Bot。

最开始,在 Github 搜索到一个别人实现好的纯 Golang 的 Telegram API,用起来就很简单。比如你想让它发信息就用 client.SendMessage() 方法,给出群组编号和要发的信息内容即可。但是问题是,很多地方就很别扭,别人写死的方法,你想换换花样来用,就得写好多重复代码。所以我后来就比葫芦画瓢自己实现了一份,顺便把用不到的部分删掉,同时把一些用的到的部分更新到 Telegram 官方的最新接口版本。

说这么多题外话,其实这个机器人小助手要做的工作就很简单:我很早之前创建了一个地域性的群组,但是可能是太古老了吧,很多群组列表里都有它,好多莫名其妙的帐号加进去发广告。所以我就只需要一个功能,对新加群的用户做个验证。实现起来也很简单,小助手在群组里发一条信息问候新成员,并且这条信息附带一个三选一的选择按钮,询问新成员是愿意:留下、迟疑还是离开。三个按钮的顺序是随机的,只有选择留下这个选项的成员才能恢复群组成员的完整功能,否则会保持无法发布内容的状态半分钟,半分钟过后,没有作出选择的成员就被移出群组。

但是这还是不符合我的「审美」,因为这个过程很扰民。其他成员会无缘无故地被这条信息干扰到。所以后来我又改动了好几次不同方案,最后成了目前的版本:

  • 新入群的成员会被限制发布图片和链接等经常被用来做垃圾广告的功能,一旦发布信息就会被删除,而且记录被删帖的次数;
  • 而正常的为了交流而来的成员,只要参与纯文字的聊天三四次,小助手就会修改她的群组权限为全部开放;
  • 群组管理员使用 /del 命令回复那些不受欢迎的内容,小助手就会把它删掉,并且记录次数;
  • 成员被删帖一定次数,小助手会把她禁言一段时间,并且自动发出一条信息,请群组成员表态是否还愿意和这个成员共处,通过表态按钮,该成员的被删帖记录可能被消除,也可能就此离开群组。
  • 小助手在我创建的那个群组里还有几个隐藏功能比如天气预报和每日晚间一句话道晚安……

这样在大部分时间,小助手都是无声无息的。只在某个用户几次三番发表不受欢迎的内容,被群组管理员多次处理了才会有扰民信息出现,而这个扰民信息恰恰是我觉得体现成员参与感的部分。当然视群组管理员的理念而定,她完全也可以直接踢人,但是我觉得那不是我想要的。

好吧,马上要说完了我终于只能承认:过于简单的「编程」习作,被我敝帚自珍地一通介绍,真是好生无聊。如果你有群组需要用到小助手,可以把它拉进群组,并且赋予管理权限。它的 ID 是 @HualaoBot,头像算是彩蛋。同时如果有改进建议请不吝赐教,因为是不务正业的爱好,所以反而迭代效率会很高呢,哈哈哈哈哈!


2020.09.18

增加了翻译功能,但是有点繁琐。使用场景是,当妳和外国友人聊天,她发给你一段你不太确定含义的内容,这时妳可以把这段信息转发给小助手机器人,它会将其(自动判断语言种类)转换成中文;同样如果妳对自己的英文水平不太自信,跟小助手发信息 /EE 这里是你要说的中文内容,小助手会回复你一条信息把中文内容转换成英文。

延伸阅读

本站架设在 RamNode VPS

Grav -> Hugo