Skip to content

arlcry/Telegram-CAPTCHA-bot-pyrogram

 
 

Repository files navigation

Telegram-CAPTCHA-bot

一个用于验证新成员是不是真人的bot。

GNU Public License Affero 3.0 Python 3.6 Pyrogram

A bot running on Telegram which will send CAPTCHA to verify if the new member is a human.

基于原始项目重制

Remaked and forked based on Original Repository

修改者:@Yoshida_Yuuko(功能开发和轮子适配) Rsplwe(Pyrogram 移植)clatteringmarion(基于 Docker 的虚拟化容器)

Bot实例: @toorucaptchabot

隐私协议 | 用户须知

一些简单的Q&A

Q: 请问这个Bot是否会窃听群组消息?

A: 根据 Telegram 官方文档,工作在隐私模式下的非管理员 bot 只能获取下列几种消息:

   - 以"/"斜杠开头的命令
   
   - 对 bot 消息的回复
   
   - 服务消息(即进群和退群消息等,这也是本 Bot 工作的原理)
   
   - 当 bot 是某一频道的管理员时,从这个频道转发出来的消息

然而,对于设置为群组管理员的 bot,即便是设置了隐私模式,Telegram 服务器仍然会使 bot 接收到一切消息(除了因为限制,bot 本身完全无法收到的消息)。但是请您放心,我们的现有部署所运行的代码只会处理上文中提到的“服务消息”,并不会对您群组内的隐私安全造成威胁。

如果你对我们现有的部署不放心的话,可以自行 clone 本仓库代码并在自己的服务器/Docker 容器上自行部署。

如果你并没有编程基础,或者并没有详细阅读本项目的代码,而对本项目的安全性提出质疑,我们将会不予理会。

原理

本 Bot 通过读取 Telegram API 中返回的入群消息来识别新用户入群,并生成一道随机问题对用户进行验证,非严格模式只要有回答问题就通过;严格模式下回答错误将会被移除或者封禁,这个验证的效果目前无法绕过具有人工操作的广告机器人,但是可以对外语(如阿拉伯语和波斯语)类骚扰用户起到一定的拦截作用。

Telegram Bot API 使用了基于 MTProto 框架的 pyrogram,多线程使用了 asyncio。

安装与使用

由于 Bot 使用了 Python 3.6 的 变量类型标注 这一特性,在低于 Python 3.6 的版本上会出现 SyntaxError,因此源码只能在 Python 3.6+ 上运行!

  1. 请先向 @BotFather 申请一个 Bot API Token

你申请到的机器人会在你的 Telegram 账号所在数据中心上运行(即申请机器人的账号A位于 DC 5 (新加坡),则 A 申请到的机器人也将会在 DC5 上运行)

  1. Obtaining Telegram API ID 申请 API ID 与 API Hash
  2. 在服务器上安装 pyrogram 以及 tgcrypto(以 Ubuntu 18.04 LTS 为例):
# 若未安装pip3,请先安装 python3-pip
apt install python3-pip
pip3 install -U tgcrypto pyrogram configparser
# 项目当前已适配并兼容最新的 pyrogram v1.1.3(自带 asyncio 支持),直接通过 Pypi 安装即可。
git clone https://github.com/Tooruchan/Telegram-CAPTCHA-bot 
cd Telegram-CAPTCHA-bot
  1. 将项目文件夹中 auth.ini 里的 token 字段(与等号间存在一个空格)修改为你在 @BotFather 获取到的 API Token,api_hash 和 api_id 修改为你在步骤2中获得的两串内容,其中 API ID 为数字,而 API Hash 为一组字符,你也可以对 config.json 里的内容酌情修改。

有关填写字段说明:

channel: Bot 日志记录频道,未填写将会导致无法正常工作(这是一个 bug,等待修复)。

admin: 管理用户,不填写则/leave/reload指令无效。

  1. 使用 python3 main.py 直接运行这个 bot,或者在 /etc/systemd/system/ 下新建一个 .service 文件,使用 systemd 控制这个 bot 的运行,配置文件示例请参考本项目目录下的 example.service 文件进行修改。

  2. 将本机器人加入一个群组,并给予封禁用户的权限,即可开始使用

日志

在安装了 systemd ,且已经在 /etc/systemd/system 下部署了服务的 Linux 操作系统环境下,请使用命令:

journalctl -u captchabot.service 
# 这里的 captchabot.service 请自行更名为你在服务器上部署的服务名

项目实例

@toorucaptchabot

本项目在 PyPy 3.6 和 pyrogram v1.3.6 上测试通过

开源协议

本项目使用 GNU Affero 通用公共许可证 3.0 开源

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 95.5%
  • Shell 2.8%
  • Dockerfile 1.7%