利用telegram bot 观察网红在线卖萌
效果图
当按下转发到频道
按钮后,bot会自动将信息转发到设定的频道,并修改消息内容,呈现按下按钮的人
分析
要达成以上效果,首先需要一个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编译
会在out/artifacts/tg_observer_war
下出现一个war包,放到Tomcat 8.x的webapps
下,启动Tomcat即可运行
正常情况下hibernate
会自动创建数据表
感谢
监听端借鉴了这里借鉴了这个项目的一些代码,在此表示感谢
感谢实验过程中提出建议的人们
感谢最可爱的MoeKa提供了一台vps运行处理消息的应用Java吃内存真不是盖的
注意
使用本方法,请先询问被观察用户的意见,否则可能会让对方不舒服