为forkgram/tdesktop添加批量静音所有群组和频道功能
速览
用户因手动逐个静音众多群组和频道操作繁琐,通过面向GPT开发,基于forkgram/tdesktop的dev分支创建新分支feat-mute-all,分析现有“Mark as read”和“Mute forever”工作流程后,在Folder右键菜单添加“Mute All”功能。测试发现侧边栏与顶部代码不同,又补充侧边栏入口。最终实现遍历文件夹内所有对话并设置永久静音。
AI 深度解读
背景
在 Telegram 生态中,许多用户会加入大量群组(Group)和频道(Channel)。为了减少信息干扰,通常会将它们设置为静音状态。然而,Telegram 客户端(包括基于官方源码修改的 forkgram/tdesktop)默认只支持逐个右键菜单操作“Mute forever”,对于添加了数十甚至上百个群组和频道的用户来说,手动逐一设置静音效率极低。原作者因此希望找到一种批量静音的方法,即在一个对话分组(Folder)的右键菜单中增加“Mute All”功能,一键遍历该分组下的所有对话并设为永久静音。
核心内容
原文分享了如何借助 GPT 类 AI 工具(对话模型为 mimo-v2.5-pro)进行“面向 GPT 开发”的完整流程,具体如下:
-
创建分支
在 GitHub 的 crazypeace/forkgram-tdesktop 仓库中,基于 dev 分支新建一个名为feat-mute-all的分支。 -
编译环境准备
新建一个 YAML 文件(通常用于 CI/CD 或本地构建配置),确保能够基于该分支进行编译。 -
分析现有工作流
- 分析“对话分组 Folder 右键菜单”中原有的“Mark as read”功能的工作流程。
- 分析“单个对话右键菜单”中的“Mute forever”功能的工作流程。
-
实现新功能
在对话分组 Folder 的右键菜单中添加一个新选项 “Mute All”。其工作流程为:遍历该分组内的每一个对话(包括群组和频道),并对每个对话调用“Mute forever”设置。 -
测试与修复
- 首次测试:启动程序后发现“Mute All”未出现在右键菜单中。
- 向 AI 反馈后,AI 指出 Folder 在侧边栏(sidebar)和顶部标题栏(top bar)的右键菜单代码是不同的,之前的修改仅针对顶部,没有覆盖侧边栏。
- 于是补充为侧边栏也添加相应代码,增加功能入口。
- 最终效果:右键菜单中成功出现“Mute All”,点击后即可批量静音该分组下的所有对话。
-
成果发布
完整代码已提交到 GitHub 仓库的同名分支:crazypeace/forkgram-tdesktop/tree/feat-mute-all。
关键要点
- 目标用户痛点:大量群组和频道需要静音,逐一操作极其繁琐,缺少批量静音入口。
- 技术路线:基于 forkgram/tdesktop 源码,利用 AI 模型(mimo-v2.5-pro)辅助分析代码结构并生成修改方案。
- 核心修改点:
- 分别修改顶部标题栏和侧边栏两处的 Folder 右键菜单代码。
- 新增“Mute All”菜单项,其事件处理函数遍历分组内所有对话,调用已有的“Mute forever”逻辑。
- 测试发现:同一功能在顶部和侧边栏的实现代码不同,需要分别添加,否则仅在一个位置生效。
- 最终交付物:公开的 GitHub 分支,包含完整修改,可供其他用户 fork 使用。
意义与影响
- 提升效率:该功能直接解决了 Telegram 重度用户批量管理静音状态的需求,将重复操作从数十次降低到一次点击。
- AI 辅助开发案例:展示了如何利用 GPT 类模型(如 mimo-v2.5-pro)进行“面向 GPT 开发”——即通过对话精准描述需求、分析代码流程、生成补丁并调试修复,降低了对大型开源项目(如 tdesktop)进行二次开发的门槛。
- 开源贡献:修改方案以开源分支形式发布,其他用户可自由编译使用,或在此基础上进一步扩展(如添加对指定对话类型的静音、定时静音等)。
- 对社区启示:类似“批量操作”需求在 Telegram 客户端中普遍存在(如批量已读、批量删除等),该工作流可迁移至其他功能的开发,推动 forkgram/tdesktop 等第三方客户端变得更高效。
