博文

电报防广告机器人 telegram antispam bot 相关功能 清除群组Removed Users列表

图片
有很多广告账号在防广告机器人处理下, 被踢出了群组. 也就是在群组的 Permissions - Removed Users 列表中. 而广告账号因为被举报得很多, 所以实际上比较快就会被telegram封禁, 成为 Deleted Account 本项目的目的就是清理这个列表, 把已经被封禁的账号移除. 再一次地, 用GPT开发. 基于我们的前一个项目, 全代码复制粘贴到chatgpt中, 再附上以下要求 基于上面的代码, 实现以下功能: 在群组的 permissions - removed users 里面, 找出被封禁的账户 Deleted Account, 清除掉. Github https://github.com/crazypeace/tg-clear-removed-users 使用效果 📢 群组: FuckGFW-Newbie 翻墙新手村 ✅ 保留: 7887288719 (Trinity Griselda) - 被踢出状态 ⏭️ 跳过: 8125834274 🗑️ 检测到 Deleted Account: 7623369260,正在清理... ✅ 保留: 6331849477 (bk ) - 被踢出状态 ✅ 保留: 6709325050 (易捷支付 机场特惠 ) - 被踢出状态 🗑️ 检测到 Deleted Account: 8173951376,正在清理... 🗑️ 检测到 Deleted Account: 7499278394,正在清理... 🗑️ 检测到 Deleted Account: 7548224690,正在清理... ...略 ✅ 完成检查,共检查 55 人,清理掉 19 个 Deleted Account。 其中 8125834274 是我设置在脚本中测试保留列表用的. 总结 不管是 Exceptions 还是 Removed users, 都是用 iter_participants 函数查询出来的群成员, 只是用的 filter 不同. 不管是清除 Exceptions 还是 Removed users, 都是设置一个空的 ChatBannedRights await client(EditBannedRequest(entity, p.id, ChatBannedRights(until_d...

怎么把梯子分享给长辈

图片
思路 1. 同时搭建多种协议 2. 创建订阅链接 3. 用办法保证墙内访问订阅链接 4. 选用解压即用的翻墙客户端 5. 配置完成后打压缩包 6. 告诉长辈   a. 解压缩包   b. 运行可执行文件   c. 更新订阅的操作   d. 切换节点的操作

第一次翻墙 如何搭建你的第一个梯子

图片
本文针对  第一次 翻墙 的情况, 你除了对墙外事物的向往, 手中没有任何资源, 所有的操作需要从墙内出发. 如何自己搭建第一个梯子呢?

电报防广告机器人 telegram antispam bot 相关功能 踢除群组Exceptions列表中没有发言权限的用户

图片
有一些 防广告机器人为了防止误踢用户, 只对未通过验证的用户设置了禁言, 并没有将用户踢出群组. 那么, 这些用户会在 群组Exceptions列表中留下一条没有发言权限的记录. 当这样的记录非常多时, 逐条手工操作太费时. 那么, 我们让程序来帮忙吧. 再一次地, 用GPT开发. 基于我们的上个项目  https://github.com/crazypeace/tg-clean-exceptions 参考上面的代码, 实现以下功能 在群组 的 permissions 的 exceptions 里检查所有的设置, 如果某个用户没有发言权限, 则将这个用户踢出群组. 可以看到, 这样简单的项目, 完全不需要IDE开发工具, 也不需要氛围编程助手, 也不需要最新的模型. 随便找个GPT就行, 哪怕GPT-5的限额到了, 用GPT-4也足够了. 不过呢, 和前面博文中所述情况一样, 程序的大框架逻辑是正确的, 但是具体到 怎样将用户踢出群组, 调用的函数和参数会搞迷糊. 还是自己查一下 官方文档 . 最终效果 群组: test ✅ 保留: 6611601789 (蛙 女) - 可发言 🚫 踢出: 6701294471 (新 希望) - 无发言权限 完成检查,共检查 2 人,踢出 1 人 上传 Github  https://github.com/crazypeace/tg-kick-no-permission-user ======== 后记 我后面发布的这4个电报防广告机器人相关功能小工具都是基于telethon的. 相应的, 需要登录某个Telegram账户, 也就是说要输入一个手机号, 并完成验证过程. 对于这种偶尔使用的工具, 可以共用同一个Telegram账号. 我在代码中使用了同样的指定 session 的方法. client = TelegramClient('session_' + phone_number, api_id, api_hash) 所以指定的session文件名是一样的. 也就是说这些工具可以共用一个session. 只要把这些工具放在同一个目录下. root@rn-TEST:~/tg-antispam-bot-tool# tree . . |-- session_+8613812345678.session |-- tg...

