开发电报关键词提醒机器人 telegram keyword monitor bot
前言
之前使用了一个电报关键词提醒机器人项目.
使用下来觉得功能有点重. 原项目考虑到多人使用, 不同的用户关注不同的关键字和不同的群组. 所以原项目需要用到数据库.
我准备自己开发一个轻量的适合个人使用的电报关键词提醒机器人.
借助现在强大的gpt的力量写代码.
第一版代码生成是用的免费的 claude
后续代码调试是用的免费的 M$ copilot
设计功能
bot只接受来自指定id的 user 或 group 的控制命令,bot监听到关键字后, 发送通知信息给指定id 的 user 或 group 或 channel,关注的 关键字列表 支持正则表达式排除的 关键字列表 支持正则表达式关注的 关键字列表 和 排除的 关键字列表 都更新到配置文件中保存
设计配置文件
配置文件 yaml 格式, 内容如下:# 账户信息account:# 监听信息的userapi_id: '1400003'api_hash: 'd11xxxxx112a7e059e831'user_phone: '+86190000010'# 发送消息的botbot_token: '1000007:AAHNh8axxxxxxxxxxxxxxxxHA'bot_username: 'keyxxxxxrt_bot'# LOGlogger:path: null # e.g. /root/absolute-path/ default null: {_current_path}/logs/level: INFO # FATAL,ERROR,WARN,INFO,DEBUG,NOTSET# 代理proxy:type: SOCKS5 # e.g. SOCKS4, SOCKS5, HTTPaddress: null # e.g. 127.0.0.1port: null # e.g. 1088# 非公共服务# bot只接收来自以下ID的命令 可以设置为user或group的IDcommand_id_list:- 123456789- 987654321# bot的通知信息发送到以下ID 可以设置为user或group或channel的IDresult_id_list:- 123456789- 987654321# 不处理来自机器人的消息# 比如,有些群里有自动回复机器人,回复的都是重复的消息;或者一些广告机器人加群之后开始刷屏ignore_bot_msg: true# 临时禁止一些数据源, 而不需要user从群组或频道中退出source_filter: false # 开关, 默认 falsesource_filter_ignore_list:- 123456789- 987654321# 关注的 关键字列表 支持正则表达式keyword_list:- /keyword1|keyword2|keyword3/ig- /keyword4|keyword5|keyword6/ig# 排除的 关键字列表 支持正则表达式keyword_exclude_list:- /exkeyword1|exkeyword2|exkeyword3/ig- /exkeyword4|exkeyword5|exkeyword6/ig
将功能描述和配置文件丢给claude
搭环境
apt install -y python3-pippip3 install -r requirements.txt
调试
1. 验证user和bot启动部分的代码
正确启动的结果是,
第一次运行, 命令行会提示要输入验证码.
之后 的运行不提示输入验证码.
2. 屏蔽user处理收到新消息的功能,
屏蔽bot判断命令来源的功能,
验证bot处理 /start 命令的代码
正确的结果是,
用任意telegram user向bot发 /start 命令, bot能收到 /start 消息并给出回应
3. 验证 查询 关键字列表 的命令 /list_keywords
正确的结果是,
能正确显示配置文件中的 关注关键字列表 和 排除关键字列表
4. 验证 添加和删除关键字列表的命令
正确的结果是,
能将修改内容保存到配置文件
5. 放开user处理收到新消息的功能
在命令行打印调试信息
正确的结果是,
能收到新消息, 在命令行有打印
6. 验证关注关键字列表功能 以及 通知信息发送给指定user的功能
正确的结果是,
包含 关键字的消息 会给指定user发送通知.
不包含 关键字的消息 不会给指定user发送通知.
7. 验证通知信息发送给指定group的功能
正确的结果是,
包含 关键字的消息 会给指定group发送通知.
8. 验证通知信息发送给指定channel的功能
正确的结果是,
包含 关键字的消息 会在指定channel内发送通知.
9. 验证排除关键字列表功能
正确的结果是,
包含 关注关键字, 并且 包含 排除关键字的消息 不会发送通知.
包含 关注关键字, 并且 不包含 排除关键字的消息 会发送通知.
10. 验证屏蔽来源功能
正确的结果是,
在一般来源中收到 包含 关注关键字 的消息, 会发送通知.
在屏蔽来源中收到 包含 关注关键字 的消息, 不会发送通知.
11. 放开bot判断命令来源的功能, 验证功能
正确的结果是,
从合法的命令来源发消息, bot给出回应.
否则bot回应 没有使用权限.
基本功能就这样了.
还有一些自以为是的优化, 就不在这里啰嗦了.
已上传github
https://github.com/crazypeace/tg-keyword-monitor-bot
实际效果
https://t.me/FuckGFWNewbieNeedHelp搭建教程随后就到, 可以关注我的博客. :)
https://zelikk.blogspot.com/p/icdyct.html
评论
发表评论