TGAutoSign

中文 · English

点一次,签一年。 · Tap once. Signed every day.

在 Telegram 里点一下它的签到按钮 —— 之后再也不用管。

回调按钮、文本指令、群签到都支持;签到窗口、断网补签、多账号隔离、限流退避内置。 管理面板就在 Telegram 内 —— 任意聊天发 /jmb。

Latest Release Downloads API License Telegram Group

下载最新版 APK · 源码仓库

只从这两个地址下载。第三方站点的转载包请用下方指纹自行比对。

作者 wlmosv · 好用的话 给源码仓库点个 Star


本地运行 · Local by design

无需账号密码、不碰官方 API、数据全在设备上。

  • 唯一联网行为是每 12 小时一次的更新检查,可在设置中关闭,不携带任何签到数据
  • 签到目标与已签状态存在 Telegram 进程的本地存储,不离开设备
  • 模块不申请存储、通知、安装权限;自动化操作全部在设备侧完成,不经任何中转服务器
验证方式与签名指纹 · Verify the build

官方 APK 签名证书 · official signing certificate

SHA-256  AF:55:24:CD:55:4A:E6:ED:E3:EC:27:47:C7:BE:D1:59
         B0:9B:C4:F6:A4:32:44:A6:8B:46:22:E9:46:32:25:C8
SHA-1    58:A2:B4:D3:F2:83:9A:92:7A:D4:0C:23:51:FE:43:AB:6F:D3:FB:C3

自己核对 · check it yourself

keytool -printcert -jarfile TGAutoSign-*.apk   # 比对上面的指纹
sha256sum TGAutoSign-*.apk                     # 比对 Release 里的 sha256sum.txt

全仓库只有 update/UpdateChecker.java 一个类发起网络连接,可直接审计。 指纹对应 2026-09 起使用的 release key;若将来更换密钥,会在 Release 说明中公告。

⚠️ 风险提示 · Risk notice — 任何 Telegram 自动化都存在账号被限制的可能。本模块采用客户端侧签到、随机时窗与退避策略,已尽可能平滑,但不承诺零风险。


主题配色 · Themes

内置 13 套色板,日间/夜间各一。每套在管理面板内即时切换,无需重启。

TGAutoSign · 13 套主题配色

图示为示意界面,内容均属虚构。实际以管理面板中的即时切换效果为准。

各主题详细截图 · 主面板 / 目标列表 / 设置
主面板 · 暗色 主面板 · 亮色
主面板·暗色 主面板·亮色
目标列表 · 暗色 目标列表 · 亮色
目标列表·暗色 目标列表·亮色
设置 · 暗色 设置 · 亮色
设置·暗色 设置·亮色

它能做什么 · What it does

能力 · Capability 说明 · Description
点一次就学会 · Tap once, it learns 在 bot 里点一下签到按钮,之后每天自动重放;按钮 data 变了也跟得上
Tap the bot's button once and it replays daily — even when the callback data changes.
文本指令也行 · Text commands too 填 bot ID + 指令(如 /checkin),到点自动发
Set bot ID + command (e.g. /checkin); sent on schedule.
群 / 频道签到 · Group & channel check-ins 群 ID 同样支持,回复判定按群内消息走
Group IDs supported; replies are read from group messages.
时间你说了算 · Your schedule 签到窗口 · 每目标随机时刻 · 错开间隔 · 补签截止 · 暂停一周
Window · per-target random slots · spacing · make-up deadline · pause a week.
不硬刚风控 · Rate-limit friendly 失败退避 5m→15m→45m→2h→4h · 尊重 FLOOD_WAIT · 断网自动补签
Backoff on failure · waits out FLOOD_WAIT · catches up when back online.
不想签的挡得住 · Block what you don't want 关键词 / 正则规则 · 整只 bot 排除 · 单个目标冻结
Keyword / regex rules · block a whole bot · freeze a single target.
多账号互不干扰 · Multi-account, isolated 目标与已签状态按账号隔离;可一键把目标复制到其它账号
Targets and signed-state are per account; copy targets across accounts.
每天一条摘要 · Daily summary 发到自己的收藏夹,不弹系统通知;连续失败 3 天额外告警
One message to your Saved Messages; alert after 3 failing days.
中英双语界面 · Bilingual UI 英文设备装上即英文;设置里可手动切换
English out of the box on English devices; switchable in Settings.
数据全在本地 · Local by design 仅更新检查联网,可关闭
Only the update check goes online — and it can be turned off.

支持的客户端 · Supported clients

模块先按宿主包名判定,再按标志类能力兜底,命中才注入。

要求:已 root + LSPosed(libxposed API 102 及以上,见 LSPosed Manager → 设置 → 关于)。不支持:未 root 设备、Telegram X、独立服务器部署。 Matched by host package first, then by flag classes as fallback — only injects on a match.

客户端 · Client 包名 · Package 状态 · Status
Telegram(Play / 默认渠道) org.telegram.messenger ✅ 13.0.1 实测 · tested
Telegram(官网直连版) org.telegram.messenger.web ✅ 实测 · tested
Nagram(NextAlone) xyz.nextalone.nagram ✅ 12.10.3 实测 · tested
Nagram XF fork.risin42.nagramx ✅ 实测 · tested
ExteraLess com.exteraless.app ✅ 12.10.5 实测 · tested
Mercurygram it.belloworld.mercurygram ✅ 12.10.3.1 实测 · tested
Turrit org.telegram.group ✅ 1.9.0.4.2 实测 · tested
Nnngram(NextAlone) xyz.nextalone.nnngram ✅ 12.10.6 实测 · tested
AyuGram com.radolyn.ayugram ✅ 实测 · tested
Nagram / NagramX / NagramNX nu.gpu.nagram 等 ✅ 实测 · tested
其它 Telegram-Android fork 任意 标志类齐全即注入 · injects if flags intact
Telegram X — ❌ 不注入(换内核)· not injected

⚠️ 作用域 · Scope:LSPosed 里默认只勾了官方版。用第三方客户端,请把对应客户端也勾进模块作用域。 LSPosed enables only the official client by default. Using a third-party client? Tick that client in scope too.


30 秒上手 · 30-second setup

步骤 · Step 做什么 · Do this
1 装 APK → LSPosed → 模块 里启用 TGAutoSign
Install the APK → LSPosed → Modules → enable TGAutoSign
2 作用域里勾选你在用的 Telegram 客户端
Tick your Telegram client in Scope
3 完全停掉 Telegram,再重新打开
Fully stop Telegram, then reopen it
4 任意聊天发 /jmb → 到 bot 会话点一次它的签到按钮
Send /jmb in any chat → tap the button once in the bot chat

完成。之后每天自动签,想看状态随时发 /jmb。 Done. It signs daily from then on — send /jmb anytime to check.


常见问题 · FAQ

Q:点了按钮没有添加 / Tapped the button but nothing was added

检查「设置 → 学习行为」里的自动学习开关;或 /jmb → 添加目标手动加。若仍不加,确认作用域已勾选、并完全停止 Telegram 重开。

Check the auto-learn switch under Settings → Learning, or add the target manually via /jmb → Add target. If it still won't add, make sure the scope is ticked and fully restart Telegram.

Q:机器人是点按钮不发文字的那种 / The bot uses buttons, not text

能。点一次按钮即学会(列表里带类型标记),之后每天自动重放。若按钮是打开网页或游戏类(无回调数据),不会误学。

Yes. Tapping once teaches it (the list shows a type badge) and it replays daily. Buttons that only open a web page or game (no callback data) are never mis-learned.

Q:官方版能用,第三方客户端用不了 / Works on the official client but not a third-party one

模块已支持这些客户端(见支持矩阵),但作用域默认只勾了官方版 —— 到 LSPosed 里把对应客户端勾进模块作用域,再完全停止 Telegram 重开。

Those clients are supported (see the matrix), but scope only includes the official client by default — tick your client in LSPosed, then fully restart Telegram.

Q:签到没生效怎么办 / Signing isn't working

/jmb → 自诊断看反射锚点是否正常;运行日志查注入与签到记录;仍未解决就导出运行日志,附客户端名称与版本提 Issue。

Run /jmb → Self-check to verify the reflection anchors, then inspect the log view. Still stuck? Export the log with your client name and version and open an issue.

Q:怎么迁移到新手机 / 新账号 / Migrating to a new phone or account

旧环境 /jmb → 导出配置;新环境把 json 放进 Android/data/<客户端包名>/files/tgautosign/ 后导入。导入只合并不清空。

On the old device: /jmb → Export. On the new one: drop the json into Android/data/<client package>/files/tgautosign/ and import. Import merges, never wipes.

Q:升级提示「与已安装应用签名不同」/ "Signature mismatch" when updating

装到了调试包。先卸载再装本页正式版;正式包之间可直接覆盖升级,签到数据不丢。

You installed a debug build. Uninstall it, then install the official APK from here. Official builds upgrade over each other in place — your data is kept.


更新日志 · Changelog

v1.6.9 (135) — 2026-10-28

修复:已签状态以 bot 回复为依据 · 同一条回复内以结论为准 · 非结果内容不参与判定 · 结果与推广分开识别 · 判定结果与列表显示一致 · 图片、贴纸类回复不产生签到结论 · 收藏夹摘要开关按账号生效 · 「未识别」页面长列表渲染 · 定时模式下的补签时间窗口 · 学习词条按层级生效 · 本地无该 bot 记录时仍可添加目标

新增:单目标固定签到时刻 · 签到音效 · 目标名称补全 · 开屏当日状态摘要

v1.6.7 (133) — 2026-10-17

新增:链路自检(全部功能 → 调试 → 自诊断 顶部) · 第二条独立消息入口(锚点 B) · 「从不应答」状态单列 · 动态表情(骰子)签到 · emoji 签到面板(全部功能 → 配置 → emoji 签到) · 统一会话选择器 · 支持直接填写 @用户名 · 命令速查(/jmb help 手册第 4.5 章) · 捕捉模式开关 · 「收藏夹摘要」独立开关(设置 → 通知) · 统计页扩充 · 签到中心改版(账号一览) · 账号健康度徽章 · 使用手册(12 章)

修复:bot 已回复但判定不出、状态长期停在「已发出」 · 按钮回应中的答案被误读 · 按钮反复失效后状态残留「已发出」 · 已签目标半小时内仍被判为「在等结论」 · 按钮型目标收到图片或贴纸被误报「回复判不出」 · 命令菜单被误判为签到结果 · 目标列表末尾无法滚动到底 · 全部目标显示「已发出 4999 分钟仍未结案」 · 模块自身发出的指令被收进「待添加」 · 点击入口后整个面板消失 · 定时日志与实际执行时间不符 · 纯表情口令在群聊中无法学习 · 添加目标后弹出「已发起签到」 · 宽松模式下非签到回复被判成功

优化:错误处置统一收敛 · 需处理口径统一 · 手动触发的闸门修正 · 跨账号复制 · 多账号回复判定 · 界面一致性 · 单账号签到无反馈、进度分母虚高 · 文案与提示语

完整更新日志 →

许可 · License

基于 GPLv3 开源,仅供个人学习与自有账号使用。 请遵守 Telegram 服务条款及各群组 / 机器人规则。

Licensed under GPLv3. For personal use with your own accounts. Please respect Telegram's Terms of Service and each group's / bot's rules.


Made by wlmosv · 点个 Star 是持续更新的动力

Releases

10/27/2026, 9:47:26 PM

1.6.9 (135) — 2026-10-28

签到状态以 bot 回复为依据。新增单目标固定签到时刻、签到音效、目标名称补全与开屏当日状态摘要。

