一个用于验证新成员是不是真人的bot。
A bot running on Telegram which will send CAPTCHA to verify if the new member is a human.
基于原始项目修改
Forked based on Original Repository
修改者:@kkren(新 API 支持)
Bot实例: @FubukiAntiSpamBot 日志频道:@FAS_bot_log
Q: 被误加入黑名单了,怎么解除?
A: 当前此 bot 实例只会进行踢出群操作,只需要再次加入你想加入的群,如果被自动踢出,在1分钟之后10分钟之内再次加入即可进入。
本 Bot 通过读取 Telegram API 中返回的入群消息来识别新用户入群,并生成一道随机问题对用户进行验证,非严格模式只要有回答问题就通过;严格模式下回答错误将会被移除或者封禁,这个验证的效果目前无法绕过具有人工操作的广告机器人,但是可以对外语(如阿拉伯语和波斯语)类骚扰用户起到一定的拦截作用。再此基础上增加了全局黑名单功能,只有验证超时的广告机器人会自动加入到黑名单,之后在任意有此 bot 的群组加群将会被自动踢出,对误封禁的影响造成最低。
Telegram Bot API 使用了基于 MTProto 框架的 pyrogram,多线程使用了 asyncio。
此仓库仅为遵守 AGPL 协议进行代码展示,并未对用户部署使用进行优化,普通用户建议直接使用原始项目 如果你仍想使用此 Bot,请参照下面说明进行部署。
Python 要求: 最低 python 版本 3.9 ,建议 python 版本: 3.11
- 请先向 @BotFather 申请一个 Bot API Token
你申请到的机器人会在你的 Telegram 账号所在数据中心上运行(即申请机器人的账号A位于 DC 5 (新加坡),则 A 申请到的机器人也将会在 DC5 上运行)
- 在 Obtaining Telegram API ID 申请 API ID 与 API Hash
- 使用 Python Virtual Environment 部署:
# 若未安装pip3,请先安装 python3-pip
apt update && apt install -y python3-pip python3
git clone https://github.com/NimaQu/Telegram-CAPTCHA-bot-pyrogram.git
cd Telegram-CAPTCHA-bot-pyrogram
python3 -m venv venv
venv/bin/pip install wheel
venv/bin/pip install -r requirements.txt
- 将项目文件夹中 auth.ini 里的 token 字段(与等号间存在一个空格)修改为你在 @BotFather 获取到的 API Token,api_hash 和 api_id 修改为你在步骤2中获得的两串内容,其中 API ID 为数字,而 API Hash 为一组字符,你也可以对 config.json 里的内容酌情修改。
有关填写字段说明:
channel
: Bot 日志记录频道 Chat ID (-100 开头),未填写将会导致无法正常工作(这是一个 bug,等待修复)。
admin
: 管理用户 User ID,不填写则/leave
和/reload
指令无效。
- 使用
venv/bin/python
直接运行这个 bot,或者在/etc/systemd/system/
下新建一个 .service 文件,使用 systemd 控制这个bot的运行,配置文件示例请参考本项目目录下的example.service
文件进行修改。
cp example.service /etc/systemd/system/captchabot.service
nano captchabot.service
#编辑参数
systemctl start captchabot
#启动
systemctl enable captchabot
#开机自启
- 将本 bot 加入一个群组,并给予封禁用户的权限,即可开始使用
由于一个已知无解的严重 Bug, Bot 在运行一周至13天左右的时间可能会由于线程冲突导致整个 Bot 死掉,如果需要在多个(10个以上)的群组内部署本 Bot 请考虑在crontab等地方设置定期重启。
现在的分支加入了一遇到异常就会自动重启的设定,Bot 在正常运行情况下应该是不会卡死了。
在安装了 systemd ,且已经在 /etc/systemd/system 下部署了服务的 Linux 操作系统环境下,请使用命令:
journalctl -u captchabot.service
#查看从启动时的日志
journalctl -f -u captchabot.service
#查看实时日志
# 这里的 captchabot.service 请自行更名为你在服务器上部署的服务名
本项目使用 GNU Affero 通用公共许可证 3.0 开源