TGAutoSign

TGAutoSign

中文 · English

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

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

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

Latest Release Downloads API License Telegram Group

⬇️ 下载最新版 APK · 源码仓库

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


📱 界面一览 · Screenshots

英文界面 · English UI — 内置,无需设置 · built in, no setup required

Main panel Main menu
Main panel Main menu
Targets Settings
Targets Settings

中文界面 · Chinese UI

暗色 · 主面板 暗色 · 主菜单
主面板·暗色 主菜单·暗色
设置
设置

✨ 它能做什么 · 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.
🔒 数据全在本地 · 100% local 无服务器、无遥测、无上报
No server, no telemetry.

🖥️ 支持的客户端 · Supported clients

模块先按宿主包名判定,再按标志类能力兜底,命中才注入。 Matched by host package first, then by flag classes as fallback — only injects on a match.

客户端 · Client 包名 · Package 状态 · Status
Telegram(Play / 默认渠道) org.telegram.messenger ✅ 12.10.4 实测 · tested
Telegram(官网直连版) org.telegram.messenger.web ✅ 静态核对 · statically verified
Nagram(NextAlone) xyz.nextalone.nagram ✅ 12.10.3 实测 · tested
Nagram XF fork.risin42.nagramx ✅ dec46b0 实测 · tested
ExteraLess com.exteraless.app ✅ 12.10.1 实测 · tested
Nekogram tw.nekomimi.nekogram ✅ 12.10.3 实测 · tested
Mercurygram it.belloworld.mercurygram ✅ 12.10.3.1 实测 · tested
Nagram / NagramX / NagramNX nu.gpu.nagram 等 白名单覆盖,未实测 · whitelisted, untested
其它 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.1 (124) — 2026-09-28

修复:目标列表自动增殖:模块自身发起的回调被误判为用户学习 · 「已发出」状态回退导致重复签到 · 非签到按钮被纳入学习范围 · 网络层学习的账号归属错误 · 账号索引钳制范围过宽 · 停用账号仍执行签到 · 批量签到重复发送已签目标 · 账号一览遗漏非连续槽位账号 · 明确标识签到的按钮被过滤拦截(上一版引入的回归)

新增:新增两个适配客户端,并修正默认作用域 · 误学条目清理日志

工具:README 更新日志生成器支持成块对照格式 · 新增「README 更新日志同步」构建门禁 · 纯逻辑单测 174 → 297 条

v1.6.0 (123) — 2026-09-26

架构更新:账号隔离从「约定」变成「结构」 · 核心文件拆出 6 个职责单一的类 · 纯逻辑可单测 · 存储键名收敛到唯一真相源 · 落盘策略显式化

修复:账号串号:六条路径全部改为锁定账号(重要) · 越界保护反而读到别人的分区(重要) · 失败目标被反复重签(重要) · 同一账号重复排期发送(重要) · 明明签到成功,却被判失败并退回「退避中」(重要) · 「等面板」永远超时走兜底(重要) · 同类问题全量清查:还有三处会把成功当失败 · 「待确认」池按账号隔离,并自动迁移旧数据 · 「待确认」是个死状态:看得到、点不动(重要) · 回复判定用错账号(重要) · 全账号签到时结果串到别的账号 · 清空配置会残留状态,导致重新添加的 bot 状态复活(重要) · 清空配置会误删账号级待确认池 · 按钮反复过期导致无限重试 · 不回结果的机器人每天白等超时 · 设置界面保存时闪退 · 打开「运行日志」会卡顿 · 启动日志只落盘第一行 · 冷启动 30 秒内点 bot 按钮毫无反应 · 跨天窗口下补签时段变成全天 · 跨端同步的配置在本机不生效 · 连点多个 bot 按钮时只有第一个能被学到 · 日志里的链路编号会跨账号重复 · 热重载后两个实例并行跑 · 启动日志里的数字标题渲染成错误字形 · 花体字有豆腐块 · 「待确认」的「重试」按钮用错账号

新增:日志与诊断包显示详细版本信息 · 宿主友好名支持英文

工具:仓库里的 build.sh 缺三道门禁 · 纯逻辑单测从 115 条扩到 174 条 · 接线自检的成员清单里有早已删除的方法

完整更新日志 →

🔗 下载渠道 · Download

渠道 · Channel 地址 · Where
本页 Releases(推荐)· recommended releases/latest
源码仓库 Releases · source repo wlmosv-png/TGAutoSign
模块内直达 · in-app Telegram 发 /jmb → 检查更新

同一版本两个仓库的 APK 逐字节一致(sha256sum.txt 附在 Release 里), 签名始终是同一把 release key,覆盖安装不丢数据。 Both repos ship byte-identical APKs (with sha256sum.txt), signed by the same release key — installing over keeps your data.


⚖️ 许可 · 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

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