修复 · Fixed

  • 已签状态以 bot 回复为依据
    Signed status is written only from the bot's explicit reply.
    签到指令发出仅记录为「已发送」;收到明确签到结果才计入已签,
    未获结论的目标保持等待,不因指令已发出而跳过当天。
  • 同一条回复内以结论为准
    The conclusion inside a reply takes precedence.
    成功结论优先于同句中的其他词;纯拒绝类回复判为失败。
  • 非结果内容不参与判定
    Ads, menus, help text and account panels do not count as sign-in results.
    此类内容统一归入「未识别」,由用户判断。
  • 结果与推广分开识别
    Genuine results are no longer discarded as advertisements.
    回复中附带的推广(如「连续服役 2 天 · 获得盒能 +50 · 邀请好友…」)不影响结论,
    结果有效即计入已签。
  • 判定结果与列表显示一致
    Verdicts and list display now agree.
  • 图片、贴纸类回复不产生签到结论
    Image and sticker replies do not produce a sign-in result.
    仅在该目标确实在等结论时处理。
  • 收藏夹摘要开关按账号生效
    The Saved Messages digest switch is evaluated per account.
    关掉的账号不再收摘要,其他账号不受影响,切换账号后设置保持。
  • 「未识别」页面长列表渲染
    The unrecognized-replies page renders long lists without blocking the UI.
  • 定时模式下的补签时间窗口
    Make-up sign-ins follow the configured schedule window in scheduled mode.
  • 学习词条按层级生效
    Learned words apply at the level they are configured.
    全局、单个 bot、单个目标三级分别生效;列表显示每条词的命中次数与最近命中时间,
    过宽的词会提示删除。
  • 本地无该 bot 记录时仍可添加目标
    Targets can be added even when the bot is missing from local chat data.
    可直接填数字 ID 或 @用户名,也可点「解析并填入」自动补全。

新增 · Added

  • 单目标固定签到时刻
    Added: a fixed sign-in time for individual targets.
    可为单个目标指定时刻(如每天 08:30),未指定的目标仍按全局窗口自动随机安排;
    指定时刻落在窗口外时自动贴到最近的窗口边界,列表中标出实际执行时间,
    当天已过则从次日生效。
  • 签到音效
    Added: sign-in sound.
    当天第一次签到成功响一次(多账号各自一次),可开关、切音色、试听,
    也可设为「全部签完再响一次」。静音、勿扰与响铃时段外不响,未响会说明原因;
    音量走通知流。
  • 目标名称补全
    Added: target names are filled in automatically.
    取不到资料的目标不再只显示一串编号,判定成功时自动记下名称。
  • 开屏当日状态摘要
    Added: startup daily summary.
    每天第一次打开 Telegram 显示今天已签、待确认、未签的数量与窗口状态。

Assets

2

10/17/2026, 2:56:07 PM

判定问题不再靠单点猜测:消息入口增至三条,互不依赖,任一失效仍有兜底,
并提供只读链路自检,一眼看出卡在模块还是 bot。
异常目标全部可处置:签到失败、按钮失效、判不出、未回复等一律给出重试与了结入口,
不再只剩「删除目标」一条路。
另新增动态表情签到、统一会话选择器,重做账号一览与统计页。

新增 · Added

  • 链路自检(全部功能 → 调试 → 自诊断 顶部)
    Link self-check.
    只读:不发送任何消息、不触发任何按钮。展示三个消息入口的挂载状态、各自累计接收条数、
    最近一条消息内容、上一次按钮回应的原文。入口全部就绪时,可将故障范围收敛到 bot 侧。

  • 第二条独立消息入口(锚点 B)
    Second, independent message entry point.
    除协议层入口外,另挂一条「消息到达」入口,两者互不依赖。客户端更换分支或大版本重构时
    不会同时失效。两条入口共用同一份判定逻辑,不存在口径分叉。

  • 「从不应答」状态单列
    "Never replies" is now its own state.
    查询类、菜单类 bot 不产生文字回复。连续 3 日无回复后显示「从不应答(这类 bot 不回文字)」,
    与「今日异常」区分,不再重复提醒。

  • 动态表情(骰子)签到
    Dice / animated emoji check-in.
    部分 bot 的签到指令为发送指定表情并结算点数。此前仅以文本形式发送,bot 不予识别。
    现针对骰子、飞镖、保龄球、足球、老虎机、篮球六种表情改用媒体通道发送,
    等价于用户手动点击表情,可正常触发动画与结算。

  • emoji 签到面板(全部功能 → 配置 → emoji 签到)
    Emoji check-in panel.
    预设四种常用表情并支持多选,亦可自行填写任意表情或指令。同一 bot 可登记多条,
    普通签到与特殊签到各成一条目标。支持 shortcode 形式自动转换。

  • 统一会话选择器
    Unified chat picker.
    三个添加入口(群签到、私聊机器人、emoji 签到)共用同一选择器。数据源分三层合并去重:
    会话列表(含全部文件夹)、本地用户表、内存用户表。支持按名称、@用户名、数字 ID 实时过滤,
    并提供「全部 / 机器人 / 群组 / 频道」分类。

  • 支持直接填写 @用户名
    Accept @username directly.
    添加入口接受数字 ID 或 @用户名。先查本地候选表(离线可用),未命中再走网络解析,
    后台执行并在解析期间给出提示。解析失败时明确告知,不静默处理。

  • 命令速查(/jmb help 手册第 4.5 章)
    Command reference.
    面板入口支持 /jmb、/j、/tgas 三种等价写法;子命令 cap、emoji、log、update
    均已支持中文等价词。

  • 捕捉模式开关
    Capture mode switch.
    捕捉武装原仅有超时与捕获成功两条解除路径。现新增命令开关与调试面板状态入口,
    并将超时由 120 秒缩短至 60 秒。

  • 「收藏夹摘要」独立开关(设置 → 通知)
    Separate switch for Saved Messages digest.
    每日摘要与连续失败告警原受「签到结果通知」总开关控制,关闭通知即无法保留摘要。
    现两者解耦,可分别关闭。

  • 统计页扩充
    Statistics page expansion.
    新增本月月历(日期点阵,标注断签日期)、里程碑(连续天数抵达进度)、
    本周与本月对比(含与上期差值)、各账号健康度徽章、主面板今日战报。

  • 签到中心改版(账号一览)
    Reworked check-in centre.
    「签全部账号」页面此前只显示一条总进度,卡住时无从判断原因。现改为按账号分行并补齐交互:
    每行新增「签到这个账号」(只签该账号,不必整轮重跑)、
    「N 条卡住 · 点此查看原因并处置」入口(有卡住项才出现);
    卡住的条目按真实原因归类展示,每条提供重试、记为已签、忽略今天、补判定词四项处置。
    进度口径同步修正:已签与已出结论(未回复、判不出、发送失败)均计入完成,
    不再因为个别目标卡住而进度永远不满;存在卡住项时进度条转为告警色。

  • 账号健康度徽章
    Account health badge.
    账号一览与统计页的每个账号行右侧新增环形徽章,环的填充比例等于该账号连续天数
    相对下一个里程碑的进度,中央显示天数。多账号时可直接横向比较,无需逐行读进度条。

  • 使用手册(12 章)
    Handbook.
    教程改写为手册体例,含命令速查全表、常见疑问自查表(症状、原因、处置)与能力边界说明。

修复 · Fixed

  • bot 已回复但判定不出、状态长期停在「已发出」
    Fixed replies that were received but never judged.
    msg_id_ 记录代码从未执行,导致引用回复型 bot 无法关联。已修正;
    同时补齐私聊短消息与消息广播两条入口,三条链路口径统一。

  • 按钮回应中的答案被误读
    Fixed misreading the answer from callback responses.
    回调回应中的文字字段才是回答,「是否弹窗」仅为布尔开关。
    旧实现于文字为空时读取布尔值,日志中出现伪答案。现仅读取文本字段。

  • 按钮反复失效后状态残留「已发出」
    Fixed "sent" marker lingering after repeated stale-button failures.
    失败计数、归类写入、结果写入三步耦合,前一步异常会跳过后续步骤。
    现三步各自独立,且无论成败均清除「已发出」标记。

  • 已签目标半小时内仍被判为「在等结论」
    Fixed stale "sent" marker persisting after a successful check-in.
    收尾清理遗漏发送时刻。

  • 按钮型目标收到图片或贴纸被误报「回复判不出」
    Image-only replies no longer reported as unreadable.
    按钮响应常为结果图,文字层仅可读到「图片」。此类目标收到回复即视为已响应。

  • 命令菜单被误判为签到结果
    Command menus no longer treated as results.
    首次交互常推送「可用命令 … 使用说明」。现单独识别菜单类回复并跳过。

  • 目标列表末尾无法滚动到底
    Fixed the last row of the target list being unreachable.
    高度依赖布局早期读数,且筛选、排序、切换页签后未重新计算。
    现依据对话框内容区实测高度复核,且仅在收窄方向生效,避免布局抖动。

  • 全部目标显示「已发出 4999 分钟仍未结案」
    Fixed all targets appearing stuck with an absurd elapsed time.
    发送时间戳无日期语义且跨天不清理,历史残留被当作当日发送记录。
    「需处理」聚合改与状态判定同一口径:仅当日确曾发送且超过时效才计为未结案。
    新增构建门禁,防止同类写法再次出现。

  • 模块自身发出的指令被收进「待添加」
    Fixed self-sent commands being learned as new candidates.
    文本指令从未登记为自身请求,按钮登记亦不区分账号。现文本与按钮均按
    账号、对象、内容前缀登记,命中即跳过并消费登记,避免长期占用。

  • 点击入口后整个面板消失
    Fixed the whole panel closing after using the chat picker.
    对话框栈超限时按入栈顺序关闭最早项,即主菜单本身。现保留栈底层,仅回收中间层。

  • 定时日志与实际执行时间不符
    Fixed misleading timer log wording.
    延迟数小时仍记录为「到点签到」。现如实标注计划时刻与实际延迟;
    延迟超过 30 分钟时额外告警,提示后台限制的排查方向。

  • 纯表情口令在群聊中无法学习
    Fixed pure-emoji commands not being learned in groups.
    装饰符剥离会丢弃全部表情,导致口令判定为空。现按码点识别符号类字符。

  • 添加目标后弹出「已发起签到」
    Removed redundant toast when adding a target.
    添加流程成功时不再提示,失败类提示仍然保留。

  • 宽松模式下非签到回复被判成功
    Loose mode no longer accepts replies for targets not sent today.
    宽松模式原对任意回复判定成功,浏览其他菜单亦会触发提示。
    现要求该目标当日存在发送记录。

优化 · Improved

  • 错误处置统一收敛
    Unified handling for abnormal states.
    签到失败、按钮失效、回复判不出、bot 未回复、结果未知、判定已关、已放弃、退避中、
    从不应答等状态,一律提供「重试、记为已签、忽略今天」处置入口,
    不再出现仅可删除目标的情形。该约束已固化为构建门禁。

  • 需处理口径统一
    Unified "needs attention" criteria.
    聚合条计数、目标列表筛选、状态判定三者此前各自实现,存在口径差异。
    现收敛至单一判据。

  • 手动触发的闸门修正
    Manual triggers no longer blocked incorrectly.
    手动重试与测试此前受「待确认不再自动重发」限制,导致无法重新发送。现手动路径放行。

  • 跨账号复制
    Cross-account copy.
    群与频道目标复制失败已修正;访问凭据一并携带,目标账号无需预先与该 bot 会话。

  • 多账号回复判定
    Multi-account reply attribution.
    全账号签到时,非当前账号的回复此前无法归因,状态停留于「已发出」。

  • 界面一致性
    UI consistency.
    处置面板改为自持,处理完毕停留在本窗口;进度条分母口径修正;
    删除确认改用模块内对话框样式。

  • 单账号签到无反馈、进度分母虚高
    Fixed missing feedback for single-account signing and inflated progress denominators.
    「签到这个账号」触发后界面无变化,用户无法判断是否已发出;进度分母将冻结与排除的
    目标一并计入,导致进度条无法到达满值。现两者均已修正。

  • 文案与提示语
    Copy and prompts.
    界面文案中英映射补齐;签到结果提示按账号聚合,同类提示设去重窗口。

Assets

2

10/13/2026, 12:38:01 PM

1.6.6 (132) — 2026-10-13

多账号用起来更省心了:配置各管各的,复制过去就能签,删除也不会再连累别的账号。
顺带把 AyuGram、Nnngram 接进来,一键多挂两个客户端。

新增 · Added

  • 支持 AyuGram、Nnngram 客户端
    AyuGram and Nnngram clients are now supported.
    作用域里已加入 com.radolyn.ayugram 与 xyz.nextalone.nnngram,
    装上后在 LSPosed 里勾选对应客户端即可。