电报防广告机器人 telegram antispam bot 第一次在群内发言时需要人机验证 效率优化 验证用户列表缓存在内存

图片
我们前面实现的 首次发言 验证机器人. https://github.com/crazypeace/tg-send-msg-exam-bot 在阅读代码时发现, 机器人经常需要读取 yaml 文件. 这会显著增加I/O开销, 降低处理速度. 每次发现群内的新消息, 都要调用 is_valid_user()函数 -> load_valid_users()函数 -> 打开yaml文件 一个常见的优化策略是,  在内存里保留一份缓存.  当程序启动时, 从文件中加载到内存缓存. 当查询时, 在内存缓存中查询. 当修改时, 修改内存缓存 并且 修改文件. 这种缓存方案很常见, 所以再一次的, 我们使用GPT开发. 把原代码全量复制 粘贴, 再加上一句话. 上面的程序中, 每次验证都要读取VALID_USERS_FILE 会不会有效率问题 得益于原始代码的良好结构, 添加这个缓存的改动并不大. 提交到 Github https://github.com/crazypeace/tg-send-msg-exam-bot

电报防广告机器人 telegram antispam bot 相关功能 查询群组内的全部成员 对比ChannelParticipantsBanned与ChannelParticipantBanned

图片
上一篇 中, 我们通过查询群组中最近的1000条发言, 得到活跃群成员的id列表. 如果我想对这个群里的成员特别厚道, 只要是目前在群里的, 我都不希望有可能被机器人打扰. 那么我需要得到群组内的全部成员. 用GPT开发. 不要忘了, 我们刚刚做过的 查询群最近消息的项目 . 为了方便自己阅读和学习, 把上个项目的全部代码复制粘贴, 再加上下面的要求. 发给GPT. 查询一个telegram群组中的全部成员 输出格式为 yaml telegram账号的userid:  uesrname: telegram账号的username  full_name: telegram账号的full name 如 6611601789:   username: skypatch   full_name: 蛙 女 这个群组可能是公开群组, 也可能是不公开群组 经过一些简单的调试. 代码正常运行了. 但是获得的用户包括了 exceptions 里的用户. 这不是我们想要的, 我们想要的用户列表应该还把这部分用户排除. 这一步折腾了比较久, GPT返回的结果有问题.  我同时使用 claude, gemini, chatgpt. 再结合 Telethon 的官方文档 . 终于搞定了. 上传到 Github https://github.com/crazypeace/tg-get-group-member 运行效果 正在获取群组成员列表: FuckGFW-Newbie 翻墙新手村 跳过Exceptions列表中的用户 ID: 816194782 跳过Exceptions列表中的用户 ID: 6521155977 ...略 --- 群组成员列表 --- 6617181826:   username: atefatman   full_name: 子 肥 7919966027:   username: crazypeace_anti_bot_bot   full_name: CZ_antibot_bot ...略 ✅ 共获取 1216 名成员 📄 已保存到文件: members_1517821953.yaml ======== 后记 在 Telethon 中, ChannelParticipantBanne...

电报防广告机器人 telegram antispam bot 相关功能 查询群组最近的消息 统计发言账号的ID

图片
上一期我们实现了 第一次发言 人机验证 的机器人 . 那么就带来了这样一个需求: 我这个群已经有了很多群友. 天天发言, 也能看出来都不是机器人. 但是我把这个第一次发言人机验证的机器人一拉进群里. 那每个人在这个时间点之后的第一次发言之前都要验证一遍了. 这样会给这些群友带来不必要的麻烦. 当然, 这个项目本身也提供了一个验证列表文件 valid.yaml 你是可以手动添加群友的 userid 的. 其中, 只有userid是有效的, 其它信息是辅助人类管理这个文件用的, 不参与程序的逻辑判断. 所以, 你可以手动添加群友的userid进去. 就像这样: 所以, 本文要解决的需求就变成: 查询群组最近的消息 统计发言账号的ID

The Hot3 in Last 7 Days

搭 Docker版 Sub-Store 带 http-meta 实现 集合订阅 测延迟 排序 筛选 生成新订阅 定时任务上传Gist

酒馆SillyTavern 玩英文角色卡 也能以中文输出 设置世界书Lorebooks