博文

电报防广告机器人 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 ; 设置您想要的延迟时间(毫秒...

电报防广告机器人 telegram antispam bot 我的博客最新一期博文的标题是什么 html解析 rss xml解析

图片
上一期中, 我们实现了自定义 问题-答案 . 但是过于死板. 那么, 除了算术题, 还有什么可以生成灵活 问题-答案 的方式呢? 比如, 我的博客最新一期博文的标题是什么? html解析 如果是人, 怎么找到我的博客的最新一期博文呢?  打开  https://zelikk.blogspot.com/ 找到这个位置, 标题就是答案了. 那么, 计算机程序怎么获取这一条呢? 我们 按 F12 打开浏览器开发者工具. 使用选择工具, 选中我们需要的博文标题.  可以看到在html中, 博文标题对应元素是 class="post-title entry-title" 那么, 我们使用GPT编程. python实现如下功能, 访问 https://zelikk.blogspot.com/ 在 html 中找到 第1个 class="post-title entry-title" 元素,  输出该元素的文本内容 把GPT编程的结果和原来的 youtube.py 里面的4行代码融合一下, 就得到这样的 blog.py  放到 pset 目录下就生效了.  import requests from bs4 import BeautifulSoup def buildQA():   question = '我的博客的最新一期博文标题是什么?'   correct_answer = ''   url = "https://zelikk.blogspot.com/"   # 请求网页   response = requests.get(url)   # 解析 HTML   soup = BeautifulSoup(response.text, "html.parser")   # 找到第一个 class="post-title entry-title" 的元素   element = soup.find(class_="post-title entry-title")   if element:     correct_answer = element.get_text(strip=True)   e...

Cloudflare worker 反代 blogspot 实现免翻墙域名镜像站 path关键词屏蔽

图片
前面实现了一个反代 blogspot 实现免翻墙域名镜像站 .  用KV中保存需要屏蔽的path的方式, 做到了, 指定path显示固定页面, 而不是原页面的功能. 有的用户也许会觉得, 写了一篇不想在墙内显示的博文, 还要去KV里面添加一条记录, 好麻烦呀. 还有一个办法, 就是对path先进行关键字筛选, 含有关键字的path, 直接就显示固定页面, 不需要去查KV了. 比如, 我在写博文的时候, 就有自定义链接的习惯, 会在 xxx.html 的这个xxx里面 包含博文的主题 https://zelikk.blogspot.com//2022/01/v2ray-caddy-ws-tls-cdn.html 利用GPT开发, 把 项目的work.js 丢进去, 附上这么一段话 GPT返回的结果有问题. 直接return Response 再多打几句. 这样的结果就对了. 更新到Github https://github.com/crazypeace/cf-worker-proxy-blogspot

The Hot3 in Last 7 Days

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

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