优化 · Improved

  • 多账号配置各自独立
    Per-account settings.
    定时、窗口、补签、主题、按钮学习、判定词、通知等,一个账号一份,互不干扰。
  • 复制目标更省事
    Copying targets is now one step.
    复制到别的账号后可以直接签到,不用再手动挨个打开对话。
  • 多账号下更流畅
    Smoother with multiple accounts.
    优化了几处配置读取,切换账号、打开面板更跟手。
  • 应用图标与说明
    App icon and description.
    LSPosed 模块列表里正常显示。

修复 · Fixed

  • 设置保存更可靠
    Settings now persist.
    重启 Telegram 后设置保持原样。
  • 删除目标范围更准
    Deleting a target only affects the current account.
    只作用于当前账号。
  • 切换账号显示更准
    The target list now matches the current account.
    目标列表与当前账号严格对应。

Assets

2

10/10/2026, 7:35:46 AM

TGAutoSign v1.6.5 (131)

一半在修不报错的毛病,一半在把界面收拾干净。


这版在修什么

有三类问题最麻烦 —— 它们不报错,你只是隐约觉得哪里不对。

「手动加机器人点了没反应」就是其中之一:不是没反应,
是它被一道只该管"自动学习"的闸门拦下来了,而且悄无声息。

「取不到会话数据、要先去发一句话」也是同类 ——
最后那层兜底从来没有真正工作过,平时感觉不到,进程被回收时才露出来。

界面这边则是攒了一阵子的:日志框比目标列表矮一半、切过去还闪一下、
群目标显示成一串数字。

签到

  • 手动填机器人 ID 点「添加并签到」没反应
    你亲手填的指令本来该直接加进去,但模块把它当成"自动学来的按钮"过了一道确认闸。
    指令只要不像签到词(比如 /qd、自定义口令)就被拦下,而且没有任何提示。
    现在手填的一律直接添加,真失败了也会明确告诉你原因。

  • 「取不到会话数据,去发一句话才行」
    最后一层兜底调的方法,在被调用的类上根本不存在 —— 从写下那天起就没成功过。
    平时内存里有缓存所以感觉不到,一旦进程被系统回收(凌晨最常见),就只能报这句话。
    现在这层兜底真的能用了。

  • 同一个群里挂第二个签到目标,会把第一个覆盖掉
    群目标的编号以前是写死的,同群第二个直接顶掉第一个,
    第一个的签到记录还会变成没人管的残留。

  • 同一个群,少写一段 ID 加过一次,就变成两个目标
    这种重复现在会在目标列表里标记出来(重复?),一眼能看见。

  • 同一个群里两个目标,回复永远判不出
    以前多个候选时干脆不判、也不缩小范围,于是永远卡住。
    现在如果其中一个明显是刚发的,就认它。

界面

  • 群目标终于显示群名了
    「今日计划」里以前只显示一串数字,现在显示群名,
    并带「群 / 机器人」「回调 / 指令」小标记,一眼分清是什么。

  • 日志框比目标列表矮一半,没日志时更矮
    高度以前按屏高写死,且内容少还会再缩。现在和列表一样高,空日志也一样。

  • 切到日志页会闪一下 —— 高度先给一次、之后又改三次,中间那一下就是闪

  • 日志的「易懂 / 详细」记不住 —— 以前只改内存,重开就回到默认档

新增

  • 添加目标改成两步 —— 先选「在哪里签」,再选「它要什么」,
    每项都带真实例子。以前三步混在一起,「群 + 点按钮」这种组合没地方放。

  • 数据里多了「签到统计」 —— 累计天数、连续、近 7 天 / 近 30 天,
    以及今天的结果分布(已签 / 失败 / 判不出 / 没回复 / 按钮失效 / 待签),
    还会列出"哪些目标判不出来、为什么",直接告诉你该去补哪条判定词。

  • 数据里多了「清空日志」和「数据清理」
    数据清理能手动触发一次残留状态清理 —— 那些残留会让重新添加的目标一加就显示已签。

  • 目标管理按用途分组,删除单独隔开
    「签全部账号」是会立即往外发消息的动作,不再和改配置的按钮混在一起;
    「删除目标」用红色描边并写明不可撤销,不再和「添加」长得一样。

  • 8 套配色,点了当场生效

  • 签到成功后的动效 —— 回调按钮是闪电脉冲,文本指令是进度环;
    状态条会呼吸,列表是依次落入而不是整片刷出来


安装

覆盖安装即可,签名与历史版本一致。已登录的账号、目标与签到记录都会保留。

1. 安装 APK
2. 在 LSPosed 里启用「TGAutoSign」并勾选对应客户端
3. 强制停止该客户端后重新打开
4. 在任意聊天输入 /jmb 打开管理面板

用第三方客户端(Nagram / Nagram XF / ExteraLess / Mercurygram / Turrit)时,
记得在 LSPosed 作用域里把它也勾上 —— 默认只勾了官方版。

校验

sha256sum TGAutoSign-*.apk

与下方 sha256sum.txt 比对。只从本仓库 Release 与
源码仓库 下载。

Assets

2

10/8/2026, 2:06:18 PM

TGAutoSign v1.6.4 (130)

群里签到终于能认出来了。


这版在修什么

之前群签到一直有个别扭的状态:消息发出去了,机器人也回了,模块却说没等到回复。
于是永远显示未签,第二天还得手动补。

这版把整条链路走通了。

另外修了一批会让你不知不觉断签的判定错误 —— 这类问题最麻烦,因为它不会报错,
你只是某天发现漏了一天。

群聊签到

  • 机器人回复了,模块却说没等到
    群聊和私聊的消息格式不一样,模块在两处地方按私聊的格式去读,读不到就整段跳过。

  • 群里别人签到,算到了你头上
    上一版为了照顾「手动发起的签到」放宽了判断,但那个条件只看群里挂了几个目标,
    不看是不是你发的。

  • 群 ID 少写一个「100」,这个群就永远认不出
    超级群的完整 ID 是 -100 开头,少写一段也能存进去、也能发得出去,
    但机器人回复永远对不上号。现在两种写法都认,不用删掉重加。

  • 机器人说「次数已达上限」,被当成没签上
    会这么回的机器人,多半是在说你今天已经签过了。以前判成没成功,模块就继续
    按重试节奏发 —— 同一句话反复刷,反而容易把账号刷进机器人的风控。
    现在这种算签到成功。

判定

  • 机器人发个「签到规则」都可能被判成签到成功
    这类话里常带「积分」「奖励」「已」这些词,跟「签到」凑在同一句里,以前就算
    签到成功了 —— 当天不再补发,第二天才发现断签。

  • 「签到失败,详见规则」被判成无法判断 —— 带「说明」「规则」的回复里也可能藏着真正的失败

  • 「不是签到成功」这种带否定的话会被判错

  • 「已封禁 / 禁止参与」被当成无法判断 —— 这类明天再试也没用,应该直接算失败

  • 自己发的签到,跑到「未识别回复」里等你判断

界面

  • 「未识别回复」页重做
    以前满屏「判定词」「加入成功词」「全局/这个bot/这个目标」,看完不知道该干嘛。
    现在整张卡就一句人话:机器人回复了这段 —— 看到它算签到成功吗?
    按钮也说清了动作,长回复默认收起,生效范围改成一行下拉并写明后果。

  • 点一下卡一下 —— 每点一次都要把整页重做一遍,现在只动被点的那一条

  • 打开日志会闪一下 · 目标列表和统计页最后一行永远看不到 ·
    待添加显示「1 个」,点进去有好几个

  • 被拦下的按钮直接消失,找不回来 —— 现在会进待添加列表并写明原因

其他

  • 点按钮不再「点什么学什么」 —— 查余额、点返回也会被学成目标的问题
  • 群里聊到「签到」两个字也被收集 —— 群聊现在额外要求那句话像一条口令
  • Turrit 装上模块却不生效 —— 适配名单有三处,其中一处漏了它
  • 更新下载更稳了 —— 跳转有界、写入先标记、校验缺失会明确告诉你「未校验」

安装

  1. 下载下面的 TGAutoSign-v1.6.4-release.apk
  2. 覆盖安装(与旧版同签名,不会丢数据)
  3. 彻底重启宿主客户端(Telegram / Nagram / Turrit 等)—— 模块必须重启才生效
  4. 任意聊天发 /jmb 打开管理面板

核对完整性:下载后比对 sha256sum.txt 里的值

sha256sum TGAutoSign-v1.6.4-release.apk

支持

只从本页或源码仓库 Releases 下载。第三方站点的转载包请用上面的 sha256 自行比对。

完整更新日志 →

Assets

2

10/4/2026, 9:12:40 AM

TGAutoSign v1.6.3 (129) — 2026-10-05

重磅升级~~

本次修复了按钮学习的核心缺陷 —— 类型判据大小写敏感导致运行时判定静默失败,表现为「有时能学到、有时学不到」;同时修复了官方新版客户端中回调类被移除所造成的学习入口失效。界面进行了一轮系统性重做,确立三级圆角、三档底色、四级按钮的视觉规范,并把边界表达从描边改为底色明暗差。另有规则测试器、Turrit 客户端适配等新增。


修复

  • 按钮学习失效(本版最重要) —— 类型判据大小写敏感。声明类型是 TL_keyboard$KeyboardButton(大写 K),运行时实例却是 TL_keyboard$TL_keyboardButtonCallback_layer228(小写 k),于是 hook 装得上、日志一切正常,用户真点按钮时却取不到按钮对象,静默不学习。
  • 气泡内按钮的回调类在官方版里已不存在 —— 实测官方 12.10.6(21570 个类):ChatActivity 与 ChatMessageCellDelegate 整个类都不在、字符串 didPressBotButton 0 命中。旧实现按名字精确匹配,必然失效。
  • /help 是句空话 —— 引导提示写着「/help 查看教程」,而代码里只实现了 /jmb,用户照发毫无反应。
  • 群目标当天重发 13 次 —— 「已发出」凭据被自己删掉,下一轮又当作没发过。
  • 「请求发出」被当成「签到成功」 —— 实测某目标按钮全程点不动,当天仍被标记已签。
  • 漏签根因:判定与落盘不同源
  • 无限递归导致 Telegram 卡死(ANR) —— 模块自发请求触发了自己的 hook。
  • 每日摘要永远发不出 —— 唯一触发点是「签到轮次结束」,窗口结束后不再有新轮次就再也不检查。
  • 另有:文字冒出「1970-01-01」、列表「少一行」与「整块空白」、统计页静默丢条目、开关看起来全是关的、切 Tab 后面板消失、易懂档日志顺序倒置、日历摘要连签虚高等。

变更

  • 界面整体重做:从「到处是框」改为「靠底色分层」 —— 确立三级圆角(容器 14dp / 控件 8dp / 徽章药丸)与三档底色,边界改由底色明暗差表达而非描边。
  • 按钮分四级 —— 实心主操作(仅保存/确认)· 安静(测试/自检/查看)· 幽灵(主界面「立即签到」)· 普通浅底。
  • 日间色调转暖,浅色模式改用实色分层(半透明叠浅底必然发灰)。
  • 设置页:多卡折叠 → 顶部锚点条 + 单卡。
  • 条目操作菜单:分组卡片 + 唯一主操作。
  • 编辑目标:标签外置 + 模板 chip 按宽度自动折行。
  • 排除管理:改为 ①②③④ 四步工作流,新增规则条数实时计数。
  • 最近动态:时间定宽左列 + 图标槽 + 单行截断。
  • 统计页重做(全部 Canvas 手绘):环形进度 · 90 天热力图 · 趋势折线 · 星期分布 · 多账号对比。
  • 账号一览改版:实时进度条 + 扫描头 + 呼吸脉动。

新增

  • 规则测试器 —— 粘贴一段机器人回复,用和实际签到完全相同的判定链看它会被判成什么。
  • Turrit 客户端适配(org.telegram.group)。
  • 外部通知(ntfy / Bark)与自动备份。
  • /help 命令、教程全面重写。

支持客户端:Telegram(Play / 官网版)· Nagram · Nagram XF · ExteraLess · Nekogram · Mercurygram · Turrit

校验:sha256 见下方 sha256sum.txt

需要 root + LSPosed(libxposed API 102 或更新)。不支持无 root 设备、Telegram X。

Assets

2

9/30/2026, 11:36:53 AM

TGAutoSign v1.6.2 (128) — 2026-09-30

🇨🇳 国庆节了,作者本来想躺平的。

