博文

电报防广告机器人 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

电报防广告机器人 telegram antispam bot 相关功能 清除群组Exceptions列表中实际上权限与群组默认权限一致的记录

图片
前面我们实现了两个防广告机器人 https://github.com/crazypeace/tg-join-group-exam-bot https://github.com/crazypeace/tg-send-msg-exam-bot 这两个机器人在设置群成员禁言和解除禁言时, 都是在 Exceptions 列表中添加了记录.  我们发现, 通过了验证的用户, 也在 Exceptions 中留有记录, 哪怕是与群组默认权限一致. 为了方便群组管理, 希望将这类记录清除掉. 这样, 剩下的记录肯定是屏蔽发言权限的, 也就是没有通过验证的. 我们可以直接踢出群组. 经过前面那么多天的使用, 我们已经是个GPT开发的"老手"了. 使用 Telethon 库, 可以做到下面的要求吗? 在群组 的 permissions 的 exceptions 里检查所有的设置, 如果某个群成员的权限 是与群组的默认权限相同的, 那么就从 exceptions 删除这一条设置. 不幸的, GPT给的代码 框架逻辑看起来没问题, 但是运行起来老报错. 看来又要读文档了. T_T 不断地在 官方文档 里学习哪个函数有什么参数, 参数有什么取值, 函数的返回值是个什么结构, 这个结构有哪些属性, ... 期间, 还遇到了一个关于用户权限的坑 https://zelikk.blogspot.com/2025/10/telethon-python-telegram-bot-music-voice-messages-audio-voice-notes-bug.html 最后总算是完成了. Github https://github.com/crazypeace/tg-clean-exceptions

Telethon 和 Python Telegram Bot 库 读取和设置群组的用户权限 Music和Voice Messages 即audio和voice_notes 有个坑Bug

图片
环境说明 Telegram界面设置群组的默认权限. 进群验证机器人 (tg-join-group-exam-bot.py) 在新成员通过验证后, 会在 Exceptions 里面设置权限. 清除 Exceptions 工具 (tg-clean-exceptions.py) 会读取群组的默认权限, 再读取 Exceptions 中某个用户的权限. 测试过程 Case 1.  群组默认权限  music - Close voice messages - Close tg-join-group-exam-bot.py 设置 permission can_send_audios=False, can_send_voice_notes=False, 新成员通过验证后, 在Exceptions中的记录是这样的, 符合期望 tg-clean-exceptions.py default_rights = entity.default_banned_rights 读出来的是什么 rights = getattr(p.participant, 'banned_rights', None)  读出来的是什么 可以看到默认权限是对的. 这个属性是 default_banned_rights. 所以 Ture 表示 Close. 而读取的 Exceptions 里面, 用户的权限是 错的 . False 表示 Open. Case 2.  群组默认权限  music - Close voice messages - Close tg-join-group-exam-bot.py 设置 permission can_send_audios=True,         (意思是 Open) can_send_voice_notes=True,        (意思是 Open) 新成员通过验证后, 在Exceptions中的记录是这样的,  不符合预期 . 因为上面的代码中设定的 permission 是 True, 应该是有这两个权限的. 而 telegram 界面上显示是没有.  tg-clean-exception...

电报防广告机器人 telegram antispam bot 在群内发言时需要人机验证

图片
现在有很多广告机器人, 在第一次加群时通过了验证, 然后一直不发言. 直到某天晚上开始发广告信息. 所以我想, 如果在群成员第一次发言时加上一个人机验证, 是不是可以大幅改善这个问题?

补完 我的精神良药(My Spiritual Medicine) 坏蛋调频-另一种节拍 坏蛋调频-经典难逃 播客存档

图片
今年 年初的时候, 心头一动, 把我存档的 <我的精神良药(My Spiritual Medicine)> <坏蛋调频-另一种节拍> <坏蛋调频-经典难逃> 播客文件都上传到 telegram 上面去. 我的精神良药(存档) https://t.me/MySpiritualMedicine 坏蛋调频-另一种节拍(存档) https://t.me/AnotherBeat 坏蛋调频-经典难逃(存档) https://t.me/Hard2EscapedClassic 可惜当时我手里的文件不全. 今天阴差阳错, 在Google上又搜了搜, 没想到搜到了这两个播客的RSS. 也不知道为什么以前搜索的时候就没找到. 坏蛋调频 https://rss.lizhi.fm/rss/12638.xml 我的精神良药 (My Spiritual Medicine) https://www.ximalaya.com/album/247547.xml 幸运的是, 这里面的音乐文件地址是有效的, 是可以直接下载的. 也可以很方便的复制shownote文字说明 终于, 了结了自己的一桩心愿. ======== BTW 这里还有一些老歌的telegram频道 https://t.me/cnalbum https://t.me/dvdoldsinger ======== 看着这么多不知道多少个小时的音乐文件 我觉得我没有必要去欣赏目前正在流行的歌曲了 我一下子明白了 不同时代的人, 就是会有不同的口味 没有必要强行互相理解 现在的年轻人, 在TA们成长的过程中, 会遇到打动TA们心灵的歌曲 这就是TA们的人生, 这就是TA们的命运

AutoHotKey将剪贴板转换为键盘输入用于VNC

图片
看到有人求助 VNC 中无法粘贴. 在 google 上搜索了一下, 找到一个这样的结果 https://ardalis.com/use-autohotkey-to-paste-text-as-typing/ #NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases. ; #Warn  ; Enable warnings to assist with detecting common errors. SendMode Event  ; Recommended for new scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory. setkeydelay 70 ^+v::GoTo, CMD CMD: ;Send {Raw}%Clipboard% vText := Clipboard Clipboard := vText Loop Parse, vText, % "`n", % "`r" {     Send, % "{Text}" A_LoopField     Send, % "+{Enter}" } return 试用了一下, 效果不对. 但是 AutoHotKey 这个思路是对的. 所以让GPT写了一个. #F3:: ; 快速键 win + f3     TextToSend := Clipboard     ; 检查剪贴板是否为空     if (TextToSend = "") {         MsgBox, clipboard empty         Return     }          DelayMs := 500 ; 设置您想要的延迟时间(毫秒...

The Hot3 in Last 7 Days

极简一键脚本 自定义端口NaiveProxy与Caddy V2前置的VLESS/Vmess V2Ray共存 可开CDN

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