{"id":30531329,"url":"https://github.com/TelechaBot/TelechaBot","last_synced_at":"2025-08-27T09:03:03.902Z","repository":{"id":57825993,"uuid":"528087261","full_name":"TelechaBot/TelechaBot","owner":"TelechaBot","description":"验证机器人|自定义|反垃圾内容|梯度多样验证系统|策略组配置|自部署|新式验证方案|Telegram Capthca bot","archived":false,"fork":false,"pushed_at":"2024-05-13T03:47:24.000Z","size":2212,"stargazers_count":35,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-05-13T04:40:01.041Z","etag":null,"topics":["telegram-bot","tgbot"],"latest_commit_sha":null,"homepage":"https://t.me/SmartCapthaBot?startgroup=start\u0026admin=can_invite_users","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TelechaBot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-23T17:03:23.000Z","updated_at":"2024-05-13T03:47:28.000Z","dependencies_parsed_at":"2024-05-13T04:48:23.121Z","dependency_job_id":null,"html_url":"https://github.com/TelechaBot/TelechaBot","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/TelechaBot/TelechaBot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TelechaBot%2FTelechaBot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TelechaBot%2FTelechaBot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TelechaBot%2FTelechaBot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TelechaBot%2FTelechaBot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TelechaBot","download_url":"https://codeload.github.com/TelechaBot/TelechaBot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TelechaBot%2FTelechaBot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272312352,"owners_count":24911924,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-27T02:00:09.397Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["telegram-bot","tgbot"],"created_at":"2025-08-27T09:01:28.980Z","updated_at":"2025-08-27T09:03:03.891Z","avatar_url":"https://github.com/TelechaBot.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"![a](https://raw.githubusercontent.com/TelechaBot/.github/main/profile/cover.png)\n\n------------------------------------\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"License\" src=\"https://img.shields.io/badge/LICENSE-Other-ff69b4\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/USE-python-green\" alt=\"PYTHON\" \u003e\n  \u003ca href=\"https://github.com/TelechaBot/TelechaBot/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/TelechaBot/TelechaBot?style=plastic\" alt=\"V\" \u003e\u003c/a\u003e\n  \u003ca href=\"https://afdian.net/a/Suki1077\"\u003e\u003cimg src=\"https://img.shields.io/badge/Become-sponsor-DB94A2\" alt=\"SPONSOR\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch2 align=\"center\"\u003eTelechaBot\u003c/h2\u003e\n\n**Use https://github.com/TelechaBot/Kitan instead**\n\n*TelechaBot* 是一个使用 Python 编写的机器人项目，使用 可更新模组 进行生物验证！ 项目经过模块化，便于扩展。\n\n为了给群组提供有效的验证模式，便捷的以**筛选**为目的**梯度验证**模式，它支持诸如 **成语验证** **普通语音听力验证** **图片验证** **文本验证** **诗词验证** **数学** **物理** **化学** **生物** **哔哩哔哩题库** 等验证模式。\n\n这让它既可以作为普通群组的智能安全的验证工具(推荐 听力验证 和 科目一 等系列)，也可以作为严肃型群组的得力助手(\n例如数学验证)。\n\n目前由 `Sudoskys`\n做维护支持，点击 [使用一个可爱的实例](https://t.me/SmartCapthaBot?startgroup=start\u0026admin=can_invite_users) *\n如果服务器没钱可能就不会维护*\n\n## 👋特性\n\n* MVC架构\n* 支持白名单\n* 支持一键部署\n* 异步 + 线程锁\n* 模块化**题库**模组\n* 体验第一性能第二\n* 支持英文语音验证\n* 内存散列表过期队列实现\n* 支持热载维护反Spam关键词\n* 群组自定义 绿卡/红牌 策略支持\n* 自由选择的枚举和不可枚举混合题库\n* 反垃圾内容全方位系统，用户从头像到Bio,人类能看见的它也可以看见。\n\n## 🙌应用\n\n- 机器人的封禁策略\n\n延迟定时封禁：到时间自动释放(博弈交给机器人)，避免误封后永不解封的问题。\n\n如果遇到了碰撞入群的情况，请开启高级 不可枚举题库 或语音验证。\n\n如果遇到被突破的情况，请提交反馈进行变动。\n\n### 🤔如何使用\n\n本机器人采用 **自动审批邀请** 的验证方式，舍弃旧的禁言公屏验证方式。\n\n* 防止机器人宕机导致门禁失效\n* 防止响应过慢导致的拦截不住\n* 防止操作记录被污染和打扰聊天(邀请只能管理员看到)\n* 适应 Topic 验证\n\n先在群组设置 `群组类型` 中开启 `批准新成员` 或 `加入需要审核` 选项。\n\n然后你需要将机器人添加进入群组，然后给予 `禁言` `邀请用户` `封禁用户` 权限。此时机器人管理就可以读取群内消息了。\n基于白名单机制需要，机器人会存储一下群组 ID。\n\n### 命令表格\n\n| 命令                        | 含义                         | 作用域 | 权限(主人,管理,群员) |\n|---------------------------|----------------------------|-----|--------------|\n| `+unban id`               | 解除用户验证和解除用户限制，移出黑名单        | 群组  | 管理           |\n| `+diff_limit level`       | 设定当前群组的验证难度上限              | 群组  | 管理           |\n| `/select`                 | 设定验证题库模式，自定义需要自部署或者提交合并    | 群组  | 管理           |\n| `+diff_min level`         | 设定当前群组的验证难度下限              | 群组  | 管理           |\n| `/whatmodel`              | 查看当前群组的验证模型                | 群组  | 管理           |\n| `+banme`                  | 俄罗斯禁言轮盘，管理不能玩              | 群组  | 群员           |\n| `+ban`+ID或者回复             | ban掉一个用户                   | 群组  | 管理           |\n| `/onw`                    | 机器人开启白名单模式，不能被未认证的用户再拉入或使用 | 机器人 | 主人           |\n| `/offw`                   | 关闭白名单，开放机器人                | 机器人 | 主人           |\n| `/show`                   | 对config设定的主人显示配置           | 私聊  | 主人           |\n| `/groupuser`              | 对config设定的主人显示正在使用的群组      | 私聊  | 主人           |\n| `/addwhite group_id`      | 加入白名单，仅开启白名单时生效            | 私聊  | 主人           |\n| `/removewhite group_id`   | 移除白名单，仅开启白名单时生效            | 私聊  | 主人           |\n| `/cat filepath`           | 查看文件                       | 私聊  | 主人           |\n| `/unban group_id user_id` | 解封指定群组的指定用户                | 私聊  | 主人           |\n| `/ban group_id user_id`   | 为了防止部署者滥权，没做功能             | 私聊  | 主人           |\n| `/redis`                  | 查看队列顺便备份 redis 键表          | 私聊  | 主人           |\n| `/renew`                  | 从网络更新题库                    | 私聊  | 主人           |\n| `/about`                  | 关于机器人的信息（读取config中的预设描述）   | 私聊  | 任何人          |\n| `/upantispam`             | 更新反诈库                      | 私聊  | 主人           |\n| `/whatstrategy`           | 查看本群策略                     | 群组  | 管理           |\n\n#### ⚒群组管理命令\n\n缇茶 *目前* 使用 `+` 作为关键符。\n\n```shell\n+select 选择题库\n+ban 回复或+ID\n+banme 俄罗斯轮盘\n+diff_min 设定最小难度\n+diff_limit 设定最大难度\n+unban 解禁+ID\n```\n\n#### 🎛策略组\n\n什么是入群前策略组？\n\n缇茶会在验证之前先根据群组的策略进行分流筛选，然后根据特征将待验证者分流到不同的操作逻辑。\n\n* 样式\n\n```\n!door!premium=[level=1|type=off]\n```\n\n使用 ``/whatstrategy`` 查看策略和支持的键类型。\n\n支持的属性为 [\"level\", \"type\", \"command\"]  \n`level` 为优先级（冲突时高等级策略优先），`type` 为 `on` 或者 `off` ，`command` 分 `ask`(验证),`ban`(禁止),`pass`(绿卡通过)\n找不到默认 ask。\n\n### 🔨待办\n\n- [ ] 智能通过可信用户(在严格模式下)\n- [ ] 日志频道支持\n- [ ] 兼容 Rose 语法\n- [x] 异步实现\n- [x] 网络热加载\n- [x] 群组白名单\n- [x] 手动解除封锁\n- [x] 重新选择题目\n- [x] 重构消息逻辑\n- [x] 自动释放黑名单\n- [x] DFA 反内容算法\n- [x] 反 QrCode 判定\n- [x] CV 计算判定NSFW\n- [x] 群组设置自定义难度\n- [x] 重构设计模式为 MVC\n- [x] 自定义题目仓库在线更新\n- [x] 初步使用Redis接管数据\n- [x] 使用Redis重构队列逻辑\n- [x] 群组设置自定义题目仓库，设计题库读取类\n\n## ⚙️自部署指南\n\n### 🥪环境支持\n\n应当使用 Python 3.7 或更高版本，主机需要安装 `redis-server`\n\n* 反二维码支持(可选)\n\n```bash\nsudo apt update\nsudo apt install openjdk-11-jdk\n```\n\n* 安装 Redis\n\n```shell\napt-get install redis\n```\n\n使用 ```systemctl start redis.service``` 启动服务，或者使用```nohup redis-server \u003e output.log 2\u003e\u00261 \u0026```启动，推荐前者。\n\n* 安装TTS支持\n  使用 `sudo apt install espeak ffmpeg libespeak1` 安装 TTS 语音验证支持。\n\n### 🥕安装维护\n\n* 拉取/更新程序\n\n安装脚本会自动备份恢复配置，在根目录运行(不要在程序目录内)\n，更新时候重新运行就可以备份程序了，如果是小更新可以直接 ``git pull``\n\n```shell\ncurl -LO https://raw.githubusercontent.com/TelechaBot/TelechaBot/main/setup.sh \u0026\u0026 sh setup.sh\n```\n\n然后切换到程序目录进行配置 ``cd TelechaBot``\n\n#### ⚙️配置\n\n* 安装依赖库\n\n```shell\ncd TelechaBot\npip install -r requirements.txt\n```\n\n* 编辑配置文件 `Captcha.toml`\n\n```shell\nsudo apt install nano\ncp Config/Captcha_exp.toml Config/Captcha.toml\nnano Config/Captcha.toml \n```\n\n#### 📚配置文件说明\n\n* nano Config/Captcha.toml\n\n```toml\n# Sample\ndesc = \"生物信息验证 Bot\\nChannel @TelechaBot_real\\ngithub.com/TelechaBot/TelechaBot\"\nlink = \"https://t.me/SmartCapthaBot\"\nbotToken = '57xxxxxxxxxxxxxxxxxxxxdqMuqPs'\n\n[ClientBot]\nowner = '5477776859'\ncontact_details = \"判定为非白名单群组后的联系方式\"\n\n[Proxy]\nstatus = false\nurl = \"http://127.0.0.1:7890\" \n```\n\n这里的 `botToken` 填写你在 `botFather` 那里申请的botToken,这个是机器人的登陆凭证，请妥善保管。\n\n这里的 `desc` 是 About 字段，可以删除整个字段。\n\n### 🚀运行\n\n#### 📚命令模板\n\n```md\nstart - 私聊 开始验证\nabout - 私聊 关于这个好玩的Bot\nselect - 管理 切换题库\nwhatmodel - 管理 查看当前模组\nwhatstrategy - 管理 查看本群策略\nrenew - 主人 更新题库\nupantispam - 主人 更新反诈数据\nunban - 主人 群组ID+用户ID\nonw - 主人 对群组开启白名单\noffw - 主人 对群组关闭白名单\nshow - 主人 对主人显示配置\naddwhite - 主人 加入白名单\nremovewhite - 主人 踢出白名单\ncat - 主人 查看文件\nredis - 主人 查看目前队列\ngroupuser - 主人 查看使用者\n```\n\n#### 🧊后台运行\n\n```shell\n# 长时间运行\nnohup python3 telecha.py \u003e /dev/null 2\u003e\u00261 \u0026 \n```\n\n```shell\n# 有日志，因为TG脆弱的土豆服务器，可能会日志爆炸\nnohup python3 telecha.py \u003e output.log 2\u003e\u00261 \u0026\ncat output.log\n```\n\n* 查看进程\n\n```shell\nps -aux|grep python3\n```\n\n* 终止进程\n  后加进程号码\n\n```shell\nkill -9  \n```\n\n* 更新\n\n小型更新也可以使用 `git pull`\n\n```shell\ncurl -LO https://raw.githubusercontent.com/TelechaBot/TelechaBot/main/setup.sh \u0026\u0026 sh setup.sh\n```\n\n### 🪐关于反内容系统\n\n使用 CV2 和 DFA 技术，智能识别。\n\n如果出现 **误报** 或 **失效**，请提交 ISSUE 进行相关处理。\n\n### 🪐关于验证模型\n\n支持多重模型，自定义模型,自带多重模型。\n\n理论可以兼容其他绝大部分机器人的验证方式！\n\n抽取或随机生成题目，支持难度梯度过滤。\n\n`some = model_name.Importer().pull(difficulty_limit=5)`\n\n[项目详细信息和参数信息](https://github.com/TelechaBot/CaptchaCore)\n\n**实例**\n\n```\n长度为34的线段 AB 的两个端点A、B都在抛物线y2(2次方)=8x 上滑动，则线段 AB 的中点 M 到 y 轴的最短距离为?(四舍五入)\n8\n\n在 周密 的诗《绣鸾凤花犯・花犯》中，有这样一句: 冰弦写怨更多情，骚人恨，枉赋芳兰幽芷。\n请问它的下面一句是？ |A:千里孤坟，无处话凄凉。|B:惟有御沟声断，似知人呜咽。|C:春思远，谁叹赏、国香风味。\n\n在论语 先进篇 中，有这样一句对话: 颜渊死。子曰：“噫！天丧予！天丧予！”\n请问它的下面一句是？ \n|A:子谓子夏曰：“女为君子儒，无为小人儒。”\n|B:子曰：“《诗》三百，一言以蔽之，曰：‘思无邪’。”\n|C:颜渊死，子哭之恸，从者曰：“子恸矣！”曰：“有恸乎？非夫人之为恸而谁为？”\n\n俺はGandom(我就是高达)这句话是谁说的？\n\n.....\n```\n\n**自定义题库**\n\n将你的题库文件放在Github或者托管在其他可以直链公开访问的服务上，然后写一个类，处理这个文件返回Q和A两个参数，并提交到 [这个仓库](https://github.com/TelechaBot/QaBank)\n的Issue 或者 Pr。\n\n调试需要启动 `redis-server`\n\n### 协议和信息保管\n\n#### 用户信息协议\n\n本项目会保存验证人员的用户数据画像用于反垃圾内容系统的识别。\n\n本项目不会向其他组织共享任何敏感数据。\n\n本项目的实例不保证提供稳定的服务。\n\n#### 协议\n\n见 LICENSE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTelechaBot%2FTelechaBot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTelechaBot%2FTelechaBot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTelechaBot%2FTelechaBot/lists"}