结果早上一杯咖啡打开群,看到有人反馈"签上了还是判不出",
有人说"主菜单都被自动学走了哈哈哈哈",
还有一句轻飘飘的 "要不你先修修,修完再歇"。

于是这一天就变成了:判定顺序推翻重写、界面框架捅了个对穿、日志加了人话翻译层、
词表扩到能认「恭喜签到+1」这种花活、设置页从六屏卷成一屏、导出导入修到能真正"换机不丢配置"。

全改完一看,单测 334 条跑通了,天也黑了。国庆快乐,各位签到愉快,
要是觉得还行麻烦点个 star,这比咖啡管用。


判定不再漏签

  • 判定顺序修复:之前"未签到成功"里的"签到成功"会先命中 → 失败变成功,无声无息断签了。现在失败词排在最前面
  • 新增组合判定:bot 回"✅ 今日打卡 +1"、"签到获得 5 积分"这类花式措辞,不再判不出
  • 扩充 30+ 词条:签到已完成/打卡已完毕/恭喜签到… 统统能认
  • 进度提示提权:"正在签到,请稍后…"不会再被当成已签成功,真正的结果要等回复判定

界面重做(所见即所得)

  • 日历 6 种样式:方角斜纹格 · 圆角发光 · 硬方波 · 切角八边形 · 圆点外环 · 竖向柱条 — 设置里实时预览,点击即换
  • 今天格子脉冲动画:四角括号呼吸扩散,一眼锚定"现在"
  • 日历摘要:那一行常年看不懂的"1 = 13 天前…"终于变成了 连续 13 天 13/14
  • 状态特效:回调签到 = 实心闪电能量爆发(白热化+缩放+冲击波),指令签到 = 环形涟漪扩散 — 比原来转圈好看太多

日志终于说人话了

  • 默认**"易懂"模式**:技术内部日志完全隐藏。"回复判定命中「签到成功」" → 签到成功,"bot 没回" → 机器人没回复,稍后自动重试
  • 主页"最近动态"也走同一条翻译线,全矢量图标不含 emoji
  • 可随时切回"详细"看原始日志

设置页终于不迷路了

  • 五个分区折成四张折叠卡(全部默认收起),标题右边直接标注当前值
  • 首屏就能看完全部选项,不用划 6 屏到底才找到保存按钮

细节优化

  • 全签完不再傻傻提示"下次签到 N 分钟后" → 直接 今日已全部完成
  • 徽章不再无限闪烁,就静态绿/灰,安静地存在
  • 主页"下次签到"从警戒琥珀色变为青色 — 这个倒计时本身是无害的,不该吓人

Bugfix

  • 修复导入后目标为 0:白名单漏了 cfg_/timer_/sign_days 等关键键,换设备导配置全丢
  • 修复导入提示误导:现在如果数据落在别的账号,会明确告诉你切过去看
  • 降噪:"账号实况"不再每次都黄色播报,正常时静默,只在账号不匹配时才警告
  • 出包事故修复:上次发给用户的包 resources.arsc 被压缩导致全部装不上(root 测不出的坑),本版已修 + 新增自动校验门禁

测试与门禁

  • 纯逻辑单测 334 条(原 292 条,新增 42 条)
  • 六道门禁全绿:版本五查 · CHANGELOG 双语 · 界面文案双语 · 接线 · 单测 · README 同步
  • 新增门禁:check-ui-i18n.py — 扫描界面中文串自动比英文映射,缺一条直接 FATAL

安装

  • GitHub Releases(推荐) · 源码仓库
  • 直接覆盖安装,签名与 v1.0 起一致,不丢数据
  • 如果装过 1.6.5/1.6.6 测试包(versionCode 131/132),需先「导出配置」→ 卸载 → 安装本版 → 导入配置

Assets

2

9/28/2026, 4:43:03 AM

承接 1.6.0 的账号隔离重构。本版改动全部源自用户实际反馈与线上日志复盘,
覆盖签到状态机、按钮学习过滤、账号槽位遍历三条主线。
共修复 9 项问题、新增 2 项能力,每项均落到可验证的判定逻辑上,
并固化为回归用例(单测 174 → 297 条)。

This release continues the account-isolation refactor from 1.6.0. Every change
originates from user reports and log reviews, spanning three main areas: the
sign-in state machine, button-learning filters, and account-slot iteration.
It fixes 9 issues and adds 2 capabilities, each anchored to verifiable decision
logic and locked in by regression tests (unit tests: 174 → 297).

修复 · Fixed

目标列表自动增殖:模块自身发起的回调被误判为用户学习
回调按钮的 data 由 bot 每次推送时重新生成,与目标中保存的旧值不一致;
请求发出后网络层按 data 精确匹配无法定位既有目标,遂将其作为用户新点击的按钮
写入学习流程,形成自我繁殖。现于发送前登记请求指纹,命中即跳过学习。

Targets multiplied automatically: the module's own callbacks were misread as user learning.
Callback button data is regenerated by the bot on every push, so it differs from the value
stored for the target. After the request was sent, the network layer matched targets by exact
data equality and failed to locate the existing target, routing the tap into the learning flow
as a new user action and producing self-replication. A request fingerprint is now registered
before sending, and learning is skipped when it matches.

「已发出」状态回退导致重复签到
回调类目标发出后仅写入乐观标记,若 bot 将结论置于 callback answer 而不另行发消息,
回复判定永不触发;超时后状态回退为「待签」并被重新排期。
现改为超时转「待确认」,复用既有处置入口。

Sent-state rollback caused duplicate sign-ins.
A callback target only writes the optimistic marker when sent; if the bot places its verdict in
the callback answer without sending a separate message, the verdict never arrives, so after the
timeout the state reverted to "pending" and the target was re-armed. It now moves to
"needs confirmation" instead, reusing the existing action entries.

非签到按钮被纳入学习范围
模块曾将某 bot 的支付按钮学习为签到目标并实际触发,条目持续增长。
现新增独立于宽松模式的硬性闸门,判据遵循「不确定即放行」原则。

Non-check-in buttons entered the learning scope.
The module learned a bot's payment buttons as check-in targets and actually triggered them, with
entries growing continuously. A hard gate independent of loose mode now blocks them, following a
"pass when uncertain" principle.

网络层学习的账号归属错误
该路径在异步回调中读取「当前账号」,账号可能已切换。
现改用本次网络请求所属账号。

Incorrect account attribution in network-layer learning.
That path read the "current account" inside an asynchronous callback, where the account may
already have changed. It now uses the account that owns the network request.

账号索引钳制范围过宽
索引此前被钳制至「已登录账号数 − 1」,而宿主返回的值并非账号序号
(部分客户端返回 7、9 等合法索引),导致读取错误分区。
现归一化仅处理负值,真实槽位由 SharedConfig.activeAccounts 读取。

Account index clamping was too broad.
The index was clamped to "signed-in count − 1", but the value returned by the host is not an
account ordinal (some clients return legitimate indexes such as 7 or 9), causing the wrong
partition to be read. Normalisation now only handles negative values, and real slots come from
SharedConfig.activeAccounts.

停用账号仍执行签到
账号停用状态此前未纳入统一签到判定闸,导致开关未实际约束签到行为。
现并入统一闸并置于判定序列最前,手动操作亦不放行;
同时停用账号不再维持心跳高频轮询,定时巡检不再为其排入任务。

Disabled accounts still performed sign-ins.
The disabled flag was not part of the unified sign-in gate, so the switch did not actually
constrain sign-in behaviour. It now feeds the unified gate and is evaluated first, and manual
actions do not bypass it either. A disabled account also no longer keeps the heartbeat polling
at high frequency, and the scheduled sweep no longer arms tasks for it.

批量签到重复发送已签目标
两个批量入口均传递 force=true,其豁免同时绕过了「今日已签」判定,
导致当日已签目标被重新发送;定时模式下全天计划被一次性发出。
现将 manual 拆分为两个维度,新增 skipSigned 用于批量语义;
单目标「立即签到」保留强制重发能力。

Batch sign-in re-sent targets already signed.
Both batch entry points passed force=true, an exemption that also bypassed the already-signed
check, so targets already signed that day were re-sent; with the timer enabled the entire day's
plan was issued at once. manual is now split into two dimensions, with a new skipSigned
carrying the batch semantics; the single-target "sign now" retains forced re-send.

账号一览遗漏非连续槽位账号
账号遍历采用连续区间而非真实槽位。部分客户端返回非连续索引时,
界面显示的是空分区,真实数据未被遍历覆盖;启动时的孤儿状态键清理
采用相同遍历方式,导致非连续槽位账号的中间状态被误删。
现 11 处账号遍历统一改为真实槽位,并新增构建门禁。

The account overview omitted accounts on non-contiguous slots.
Account iteration used a contiguous range instead of real slots. When some clients return
non-contiguous indexes, the UI read an empty partition while the real data was never visited;
the startup orphan sweep used the same iteration, so intermediate state for those accounts was
wrongly deleted. All 11 account iterations now use real slots, guarded by a new build gate.

明确标识签到的按钮被过滤拦截(上一版引入的回归)
非签到按钮过滤此前完全以 data 为判据,当按钮文案明确为签到、
而 data 恰落入随机 token 特征区间时被误判拦截。
现判据调整为文案优先,命中签到白名单即无条件放行。

Buttons clearly labelled as check-ins were blocked (regression from the previous build).
The non-check-in button filter relied entirely on data, so when a label clearly indicated a
check-in but its data happened to fall within the random-token characteristics, it was wrongly
blocked. The criteria are now label-first: a label matching the check-in allowlist passes
unconditionally.

新增 · New

新增两个适配客户端,并修正默认作用域
tw.nekomimi.nekogram(Nekogram)与 it.belloworld.mercurygram(Mercurygram)
纳入白名单与作用域清单,已完成真机注入验证。
同时修正一处自 1.6.0 起存在的配置不一致:module.prop 的 scope= 仅列出 3 个包,
而 scope.list 为 8 个;staticScope=true 时 LSPosed 以 module.prop 的 scope=
作为默认作用域,导致新装用户仅勾选这 3 个包,
使用 Nagram XF、NagramX 等客户端的用户在作用域列表中找不到自己的客户端。
现三处保持一致,均为 10 个包。

Two more supported clients, and a corrected default scope.
tw.nekomimi.nekogram (Nekogram) and it.belloworld.mercurygram (Mercurygram) joined the
whitelist and the scope list, with real-device injection verified. A configuration inconsistency
present since 1.6.0 was also corrected: module.prop's scope= listed only 3 packages while
scope.list had 8. With staticScope=true, LSPosed treats module.prop's scope= as the
default scope, so new installs only had those 3 ticked, and users of Nagram XF, NagramX and
similar clients could not find their client in the scope list. All three locations are now
consistent at 10 packages.

误学条目清理日志
启动时清理已误学目标将记录日志,列出被移除条目及其判定原因。

Cleanup logging for mislearned entries.
Startup cleanup of mislearned targets now logs each removed entry and the reason for removal.

工具 · Tooling

  • README 更新日志生成器支持成块对照格式 — 此前仅识别内联格式,导致英文段落无法生成;现同时支持两种格式

  • 新增「README 更新日志同步」构建门禁 — 将发布流程中的手工步骤转为构建期校验

  • 新增「账号遍历必须使用真实槽位」构建门禁 — 防止连续区间遍历账号的写法再次出现

  • 纯逻辑单测 174 → 297 条 — 新增五组用例,用户反馈的每个现象均已固化为回归用例

  • README changelog generator supports block-style bilingual entries — it previously
    recognised only the inline form, so the English section could not be generated; both forms are
    now supported

  • New build gate: README changelog must stay in sync — turns a manual release step into a
    build-time check

  • New build gate: account iteration must use real slots — prevents contiguous-range account
    iteration from reappearing

  • Pure-logic unit tests grew from 174 to 297 — five new groups; every reported symptom is now
    a regression case

支持的客户端 · Supported clients

org.telegram.messenger · org.telegram.messenger.web · fork.risin42.nagramx ·
nu.gpu.nagram · nu.gpu.nagramx · nu.gpu.nagram.web · com.exteraless.app ·
xyz.nextalone.nagram · tw.nekomimi.nekogram · it.belloworld.mercurygram

校验 · Verification

sha256: aa23506ddff362da7b2a775ed9c039beb13622f6d9c8cb648dd49eb312982a0b

