利用telegram bot 观察网红在线卖萌

Author Avatar
yiheng 2018年07月05日
  • 在其它设备中阅读本文章

效果图

Snipaste_2018-07-05_21-50-09.png

当按下转发到频道按钮后,bot会自动将信息转发到设定的频道,并修改消息内容,呈现按下按钮的人
Snipaste_2018-07-05_21-53-00.png

分析

要达成以上效果,首先需要一个bot和一个用户监听群组消息
还得把消息转发到bot能看到的地方,以让bot可以一键转发到频道
当user监听到消息之后 为了向用户呈现那些信息 需要把以下信息传给bot

  • 保存下来的群组id及消息id
  • 原消息内容与id
  • 群组信息(群组名,群组id,群组username,是否为公开群组等)
  • 询问用户是否转发到频道的那条消息的id

然后bot处理这些消息要做如下消息

  • 保存一些数据到数据库
  • 询问用户是否转发到频道

当用户按下转发到频道按钮后,bot要做的事

  • 转发消息
  • 修改 询问用户是否转发到频道的消息 的内容

由于用户按下按钮后,bot只能知道按下按钮的用户信息和消息id,所以就要从数据库中检索,找到原消息id(从保存消息的地方),并检索出原消息所在群组的username和名字

更多

一个用户当然无法观察一个人所有的群,所以可以 监听和处理消息分开,让多个用户监听消息而由服务端处理

我的实现

分析了这些,实现起来就容易了
由于我最熟悉的语言是java,但找不到java好用的userbot api,我就用了python监听,监听到消息后发一个http post请求到java服务端,这样以后想实现 更多 中的功能也更方便
github
需要的可以自己部署,至于我那一行注释都没写的可读性那么差的代码...
有什么建议可以在下方评论区及telegram告诉我

说明

python文件夹下的是监听端,需要先补全data.py下的一些设置及utils.py下的Tomcat地址
java文件夹下的是服务端,需要修改src/BotProperties.java下的一些设置和src/hibernate.cfg.xml下的数据库设置
修改好了之后用IDEA编译
Snipaste_2018-07-05_23-09-16.png

Snipaste_2018-07-05_23-09-27.png

会在out/artifacts/tg_observer_war下出现一个war包,放到Tomcat 8.x的webapps下,启动Tomcat即可运行
正常情况下hibernate会自动创建数据表

感谢

监听端借鉴了这里借鉴了这个项目的一些代码,在此表示感谢
感谢实验过程中提出建议的人们
感谢最可爱的MoeKa提供了一台vps运行处理消息的应用Java吃内存真不是盖的

注意

使用本方法,请先询问被观察用户的意见,否则可能会让对方不舒服