Github
https://github.com/crazypeace/tg-keyword-monitor-bot

这里有一个关键字消息的频道示例:
https://t.me/FuckGFWNewbieNeedHelp

搭建说明

首先, 你可以看看Github项目的readme, 那是一个从头到尾按操作顺序手把手的图文教程.
如果你觉得那篇教程有点云里雾里, 那么下面, 我换一个角度来描述.

系统架构

信息源 -> 采集者 -> 本程序 -> 发布者 -> 消费者

系统中的各部分

信息源 是 你想监听的各个tg群组, 频道

采集者 是 一个tg账户

  • 推荐你注册一个新tg账户来玩.

本程序 是 本项目 main.py

  • 本程序需要 api_id, api_hash. 需要到 https://my.telegram.org/apps 申请. 这里需要登录tg账户, 可以是 采集者同账户, 也可以是不同的账户.

发布者 是 一个tg机器人

  • 本程序需要 bot_token, 需要向 https://t.me/BotFather 申请. 向 @BotFather 发起机器人申请的tg账户, 可以和前面同账户, 也可以是不同的账户.

消费者 是 接收关键字通知消息 的用户或群组或频道

本项目的运行环境

安装python
一般你用的比较新版本的操作系统 Debian / Ubuntu, 已经自带了.

安装 pip

apt install -y python3-pip

拉取项目

apt install -y gitgit clone https://github.com/crazypeace/tg-keyword-monitor-botcd tg-keyword-monitor-bot

安装python依赖

pip3 install -r requirements.txt --break-system-packages

config.yaml.default 复制为 config.yaml

系统中各部分之间的关系

信息源 与 采集者 之间的关系
你自己登录 采集者账户 的身份, 加入信息源.
入群验证, 不公开群需要别人拉你, 需要管理员审批, ... 等等等等 这些问题, 需要你自己解决.

采集者 与本程序 之间的关系
编辑config.yaml

启动本程序需要 api_id, api_hash
编辑config.yaml

本程序过滤关键字的设置
编辑config.yaml

本程序与发布者的关系
编辑config.yaml

发布者 与 消费者 的关系
编辑config.yaml

运行本项目

python3 ./main.py

命令行提示你输入验证码,同时,telegram账户会收到一个验证码

将这个验证码输入到命令行

  • 只有第一次运行时会需要验证码. 以后运行不需要输入验证码.

========
以上, 就是本项目的基本搭建.

========

后记

如果你需要长期运行bot.
可以启用 service

cp tg-keyword-monitor-bot.service /etc/systemd/system/systemctl daemon-reloadsystemctl enable tg-keyword-monitor-bot.servicesystemctl start tg-keyword-monitor-bot.service
  • 如果你的目录不是/root/tg-keyword-monitor-bot, 那么请自行编辑tg-keyword-monitor-bot.service文件的内容

如果你希望用一个管理员tg账户给bot发命令, 来修改关键字列表.
编辑config.yaml

商业化构思

再复习一下本项目的架构

卖的是搭建项目的劳动

对于项目的使用者来说, 如果还要操作linux系统, 修改配置文件来修改关键字, 使用起来会不方便.
本项目提供向机器人发命令来修改关键字的操作方式, 使用者不需要接触linux环境.

示例,
甲方 提供 tg账号, 作为采集者, 把信息源的群都加好.
你把这个项目搭起来, 把甲方的tg账号设置为 管理员 和 消费者.
使用方式就是,
如果要监听更多的群, 甲方自己操作tg账号去加群.
如果要修改关键字, 甲方自己操作tg账号和机器人交互修改关键字.
甲方在tg账号上接收机器人发送的关键字消息.

卖的是信息源

比如, 某些群 加群要收费, 或者不接收新群成员了.
而你手里有已经加了这些群的tg账号, 作为 采集者.

示例,
在同一个大圈子里, 不同的甲方有不同的关键字需求.
你的采集者是同一个tg账号.
你为每一个甲方, 分别 运行一个项目. (可以共用VPS, python环境. 建不同的目录就行了)
其它设置都和标准流程一样, 只是设置同样的 采集者 (配置文件中的 user_phone 参数)

卖消费者权限

如果这个行业关注的关键字相当同质化, 你也掌握了信息源. 想降低维护成本, 你可以直接卖消费者权限.

示例,
你可以直接修改配置文件的 result_id_list 列表, 添加不同的 接收关键字消息的 tg 账号的ID.

你也可以把一个tg频道的id 设置为 result_id_list.

然后把 发布者的 bot 添加为频道的管理员, 这样就可以发关键字通知了.

你可以把频道设置为私有的, 你控制订阅这个频道的权限就行. 你收了钱, 再把某个tg用户添加进频道.

我自己公开了一个关键字消息的频道示例:
https://t.me/FuckGFWNewbieNeedHelp

使用多个采集者

不希望一个tg账号加太多的群, 担心一下子被封号的风险. 或者是你已经触达500个群组的上限.

运行多套程序, 分别使用不同的采集者, 只是设置为同一个消费者, 比如 同一个频道id

这样你的用户, 只要加入关键字通知频道就行了.

管理员设置为群组

如果你是帮甲方搭系统. 甲方有需求, 需要有多个管理员(比如, 工作在不同的时区, ...)
或者甲方有管理员权限的管理需求(加入新员工, 老员工离职, ...)
你可以让甲方建一个群组, 你把群组设置为管理员, 把 bot 添加到群组中, 接收命令.

这样, 甲方自己管理群组是否公开, 群组的成员, 以及群成员的发言权限之类的, 就行了.