完整更新日志 · Full changelog:https://assets.lsposed.org/raw/wlmosv-png/TGAutoSign/master/CHANGELOG.md?sign=0f0f6329bf68ab61f4b2da54e8c0f009&t=6a03bf00

Assets

2

9/26/2026, 3:30:04 AM

TGAutoSign v1.6.0 (123)

累积更新:自 1.5.8 以来的全部改动合并发布,含一次账号隔离体系重构。
Cumulative release: everything since 1.5.8, including an account-isolation refactor.

📦 下载 · Download

文件 / File SHA-256
TGAutoSign-v1.6.0-release.apk fc80666cee1565b6d042c3bf23757ad24763a510bc072136bdd7ee32c20d5d45
sha256sum.txt 校验文件 / checksum file

大小 / Size:468,023 B · 证书 / Cert:af5524cd…25c8(与历史版本一致,可直接覆盖安装 / same as previous releases, in-place update supported)

支持的客户端 · Supported clients:官方版 org.telegram.messenger · Nagram xyz.nextalone.nagram · ExteraLess com.exteraless.app


中文

🏗️ 架构更新

自 v1.0 以来最大的一次内部重构。无用户可见行为变化,但它是本次大量 bug 得以根治的前提。

账号隔离从「约定」变成「结构」

重构前,代码里有 75 处读「当前账号」、67 处读无参账号前缀 —— 全部读宿主的静态字段。任何一处出现在异步回调或延迟任务里,就会串号。

本次引入不可变账号快照:发起任务时锁定账号,执行时只认快照,从结构上杜绝串号,而不是靠每一处记得判断。

核心文件拆出 6 个职责单一的类

类 职责
Keys 存储键唯一真相源
AccountManager 账号解析与快照
PrefsStore 持久化与落盘策略
SignStateStore 签到状态读写与不变式
SettingsRefs 设置面板控件容器
SignLogic 无 Android 依赖的纯逻辑层

纯逻辑可单测:时间窗、退避、回复判定、签到闸门已与 Android API 解耦,单测从 115 条扩到 174 条,新增用例逐条对应本次修掉的 bug。

其它:存储键名收敛到唯一真相源(此前散落 4 处);落盘策略显式化(此前 244 处直接访问存储,apply/commit 无任何规则)。


🔧 本版修了什么

一、账号串号:六条路径全部改为锁定账号(重要)

病根只有一个 —— 在异步回调或延迟任务里读「当前账号」。 回调执行时用户可能已经切到别的账号,于是拿新账号去发旧账号的目标。

覆盖六条路径:定时任务(延迟 1~5 分钟)、回调签到等面板(异步最长 8 秒)、面板事件补签(延迟 700 毫秒)、网络层学习、收藏夹告警、结果归因与汇总通知。

此前用户报告「账号1自动给只有账号2配置的 bot 发了消息」,即由此而来。

二、越界保护反而读到别人的分区(重要)

v1.5.8 加了一道保护:读到超出已登录数的索引就按 0 处理。前提是错的 —— 实测部分客户端(如 Nagram XF 登录 4 个账号)selectedAccount 会读到 7、9,那些是合法索引,数据就存在 acc9_ 里。被改成 0 之后读的是另一个账号的分区。

已回退:索引原值使用,只有负值才跳过。

三、失败目标被反复重签(重要)

机器人连回两条消息是常态,两条消息的判定结果会互相抵消:

第 1 条「正在签到,请稍后…」→ 宽松模式算成功 → 重试计数清零
第 2 条「请先关注」        → 算失败 → 重试计数 +1 = 1

计数永远在 0/1 震荡,涨不到上限 → 每一轮都被重新选中。实测有目标一天被签了 8 次。

现在加两道熔断:

  • 确定性失败词(请先关注 / 活动已结束 / 已过期 等)→ 命中即当日停止
  • 当天独立计数(不受"成功清零"影响)→ 累计 3 次后当日停止

跨天自动恢复。

四、同一账号重复排期发送(重要)

排下一次定时任务时只检查了「内存中是否正在发送」,漏了「已发出但还没等到结论」。内存状态在进程重启后是空的 → 重启后一遇网络恢复等触发,就把同一目标再排一次。

现在两半一起查,统一到一个判断入口。

五、签到可靠性

  • MESSAGE_ID_INVALID 不再撤销已签(按钮过期 ≠ 签到失败)
  • 三处"把成功当失败"全量清查(BOT_RESPONSE_TIMEOUT / FLOOD_WAIT / 请求层错误)
  • 启动 30 秒窗口不再吞面板事件(以前会导致"机器人秒回,模块却一直走兜底")
  • 按钮连续 3 次过期熔断,日志给出出路(改「文本指令」目标)
  • 不回结果的机器人 3 次后标「待确认」,不再每天白等超时

六、状态与配置

  • 「待确认」池按账号隔离,旧数据自动迁移(已有内容不覆盖)
  • 「待确认」曾是死状态:看得到、点不动(现在给出重试 / 忽略 / 删除三个动作)
  • 清空配置会残留状态,导致重新添加的 bot 状态复活
  • 清空配置会误删账号级待确认池
  • 跨端同步的配置在本机不生效

七、界面与日志

  • 设置界面保存时闪退
  • 打开「运行日志」会卡顿
  • 启动日志只落盘第一行
  • 冷启动 30 秒内点 bot 按钮毫无反应
  • 日志链路编号带账号前缀(多账号并行时不再撞号)
  • 热重载后两个实例并行跑
  • 跨天窗口下补签时段变成全天
  • 启动日志数字标题、花体字渲染错误

✅ 验证

项目 结果
编译(javac --release 17) ✅ 196 class
纯逻辑单测 ✅ 174 / 174
i18n 门禁 ✅ 614 条字典,598 UI 出口
更新日志双语 ✅ 37 条中 / 37 条英(一条不少)
版本号五查 ✅ 1.6.0 (123)
装机回读校验 ✅ 设备取回 APK 重算 sha256,逐字节一致

⚠️ 升级须知

  1. 直接覆盖安装,无需卸载(证书与历史版本一致)
  2. 装完请强停一次 Telegram 再打开,确保新代码生效
  3. 配置、目标、已签记录全部保留,无需重新配置
  4. 若你之前用过「待确认」功能,旧数据会自动迁移到账号 1

English

🏗️ Architecture

The largest internal refactor since v1.0. No user-visible behaviour change, but it is the precondition that made this release's bug fixes possible.

Account isolation moved from convention to structure

Before the refactor the codebase read the "current account" in 75 places and the no-arg account prefix in 67 — all reading a host static field. Any one of them sitting inside an asynchronous callback or delayed task caused crossover.

An immutable account snapshot is now used instead: the account is pinned when work is started and only the snapshot is honoured when it runs, preventing crossover structurally rather than relying on every call site remembering to check.

Six single-responsibility classes extracted from the core file

Class Responsibility
Keys Single source of truth for storage keys
AccountManager Account resolution and snapshot
PrefsStore Persistence and flush policy
SignStateStore Sign-in state I/O and invariants
SettingsRefs Settings panel control container
SignLogic Pure logic with no Android dependency

Pure logic is now unit-testable: time windows, backoff, reply verdicts and the sign gate are decoupled from Android APIs. Assertions grew from 115 to 174, each new case mapping to a bug fixed here.

Also: storage keys consolidated into a single source of truth (previously scattered across four places); flush policy made explicit (previously 244 direct storage accesses with no rule for apply versus commit).


🔧 What was fixed

1. Account crossover — all six paths now pin the account (important)

There was a single root cause: reading the "current account" inside an asynchronous callback or a delayed task. By the time the callback runs the user may have switched accounts, so a new account sent an older account's target.

Six paths were affected: scheduled tasks (1–5 min delay), callback sign-in waiting for a panel (up to 8 s async), panel-triggered make-up sign-in (700 ms delay), network-layer learning, saved-message alerts, and result attribution plus summary notifications.

This is what produced the report "account 1 automatically messaged a bot that only exists on account 2".

2. Out-of-range guard read another account's partition (important)

v1.5.8 added a guard that coerced an index beyond the signed-in count to 0. The assumption was wrong — on some clients (e.g. Nagram XF with four accounts) selectedAccount reads 7 or 9, and those are legitimate indexes whose data lives under acc9_. Coercing to 0 made the module read another account's partition.

Reverted: the index is used as-is, and only negative values skip the round.

3. Failed targets were signed over and over (important)

Robots commonly send two replies whose verdicts cancel each other out:

Reply 1 "signing in, please wait"  → loose mode counts it as success → retry counter reset
Reply 2 "please follow first"      → counts as failure → retry counter +1 = 1

The counter oscillates between 0 and 1, never reaching the cap, so the target is re-selected every round. One target was signed 8 times in a single day.

Two circuit breakers are now in place:

  • Permanent-failure phrases (follow-first / event ended / expired) → stop the target for the day immediately
  • A day-scoped counter (immune to the success reset) → stop after 3 failures

Both reset automatically the next day.

4. Duplicate scheduling within one account (important)

Scheduling the next timed task only checked "is a send in flight in memory", missing the other half: "already sent, still awaiting a verdict". In-memory state is empty after a process restart, so the first trigger — such as network recovery — queued the same target again.

Both halves are now checked together behind a single entry point.

5. Sign-in reliability

  • MESSAGE_ID_INVALID no longer revokes the sign-in (a stale button is not a failed check-in)
  • Three more places that treated success as failure (BOT_RESPONSE_TIMEOUT / FLOOD_WAIT / request-layer errors)
  • The 30-second startup window no longer drops panel events (this used to cause "the bot replies instantly while the module keeps falling back")
  • Three consecutive stale buttons trip a circuit breaker, and the log states the way out (convert to a text-command target)
  • Silent robots are marked "pending" after three attempts instead of waiting out a timeout every day

6. State and configuration

  • The "pending" pool is now per-account, with automatic migration of legacy data (existing content is never overwritten)
  • "Pending" used to be a dead state: visible but un-actionable (now offers retry / ignore / delete)
  • Clearing config left state behind, resurrecting it on re-add
  • Clearing config wrongly deleted the per-account pending pool
  • Configs synced from another client did not apply locally

7. UI and logging

  • Crash when saving in the settings screen
  • Opening "Logs" stuttered
  • Only the first startup line reached the log file
  • Tapping a bot button within 30 s of a cold start did nothing
  • Chain ids in the log now carry an account prefix (no more collisions across accounts)
  • Two instances ran in parallel after a hot reload
  • The make-up window became all day when it crossed midnight
  • Numeric headings and decorative text rendered with wrong glyphs

✅ Verification

Item Result
Compile (javac --release 17) ✅ 196 classes
Unit assertions ✅ 174 / 174
i18n gate ✅ 614 dictionary entries, 598 UI outlets
Bilingual changelog ✅ 37 zh / 37 en (none missing)
Version consistency (5 places) ✅ 1.6.0 (123)
Install + read-back check ✅ APK pulled back from device, sha256 byte-identical

⚠️ Upgrade notes

  1. Install over the top — no uninstall needed (same signing certificate as previous releases)
  2. Force-stop Telegram once after installing, then reopen, so the new code takes effect
  3. Configs, targets and sign-in history are all preserved — no reconfiguration required
  4. If you used the "pending" feature before, legacy data is migrated to account 1 automatically

📖 Full changelog

CHANGELOG.md

📄 License

LICENSE

Assets

2

1.5.8

Stable

9/24/2026, 5:04:32 AM

TGAutoSign v1.5.8

新装用户务必更新 —— 之前「按钮学习」是关着的。 / New installs: please update — button learning was off.


⚠️ 重要 · Important

新装用户点 bot 按钮学不会目标 · New installs couldn't learn from button taps
「按钮学习」默认值写成了关闭,而回调学习同样受它管 —— 按 README 说的「点一次按钮」永远没反应,且没有任何提示。现在默认开启。
"Button learning" defaulted to off and also gated callback learning, so new users following the README's "tap once" got nowhere — silently. Now on by default.

🆕 新增 · New

宽松模式(来者不拒)· Loose mode
开 = 点什么学什么(不再按关键词过滤)+ 只要机器人有回复就算成功;但命中明确失败词(活动已结束 / 请先关注 / 未绑定 等)仍判失败。
关(默认)= 按原有规则判定。开关在「设置 → 判定机器人回复」。
On: learn whatever you tap and treat any reply as success, except explicit failure wording. Off (default): judge by the existing rules. Settings → Judging bot replies.

