Files
qun-monitor/README.md

81 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 群监控自动加群
使用 Telethon 登陆用户账号User-Bot自动加入目标群、抓取群主信息、监控消息并通过单独的 Bot 汇报关键词命中结果。
## 功能概述
- 通过 `GROUP_LINKS` 列表批量加入群(支持公开链接与 `https://t.me/+xxxx` 邀请链接)。
- 获取群主/创建者信息并在汇报群内确认当前监控状态。
- 长连接监听群消息,命中关键词时推送到指定群/频道。
- 关键词配置独立于代码(`keywords.yaml`),可随时增删并自动热加载。
- 汇报通道使用 Bot Token避免 user-bot 重复发言。
## 环境要求
- Python 3.10+
- Telegram API 凭据(`api_id`/`api_hash`
- 目标账号可登录的手机号(首登需要验证码)
- Bot Token用于把监控结果发到 @kt500_bot 已在的群)
## 快速开始
1. 安装依赖:
```bash
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
```
2. 准备配置:
```bash
cp .env.example .env
```
按需填写:
- `API_ID` / `API_HASH`:来自 [my.telegram.org](https://my.telegram.org)。
- `SESSION_NAME`:本地 session 文件名,首次登录会生成 `SESSION_NAME.session`。
- `USER_PHONE`:用于自动登录(可留空,运行时手输)。
- `GROUP_LINKS`:逗号分隔的群链接,可直接填 `https://t.me/+tvVm--E19cxkNWJl`。
- `REPORT_CHAT_LINK`:用于汇报的群/频道链接,如果就地汇报可与 `GROUP_LINKS` 中某一项相同。
- `TELEGRAM_BOT_TOKEN`:你的 @kt500_bot Token。
- `KEYWORDS_FILE`:关键词配置文件路径,默认 `keywords.yaml`。
3. 配置关键词:编辑 `keywords.yaml`,示例:
```yaml
keywords:
- name: promo
patterns:
- "推广"
- "广告"
regex: false
- name: join_request
patterns:
- "(?i)拉群"
- "(?i)加好友"
regex: true
```
- `regex: false` 表示普通子串匹配(自动转换小写)。
- `regex: true` 将整条 `pattern` 按正则表达式处理,可使用 `(?i)` 等修饰。
- 文件被修改后,程序会自动检测更新时间并重新加载。
4. 运行:
```bash
python3 -m src.main
```
- 首次运行会提示输入验证码 / 二步验证密码。
- 成功后会看到“群监控已启用”提示,同时在 `REPORT_CHAT_LINK` 对应的群内收到确认消息。
## 工作流程
1. **自动入群**:对每个链接先尝试 `get_entity`,若失败且为邀请链接,则执行 `ImportChatInviteRequest` 加入。加入或已在群内后会开始监听。
2. **群主识别**:调用 `GetParticipantsRequest(... ChannelParticipantsAdmins ...)` 找到 `ChannelParticipantCreator`,将结果写入汇报中,便于核对“自动添加群主”状态。
3. **关键词监控**`events.NewMessage` 监听指定群,命中关键词时将群名、消息 ID、发送人、关键词、时间与截断内容推送到 Bot 所在的群。
4. **多次触发 & 附件提醒**:文本命中会附带一则消息,若原消息含媒体,还会追加“附件提醒”。
## 常见扩展
- **新增关键词**:直接编辑 `keywords.yaml`,保存后生效(无需重启)。
- **新增群**:在 `.env` 的 `GROUP_LINKS` 中添加链接,重启程序即可。
- **自定义汇报格式**:在 `src/group_monitor.py` 的 `_handle_new_message` 中调整 `lines` 内容。
- **落地数据库**:可在 `_handle_new_message` 中追加写库逻辑,然后调用 `reporter.send_safe` 做通知。
## 注意事项
- 请确保 user-bot 与 @kt500_bot 均已在 `REPORT_CHAT_LINK` 对应的群里,并授予发送消息权限。
- Telegram 对频繁入群/拉人有限制,若日志出现 `FloodWaitError`,需等待对应秒数。
- Session 文件包含账户授权信息,只应保存在可信设备中。
- 若长期运行,建议用 `supervisor`/`systemd` 守护,并开启日志轮转。
## 后续工作
- 若需要把“自动添加群主”升级为主动发送好友请求,可结合 `contacts.AddContactRequest`,条件是群主公开手机号。
- 可根据需要加入异常上报(例如钉钉/企业微信)或统计报表。