判定词改成开关式 · Verdict words became switches
默认用内置词表判定,另有「自动判定成功 / 失败」总开关与「使用我的自定义词(叠加在内置之上)」。
Built-in words judge by default, plus a master auto-detect toggle and opt-in custom words.

🔧 修复 · Fixed

子面板弹出来变成亮色 · Panels turned light
面板是 Telegram 对话框,弹出时盖了一层半透明遮罩;主题判定采的是整屏平均色,把遮罩算进去就判成浅色。采样改取内容区。
Theme detection sampled the whole screen including the dialog scrim. It now reads the content view.

跨午夜签到窗口不工作 · Windows crossing midnight
22:00-02:00 以前被当成非法:定时模式整晚不排期,非定时模式变成全天可签。现在按跨天正确处理。

定时任务重复排队 · Scheduled tasks piled up
排新任务时没取消旧回调,旧任务可能和新任务同时触发、同一目标签多次。

界面显示「账号10」但只登录 2 个 · Wrong account number shown
宿主切号会写出越界值,导致目标与已签记录落进空分区,看起来像「配置消失」。现在越界钳到 0。

跨客户端同步账号串位 · Cross-client sync mixed up accounts
两台手机账号顺序不一致时按索引合并会张冠李戴。现在按账号 user id 配对。

机器人名字只显示数字 ID · Bot names stuck as numeric IDs
名字缓存把冷启动时的 null 也存了,之后永远取不到。现在只缓存成功的。

「今天已签到」这类回复认不出 · "Already signed today" phrasings
内置词表补了 12 种中文、6 种英文常见写法(成功词同样补充)。

后台心跳降频 · Heartbeat slowed down
原先不分昼夜每 45 秒唤醒一次(一天约 1,900 次),现在按需三档(45 秒 / 10 分钟 / 15 分钟),约 200 次/天。窗口进入仍由精确闹钟负责,准时性不变。

同一次点击被重复处理 · A single tap processed multiple times
Telegram 多源投递同一更新,日志重复 2–4 遍、每日计数虚高。现在 20 秒窗口内去重。

发送中窗口与失败撤销对齐 · Pending window now matches the undo window
发送中状态 90 秒过期,而失败撤销等慢 bot 到 30 分钟,导致慢回复走不到撤销、失败被记成成功。

「未识别 bot 回复」不再刷红 · "Unrecognized reply" no longer an error
点充值 / 菜单 / 查询类按钮的回文本就不可能是签到结果,那是正常情况。现在只记调试日志。

「本条不是签到结果」措辞 · "Not a check-in result" wording
原先写「没识别到签到响应,已忽略」,看起来像失败;实际后续回复会正常命中。现改为「继续等后续回复」。

捕获模式在 Nagram / 官方版无效 · Capture mode on Nagram / official
这两个客户端点击不走已 hook 的方法,捕获只剩网络层入口。现在武装状态下网络层直接弹绑定面板。

「自动判定」被关掉时不再静默 · Auto-detection off is no longer silent
现在弹一次提示并指向设置项,日志提级为警告。

日志账号前缀过期 · Stale account prefix in logs
[账号N] 取自上次轮次缓存,没切号也会标错。现在带实时账号。

跨端同步节流 · Cross-client sync throttled
心跳每 45 秒读写同步文件(一小时白写 80 次盘),现在 5 分钟一次。

i18n 门禁补漏 + 18 处历史漏译 · i18n gate gap + 18 missing translations
走封装方法的文案以前不查字典,新文案忘进字典不会被拦。现已修正。

🩺 可靠性与诊断 · Reliability & Diagnostics

  • 纯逻辑单测(SignLogic,115 条断言)挂进构建门禁,不过直接构建失败
  • bot 回复认不出来时不再静默(记日志 + 诊断包留原文)
  • 关键路径 36 处空 catch 改为记账
  • 诊断包新增:学习开关 / 排除配置 / UI hook 状态(挂载数 + 实际触发数)/ 账号字段原始值

📌 维护范围 · Supported clients

客户端 Client 包名 Package
Telegram(官方版) org.telegram.messenger
Nagram xyz.nextalone.nagram
ExteraLess com.exteraless.app

其余 fork 标志类齐全仍会注入,不保证及时适配。
Other forks still inject if flag classes are intact, but aren't officially maintained.

⬇️ 下载 · Download

https://github.com/Xposed-Modules-Repo/io.github.wlmosv_png.tgautosign/releases/latest

覆盖安装即可,配置不丢。Install over — settings and signed-state are kept.

Assets

2

9/23/2026, 4:07:21 AM

TGAutoSign v1.5.7

English UI is here. / 英文界面来了。


🆕 新增 · New

英文界面 · English UI
英文设备装上就是英文,无需设置;设置页可切 跟随系统 / 中文 / English
English on an English device, zero setup. Switchable in Settings.

多账号隔离 · Per-account isolation
两个账号用同一个 bot 不再互相顶掉;新增「账号一览」页
Two accounts sharing one bot no longer clash; new Accounts overview.

🔧 修复 · Fixed

进度条永远走不满 · Progress bar never filled
冻结 / 排除的目标不再计入分母
Frozen / blocked targets no longer count toward the total.

「排除的 bot」没真正生效 · "Blocked bot" didn't actually stop signing
之前只挡学习,已收录的照签;现在一并停签
Previously it only blocked learning; existing targets kept signing. Now fully stopped.

冻结条目视觉统一 · Frozen entries now dim & sink
与「排除的 bot」一致:虚化 + 沉到列表底部
Same treatment as blocked bots.

一批英文漏译 · A batch of untranslated strings
签到倒计时 / 署名 / 诊断页 / 弹窗按钮 / 日志筛选
Countdown, signature, diagnostics, dialog buttons, log filters.

📌 维护范围 · Supported clients

客户端 Client 包名 Package
Telegram(官方版) org.telegram.messenger
Nagram xyz.nextalone.nagram
ExteraLess com.exteraless.app

其余 fork 标志类齐全仍会注入,不保证及时适配。
Other forks still inject if flag classes are intact, but aren't officially maintained.

⬇️ 下载 · Download

https://github.com/Xposed-Modules-Repo/io.github.wlmosv_png.tgautosign/releases/latest

覆盖安装即可,配置不丢。Install over — settings and signed-state are kept.

Assets

2

9/22/2026, 9:18:16 AM

TGAutoSign v1.5.6

本次更新聚焦「精准控制」与「跨客户端兼容」。

新增

  • 三层黑名单:排除规则(关键词 / 正则)· 排除的 bot · 目标冻结
  • 排除管理:主菜单独立入口,规则 · 排除列表 · 待确认集中一处;已排除条目独立分组显示
  • 网络学习需确认:新目标先进待确认池,手动确认才加入,防验证码类 bot 误加
  • 目标可读性:支持备注名,列表显示 名字 + @username,不再裸露数字 ID
  • bot 矢量图标:替换 emoji 与人头图标

界面

  • 冻结 / 已排除 徽章标识,已排除条目虚化
  • 对话框不再叠层,操作后即时刷新

修复

  • 官方版 / Nagram 按钮学习失效:改为按参数类型结构匹配 hook,不依赖被混淆的方法名
  • 回调签到面板过期:前置命令后等面板真的刷新再点按钮
  • 网络层学习 hash 字段崩溃
  • 手动添加被排除的 bot 时自动解除排除
  • 收藏夹汇总不再「签第一个就发」

维护范围

自本版起仅对以下三个客户端做主要维护:org.telegram.messenger(官方版)、xyz.nextalone.nagram(Nagram)、com.exteraless.app(ExteraLess)。其它 fork 不保证及时适配。

下载

TGAutoSign-v1.5.6-release.apk · sha256 1452e2e878188963295cfc09636f7cc4e5b09bcae9b97f812891f6682fc3553c

覆盖安装即可,配置不丢。

Assets

2

9/21/2026, 11:32:49 AM

v1.5.5 (118)

🆕 新增

  • 群 / 频道签到 —— 群 ID(形如 -1001234567890)支持签到与回复判定;时刻表、错开间隔、补签、失败告警与私聊 bot 完全一致,列表显示群名或备注名
  • 签到结果通知 —— 每账号每天一条摘要发到自己的收藏夹,不依赖系统通知权限、不弹窗;设置可开「只通知失败」
  • 跨客户端同步 —— 官方版与第三方客户端之间同步目标与签到状态,任一端签的都算数;在哪改配置以哪为准
  • 补签截止 —— 补签与签到窗口解耦。以前窗口一结束(如 12:30)当天没签就永久作废,现在会一直补到设定时刻(默认 23:00)
  • 连续失败告警 —— 同一目标连续 3 天失败告警一次,避免「以为签上了其实没有」
  • 多账号独立配置 —— 签到窗口、定时、错开间隔、补签设置改为按账号独立存储

🎨 界面

  • 图标全面矢量化 —— 新增 Icons.java,24×24 网格、Canvas+Path 代码绘制,替换界面上 26 种 emoji;不新增任何资源文件,各机型渲染一致
  • 分类直达 —— 主菜单加「全部功能」横滑一行(目标 / 数据 / 系统 / 帮助 / 维护),取消二级「更多功能」页
  • 教程重写 —— 按使用意图重写 16 节,补齐通知、主题、暂停、重试上限等此前漏写的说明
  • 日志页 —— 固定「最新在上」、打开即定位最新;按天切分落盘(512KB × 7 天);异常带堆栈、每条带账号与轮次上下文
  • 诊断包 —— 新增运行环境与目标状态表
  • 自绘对话框 —— 三宿主外观统一,不再依赖宿主 AlertDialog API

🐛 修复

  • 手动发指令被误判为已签,导致自动签到跳过该目标
  • bot 回「已签过」不落盘,日历不绿且心跳每 90 秒重发
  • 群签到发出后收不到结果判定(发送者与 peer 不一致被过滤)
  • bot 回「签到失败」时误记成功,统计失真
  • 重试上限失效;失败撤销已签的时间窗 10 → 30 分钟
  • 定时器重复排队导致多目标叠加签到
  • 定时模式下「一开 TG 就立即签第一个」,未按时刻表执行
  • 日志只读当天文件,历史记录整批读不到
  • 日志「回到最新」方向相反(滚到最旧)
  • 主界面停留几秒后消失(对话框栈未出栈)
  • 切换账号时挂起的定时器仍按旧账号时刻表触发

🔌 兼容

  • 适配 Telegram 12.10.3:AlertDialog$Builder 方法名被混淆(setTitle → g 等),对话框改为自绘实现规避
  • 主题判定改为采样界面真实颜色,修复 Nagram 不跟深浅、ExteraLess 降级系统主题
  • 修复 Nagram 12.8.1 回调签到 InstantiationException

签名:APK 使用与历史版本相同的 release key(af5524cd…),老用户直接覆盖安装。

Assets

2

9/20/2026, 9:47:53 AM

改动

  • ⏰ 定时签到体系:开启后只在签到窗口内签,窗口外所有自动触发一律不动作;签到时间点按钮选择,错开间隔可配置(0=自动均分)
  • 📅 今日计划:每目标卡片显示已签实际时刻 / 待签计划时刻
  • 📄 日志升级:按目标过滤、一键诊断包(复制即发)、加载更多、配色重做(亮暗双套)
  • 🖌 界面:自绘终端卡片对话框(告别系统框);设置页分组美化;主界面下次签到倒计时
  • 🐛 修复:启动/面板补签遵守签到窗口;多目标随机间隔发送(不再同时齐发)
  • 🔌 兼容:主题判定分宿主适配(官方/Nagram 12.10.3 走 o6.A0().q,ExteraLess 走 isCurrentThemeDark)

覆盖安装

签名证书与 v1.0 起完全一致(SHA-256 af5524cd…),老用户免卸载覆盖安装,签到目标、日历、多账号配置全部保留,无需迁移。

校验

  • APK:TGAutoSign-v1.5.4-release.apk(250,940 B)
  • SHA-256:1734a5d32866e799b597e7decbdeaf9f7f33d41c78a9cce00e82845df2ce3fa7

Assets

2

9/18/2026, 8:34:10 PM

改动

  • 🐛 修复:自动签到成功后日历不绿(成功回调漏记签到记录);子界面层层叠新窗口、退出要按很多次、光标卡死
  • 🎨 界面重排:主菜单分 5 组(核心/工具/数据/系统/维护);目标列表三列对齐 + 状态色区分;新增「未签置顶 / 按名称」排序
  • ✨ 标题动效 4 连:霓虹呼吸 / 逐字波浪 / RGB 流光 / 键盘敲击,每次打开轮换,深浅色双主题契合
  • 📣 加入群组:主菜单「系统」组新增入口,一键跳 TG 交流群
  • 🔌 兼容:宿主白名单新增 NextAlone Nagram(xyz.nextalone.nagram);Nagram XF 30dcd6c 构建注入会导致启动无响应,已版本锁定自动跳过

覆盖安装

签名证书与 v1.0 起完全一致(SHA-256 af5524cd…),老用户免卸载覆盖安装,签到目标、日历、多账号配置全部保留,无需任何迁移。

校验

  • APK:TGAutoSign-v1.5.3-release.apk(226,364 B)
  • SHA-256:bc9ef38af0506e22f1459bbe5c985e2198ce3194c4f6e4b424bacf877a9d9c6c

Assets

2

9/18/2026, 9:28:06 AM

1.5.2 (115) — 2026-09-18

✨ 新功能

  • 每日签到窗口:设置里可配「每日签到窗口」(如 08:00-10:00),窗口外自动触发全部跳过、窗口内准点补签;秒级精度排程 + 0~2 分钟随机偏移防风控;「进入窗口」触发豁免节流,不被其他操作挡住
  • 连续签到日历:首页显示连续签到天数 + 最近 14 天打卡格子(绿=已签,1=13 天前 · 14=今天);跨天自动累加、断签归零,按账号隔离;旧版签到记录自动兼容
  • 预设模板:/jmb 主菜单新增「📚 预设模板」,内置示例模板点选即改即加(bot ID + 指令可编辑)

🎨 界面与体验

  • 主菜单 18 项改双排网格卡片 + 按压缩放反馈,滚动长度减半;修复新版 Telegram 主面板内容无法滚动
  • 面板开启动效:顶部扫光、命令行逐字打字与光标闪烁、状态呼吸灯、状态卡 / 日志卡渐进显现、菜单格错落亮起;标题字符动态效果;15 秒内重复打开面板直接秒开
  • 连续签到文案与关键词表优化(关键词清空自动回落新默认)

🔌 兼容与适配

  • Telegram 12.10.3:新版重构了对话框 Builder(setTitle / setView 移除),模块自动降级为主题化系统框,功能不受影响
  • ExteraLess(ExteraGram fork,com.exteraless.app)加入白名单与声明式作用域,静态核对 + 真机实测
  • 启动期保护:注入后 30 秒内自动处理静默放行,避免高频宿主启动时卡顿(针对 Nagram XF 30dcd6c 构建的启动无响应问题,该构建暂不注入)
  • sendRequest 快速路径(非相关请求零成本放行)、防重入、账号同步节流

🔧 其他

  • 终端风新图标(深色渐变底 + 青色纸飞机);模块元数据规范化(xposeddescription 改资源引用 + 中文简介)
  • 版本三处同步 115 / 1.5.2(CI 版本守卫护航)

Assets

2

9/17/2026, 10:48:54 PM

v1.5.1 (114) - 界面主题化 + 更新判定修复

界面:日间模式适配(终端风色板主题化)

  • 终端风界面全部配色改为跟随 Telegram 主题:日间 = 浅灰蓝卡片 + 深色文字 + 高对比描边;暗色 = 原配色逐像素不变
  • 修复日间模式下深色卡片嵌浅色背景的割裂感、青色低透明度描边几乎不可见的问题
  • 分隔线 / 灰色提示 / 编辑框等弱对比元素统一走主题色板
  • 深浅色判定改为读取 TG 的 isCurrentThemeDark(宿主 ClassLoader 反射),TG 内切主题立即生效,不再依赖系统夜间模式

修复

  • 更新检查"永远显示可更新":UpdateChecker.VERSION_CODE 停在 112,远端 113 > 112 导致永远判定有新版本;本次与 build.gradle / module.prop 统一到 114 / 1.5.1(并加了三处一致性守卫)
  • 版本号三处(build.gradle / UpdateChecker / module.prop)统一到 114 / 1.5.1

老用户直接覆盖安装,签到数据不丢。

Assets

2

9/17/2026, 3:17:39 AM

v1.5.0 (113)

回调签到:协议层修复 + 实时面板引擎

  • 修复 getBotCallbackAnswer 请求 flags 位缺失导致的 DATA_INVALID
  • 实时跟踪 bot 面板、自适应按钮匹配、一次性点击自动拉面板重试
  • processUpdate* 参数解包,消息更新链路恢复生效
  • Bot 回复语义三态判定(成功/已签/失败)

可靠性

  • BOT_RESPONSE_TIMEOUT 15 分钟长退避、当日上限 2 次
  • 单账号每日动作上限、目标暂停一周、签到随机间隔

界面

  • 管理界面深色主题重构、统一字体配色、实时日志视图、快捷操作
  • 新增 /jmb log、/jmb update 子命令

Assets

2

9/15/2026, 3:50:53 AM

v1.4.3 (versionCode 112)

新增

  • 声明式作用域:module.prop 里 staticScope=true + META-INF/xposed/scope.list。已知 Telegram 客户端(官方 Play 版、官网直连版、Nagram XF、Nagram、NagramX、NagramNX)在模块启用后自动进入作用域且不可改,不用再去作用域列表里翻应用。
  • 自诊断逐项判定:三个 Telegram 标志类(ConnectionsManager / ChatActivityEnterView / UserConfig)各自在不在,缺哪个直接报名字;宿主被跳过时日志同步写明原因,不再只有一句「跳过」。

变化与影响

  • 作用域改为声明式:不在 scope.list 里的客户端不会被注入。以后要支持新 fork,需要改清单随版本发布 —— 这是「自动生效且不可改」的必然代价。
  • staticScope 是 LSPosed 的扩展(libxposed 规范里没有),只在 LSPosed 及其衍生管理器上生效;其它框架仍按各自的作用域机制。

修复

  • 同一天的退避与重试上限失效,失败目标被反复重发刷 bot(按 retry_day_ 判定,换天自动重来)
  • 「签全部账号」只签了第一个账号(被自己刚设的 60 秒全局节流挡掉)
  • 切换账号后目标列表与签到状态串号;集合与日期格式改为线程安全
  • 取不到 bot 会话数据的僵尸目标每 60 秒空跑:现在先从会话列表兜底解析 peer,仍失败才计入退避并说明下一步
  • 编辑目标清空「前置命令」不生效;/jmb 前缀误吞正常消息;Activity 泄漏与「发 /jmb 没反应」
  • 导入配置报成功却没变化:改为先列出候选备份、再选合并或覆盖、结束报目标数前后对比
  • Toast 降噪:启动提示改成每天一条汇总,签到结果 8 秒内合并成一条,同类提示 5 分钟去重
  • 更新链:检查失败不再占用 12 小时冷却;限流/403 报错说人话;下载安装包按 sha256sum.txt 校验

已知限制

  • bot 改了回复文案仍可能被误判为失败(本版已收紧判失败词表)。
  • 自研账号层/数据层的客户端(如 Telegraph:缺 UserConfig、MessagesController、MessagesStorage)不支持,模块拿不到账号与 peer。
  • 官网模块列表有独立缓存,版本与简介会滞后数小时到一天。

校验

  • 证书自 v1.0 未变:af5524cd554ae6ede3ec2747c7bed159b09bc4f6a43244a68b4622e9463225c8
  • 安装包 sha256 见同目录 sha256sum.txt

Assets

2

9/14/2026, 11:29:27 AM

v1.4.2 (versionCode 111)

这一版把整轮代码审计发现的问题一次修完,并新增三个功能。1.4.1 与 110 是开发自测用的内部构建号,从未发布。

新增

  • 复制目标到其它账号:/jmb 主菜单里,把当前账号的签到目标一键同步给其它账号;只复制目标本身,不带走「今天已签」和失败记录,同 bot 同指令自动跳过并报告跳过数。
  • 运行日志重做:错误 / 警告 / 成功 / 普通 / 调试 五级;支持搜索、按级别筛选、正序倒序切换、长按单行复制、一键清空(可先导出一份再清)。日志同时落盘,重启 Telegram 后仍能翻到之前的记录(约 1.3MB 上限,自动轮转)。
  • 导入配置重做:先列出候选备份(文件名、版本、导出时间、项数),再选「合并」或「覆盖」,结束时报当前账号目标数的前后对比;不认识的键一律不写入。

修复

  • [P0] 同一天的退避与重试上限失效:失败的目标不再被反复重发刷 bot,换天自动重新开一轮;设置页的「每日重试上限」真正生效。
  • [P0] 「签全部账号」只签了第一个账号:不再被自己刚设的 60 秒全局节流挡掉;现在逐账号汇报(目标数 / 已签 / 待重试),没有目标的账号会直说。
  • [P1] 切换账号后目标与状态串号:目标缓存、判重、「今天已签」写入始终跟随当前账号,不再用上一个账号的列表判重(旧版因此可能学不进去、或覆盖另一个账号的条目)。
  • [P1] 僵尸目标空跑:取不到 bot 会话数据时先从会话列表兜底解析 peer,能自救的就签;仍取不到才计入退避与重试上限、当天放弃并说明下一步怎么做;目标是群或频道则直接判不可签。
  • [P1] 线程安全:目标列表走锁与快照,发送中 / 去重 / 唤醒集合改并发容器,日期格式化不再共享实例(旧版偶发并发修改异常与日期错乱,且异常被吞后表现为「点了没学到」)。
  • [P1] 编辑目标里清空「前置命令」不生效(重启后复活);导入的备份若数值类型不一致,条目不再静默消失。
  • [P1] /jmb 误吞消息:现在只认恰好 /jmb 或 /jmb 参数,/jmbx 这类正常消息照常发出;发送中状态 90 秒自动过期,卡住可自愈。
  • [P1] Activity 泄漏与「发 /jmb 没反应」:Activity 销毁即释放引用,弹窗前统一判活;按钮捕获模式 2 分钟未点按钮自动解除。
  • [P1] 网络层自动学习无法关闭:新增开关并持久化(默认仍为开);bot 回复判失败的词表去掉「请先 / 不能 / 无法 / 错误」,不再把正常回复误判为失败并撤销已签。
  • [体验] Toast 降噪但不失联:启动的两条注入提示去掉,改为每天最多一条汇总(并提示还有几个账号没学习目标);签到结果 8 秒内合并成一条;同类提示 5 分钟内不重复弹;「今天已经签到过了」保持每天最多一次。
  • [清理] 历史遗留的无前缀老键一次性搬正;删除与清空统一按「是否目标键」判定,设置项一律保留(不再顺手抹掉教程标记)。
  • [更新链] 检查失败不再占用 12 小时冷却;GitHub 403 / 限流不再被报成「所有候选仓库都不可达」;下载安装包按同 Release 的 sha256sum.txt 校验,不匹配就删掉坏包并说明期望与实际。
  • 自诊断与主界面逐账号列出目标数,不再露出 0 基内部账号编号;日志时间戳多余括号等文案修正。

已知限制

  • 签到依赖 bot 的消息文本与按钮:bot 改了回复文案可能被误判为失败(本版已收紧词表,仍建议升级后观察一天)。
  • 换内核的客户端(如 Telegram X)不支持;官网 web 版与第三方 fork 的兼容核对停在 v1.4.0,本版改动不涉及任何反射点。
  • 静默检查更新 12 小时一次;想立刻检查用 /jmb -> 🔄 检查更新。安装包下载到系统「下载」目录后交系统安装器确认,模块不自申请安装权限、不自动安装。

升级与校验

  • 从 v1.4.0 覆盖安装即可,作用域与已学目标不受影响;多账号用户建议升级后执行一次 /jmb -> 「复制目标到其它账号」,把另一个账号补上目标。
  • 证书自 v1.0 未变:af5524cd554ae6ede3ec2747c7bed159b09bc4f6a43244a68b4622e9463225c8
  • 安装包 sha256:c0c249f231044cefbc07e972471ffe2489f764601aef79490f2ee5d7ca1771dc

Assets

2

9/14/2026, 6:36:04 AM

大改版:回调按钮签到可用又可控、全新卡片界面、配置彻底可清理。

新增

  • 回调按钮可手动绑定多个:➕「🔘 回调按钮(捕获)」→ 点一次 bot 按钮 → 列出该消息所有内联按钮 → 点选绑定(可连点多个、同按钮去重、不受关键词限制)
  • 🧪 测试 / 🔬 回调调试台:列出当前面板全部按钮,点任意一个即时发一次回调并把机器人返回显示出来;正常签到成功也会回报机器人文本
  • 每条目标自带「前置命令序列」(如 /start,逗号或换行分隔、可多条):签到/测试前先发送拉起面板再重放,解决"bot 不主动推面板就签不上"
  • 🔁 重绑为回调:把 1.3.1 期间被误存成"指令"的旧回调按真实按钮重建
  • 📖 使用教程(分节,首次自动弹出一次)、🩺 自诊断(列出关键反射锚点是否解析与失败原因,便于排查第三方客户端适配)
  • 🧹 清空所有配置(跨全部账号彻底清除,仅保留设置)

修复

  • 删除配置有残留、重开 TG 又复活(第三方 fork 尤其明显):逐条删除改为跨全部账号前缀彻底清除,删除前二次确认
  • 回调按钮重启后变"发送消息/指令":加载优先读回 kind_/did_,回调类型可靠保留
  • 点任意 bot 按钮都被加进列表:自动学习与关键词解耦,自动学习默认关闭,打开后默认仍只加命中关键词的按钮

变更

  • 界面全面卡片化:顶部概览卡(账号/目标数/今日已签/开关状态/其它账号目标数)、类型徽标、图标色块、深浅色自适应、取用 Telegram 主题色;设置改用开关
  • 运行日志分级着色、倒序显示
  • 版本单一来源对齐 gradle 与 UpdateChecker = 108 / v1.4.0

兼容
prefs 文件名、导出 json 格式、更新通道与签名证书均不变(versionCode 107 → 108)。老用户覆盖安装即可,学过的目标与已签状态原样保留。

Assets

2

9/13/2026, 6:06:27 AM

v1.3.1 修复回调按钮签到不可用的问题。

v1.3.0 新增回调按钮签到支持,但适配 TG 12.10.1 时读按钮 payload 的字段写错了,导致点签到按钮学不进去、重放请求缺 msg_id 发不出去,实际无法签到(只会发一条文本消息,bot 回复不支持)。本版修正:

  • 按钮 data 读取兼容 TG 12.10.1 新架构(KeyboardButtonProto.getData / mType.data)
  • 回调重放补齐必填的 msg_id 字段
  • 移除对已不存在的 hash 字段的赋值(此前会抛异常导致请求未发出)

老用户覆盖安装即可,学过的目标与已签状态原样保留。

Assets

2

9/11/2026, 2:17:02 PM

v1.3.0 是个大版本,三件事:

1. 回调按钮签到能用了
很多签到 bot 的按钮点下去不发文字,而是弹个小气泡或者把卡片上那个按钮变成「已签」。这种以前模块签不了,现在可以了:在聊天里点一次那个按钮,模块就把它学会了(列表里带 🔘 标记),之后每天自动帮你点。

2. 同一个 bot 可以签到多条指令
以前一个 bot 只能记一条指令,加第二条会把第一条顶掉。现在同一个 bot 的多条指令、文本加回调按钮都能并存,各自签各自的,状态和重试都是独立的。

3. 一键签全部账号
/jmb → 🌐 签全部账号,把所有已激活账号挨个签一遍,每个账号用自己的目标列表,互不干扰。

老用户直接覆盖安装就行,之前学的目标、当天已签状态原样保留,不用重新学。

用官网直连版或 Nagram XF 的朋友记得在 LSPosed 里把对应客户端勾进作用域。第三方客户端没实测过的,欢迎用 /jmb → 🧾 导出运行日志 把日志发我。

Assets

2

9/10/2026, 3:18:33 AM

v1.2.3 (versionCode 105) —— 签到可靠性修复

  • 修复:重试计数跨天不重置。 此前某天用完每日重试上限后,该目标从此每天都被"今日重试已达上限"跳过,自动签到永久失效。现在新的一天自动清零重试计数与退避。
  • 修复:失败后"已签"标记不撤销。 此前请求报错(非永久失败 / FLOOD_WAIT)后乐观标记的"已签"不会被撤销,退避重试永远不会真正执行、界面却显示已签 ✅。现在两类失败都会撤销标记,由轮询按退避计划真实重试。
  • 修复:FLOOD_WAIT 不再固定 60 秒重发。 解析服务器返回的等待秒数(FLOOD_WAIT_<sec>)写入退避计划,不再空转加重限流;限流计入每日重试上限。
  • 修复:Bot 回复语义判定在 TG 12.10.1+ 失效。 processUpdate 已改名 processUpdateArray,改为按前缀匹配 hook,新旧宿主都兼容(v1.2.2 仅诊断,本版真正修复)。
  • 新增:🧾 导出运行日志 到系统「下载」目录,便于反馈第三方客户端问题。
  • 新增:目标列表显示 bot 用户名与上次签到时间;🚀 立即签到页新增"全部签到"。
  • 清理:删除零引用死代码 store/Store.java。
  • 兼容:数据格式、更新通道与签名 key 不变,覆盖安装即可,目标与已签状态不受影响。

⭐ 觉得 TGAutoSign 好用的话,去 wlmosv-png/TGAutoSign 点个 Star 吧——你的 star 是持续更新的动力。有问题/想适配新客户端也欢迎开 issue。

Assets

2

9/10/2026, 2:47:09 AM

多客户端支持:官网直连版(org.telegram.messenger.web,issue #1)与 Nagram XF(fork.risin42.nagramx,issue #2)等 Telegram-Android 系 fork 现已可注入;未知新 fork 自动按标志类能力探测,不必等模块更新。Nagram XF 已真机实测通过。

  • 宿主判定:已知包名白名单 + 标志类能力探测双通道;Telegram X 等换内核客户端不会误注入
  • 运行日志标注宿主与命中方式;/jmb → 📄 运行日志 首行可见当前宿主
  • 诊断修复:hook 匹配数如实打印,0 命中告警(暴露 TG 12.10.1 processUpdate 改名导致的语义判定失效,仅诊断,不改行为)
  • 签到数据、导出 json 格式、更新通道与签名 key 不变,覆盖安装即可,不要卸载

注意:Xposed 管理器的作用域默认只勾了官方版;使用官网版 / Nagram XF 等第三方客户端时,请在 LSPosed 中为模块手动勾选对应客户端的作用域。

Assets

2

9/8/2026, 4:52:44 PM

v1.2.1 (versionCode 103)

  • 新增:模块内置检查更新。启动后 12 小时冷却静默查 GitHub Releases,发现新版 Toast 提示;/jmb → 🔄 检查更新 可强制查看版本、更新说明与大小,并把安装包下载到系统「下载」目录后交由系统安装器确认(不申请安装权限,不自动安装)。
  • 新增:/jmb → 📤 导出配置 / 📥 导入配置。导出 tg_autosign_gen 与 tg_autosign_v2 两份偏好(目标、关键词、重试上限、签到状态),换账号或换手机不用重新学习目标;导入为只合并不清空。
  • 新增:版本号单一来源 UpdateChecker.VERSION_NAME/VERSION_CODE,修正日志里残留的 v2.2 / jmb界面版 v1.0 与实际版本不符。
  • 变更:tag 规则统一为 v1.2.1(检查更新同时兼容旧的 103-1.2.0 写法)。
  • 清理:删除 v2「独立管理 App」时代残留的死代码——ui/MainActivity、ui/LogActivity、ui/SettingsActivity、ui/TargetAdapter、ui/TGAutoSignWidget、store/Bridge、store/Notifier 共 7 个类 790 行,以及 5 个 layout、badge_bg、widget_bg、appwidget_info 与 5 个颜色;AndroidManifest.xml 从未注册过任何 Activity/Receiver,桌面小组件也因此一直不出现。同时去掉不再需要的 POST_NOTIFICATIONS 权限与 androidx.recyclerview / androidx.core 依赖。
  • 安全:build.gradle 移除硬编码签名口令,改为环境变量注入;keystore/ 加入 .gitignore。

SHA-256: 346827ec3148a867940e94036651dda8fc2f4d8525c460c2660b6d67d654ba05

签名证书 SHA-256: AF:55:24:CD:55:4A:E6:ED:E3:EC:27:47:C7:BE:D1:59:B0:9B:C4:F6:A4:32:44:A6:8B:46:22:E9:46:32:25:C8

升级方式:覆盖安装,不要先卸载(卸载会丢签到学习数据)

模块 ID: io.github.wlmosv_png.tgautosign · libxposed API 102 · 作用域 org.telegram.messenger

Assets

1

v1.2.0

Stable

9/7/2026, 10:31:36 PM

适用版本

  • ✅ 已实测:Telegram 12.10.1 (build 70382)
  • 支持 Telegram 官方版及常见衍生版(Plus / Web / NekoGram / Nekox,作用域可在 Xposed 模块管理器中自行增补)
  • 需 Xposed 环境运行(Xposed API 102+)

模块特性

  1. Telegram 内管理界面:任意聊天发 /jmb 弹出管理菜单(目标列表 / 添加 / 删除 / 立即签到 / 运行日志 / 设置),无需独立 App
  2. 自动学习签到目标:点 bot 签到按钮自动记录(仅当按钮文案包含已配置关键词时添加);网络层自动识别签到指令(仅 bot、含关键词)
  3. 每日一签 + 自动补签:启动 / 定时(30min) / 打开聊天 / 网络恢复 自动补签
  4. 回复语义判定 + 指数退避:bot 返回「失败 / 已过期 / 请先…」自动撤销已签并重试(5m→15m→45m→2h→4h),限流 420/FLOOD_WAIT 单独处理
  5. 多账号感知:切换账号自动重载目标,数据按账号隔离(SharedPreferences tg_autosign_gen)
  6. 日志 + 设置:最近 200 行日志可查,关键词 / 每日重试上限可改并持久化

v1.2.0 更新内容

  • 🔧 修复签到不发送:MessagesController.getInputPeer 反射参数类型错误(Object → 实际应为 TLObject),此前手动 / 自动签到都在「构造 InputPeer 失败」处静默退出,现恢复正常发送
  • 🔑 按钮学习增加关键词过滤:点按不含关键词的按钮不再添加目标(fix2)
  • 🧩 适配 TG 12.10.1:按钮文案读取优先走 getText()(兼容 KeyboardButtonProto 新结构),text 字段兜底
  • ➕ 设置页补全「保存」按钮(关键词 / 重试上限即时生效并持久化)

安装

  1. 安装 APK
  2. Xposed 模块管理器 → 模块 → 启用 TGAutoSign → 作用域勾选 Telegram
  3. 强制停止 Telegram 后重开,任意聊天发 /jmb 即可管理

Assets

1

v1.1.0

Stable

9/7/2026, 6:07:58 PM

TGAutoSign v1.1.0 · Telegram 每日自动签到

稳定性与成功率增强(与 LSPilot 插件版 v1.2 同步):

  • 回调型按钮识别(不再静默漏签)
  • Bot 回复语义判定:回复失败词 → 自动撤销已签 + 退避重试
  • 错误分类:永久错误当日放弃 / 限流 60s 重试不占次数
  • 指数退避 5min→4h
  • 账号切换自动重载目标
  • 启动补签 5s→10s
  • 修复 sendRequest 双触发(日志 ×2)
  • 学习关键词补入 /qd /qiandao /sign

作者:wlmosv

Assets

1

v1.0.0

Stable

9/7/2026, 5:12:49 PM

TGAutoSign v1.0.0 · Telegram 每日自动签到

  • 自动学习签到目标(UI 点击 + 网络层双通道)
  • 每日一签、成功即停、已签提示「今天已经签到过了 ✅」
  • 断网补签:网络恢复 / 打开聊天 / 30 分钟兜底轮询
  • libxposed API 102 · 作用域 org.telegram.messenger

作者:wlmosv

Assets

1