记一次tg自动签到机器人批量账户签到
原创2025/6/6大约 3 分钟
前言
相关的脚本我利用的是
https://github.com/amchii/tg-signer起因
翻看了一下 源码,发现它的启动是直接输入tg-signer
朋友今天来问我,由于这种启动方式实在处理不了环境变量不识别的问题,并且有些win11主机实在配置不当,所以还是另外写一个脚本二开吧

具体操作:
输入了tg-signer 之后发现是支持-a 参数来指定用不同的账号登录的:
Usage: tg-signer [OPTIONS] COMMAND [ARGS]...
使用<子命令> --help查看使用说明
子命令别名:
run_once -> run-once
send_text -> send-text
Options:
-l, --log-level [debug|info|warn|error]
日志等级, `debug`, `info`, `warn`, `error`
[default: info]
--log-file PATH 日志文件路径, 可以是相对路径 [default: tg-signer.log]
-p, --proxy TEXT 代理地址, 例如: socks5://127.0.0.1:1080,
会覆盖环境变量`TG_PROXY`的值 [env var: TG_PROXY]
--session_dir PATH 存储TG Sessions的目录, 可以是相对路径 [default: .]
-a, --account TEXT 自定义账号名称,对应session文件名为<account>.session [env
var: TG_ACCOUNT; default: my_account]
-w, --workdir PATH tg-signer工作目录,用于存储配置和签到记录等 [default:
.signer]
--session-string TEXT Telegram Session String,
会覆盖环境变量`TG_SESSION_STRING`的值 [env var:
TG_SESSION_STRING]
--in-memory 是否将session存储在内存中,默认为False,存储在文件
--help Show this message and exit.
Commands:
export 导出配置,默认为输出到终端。
import 导入配置,默认为从终端读取。
list 列出已有配置
list-members 查询聊天(群或频道)的成员, 频道需要管理员权限
list-schedule-messages 显示已配置的定时消息
login 登录账号(用于获取session)
logout 登出账号并删除session文件
monitor 配置和运行监控
multi-run 使用一套配置同时运行多个账号
reconfig 重新配置
run 根据任务配置运行签到
run-once 运行一次签到任务,即使该签到任务今日已执行过
schedule-messages 批量配置Telegram自带的定时发送消息功能
send-dice 发送一次DICE消息, 请确保当前会话已经"见过"该`chat_id`。...
send-text 发送一次文本消息, 请确保当前会话已经"见过"该`chat_id`
version Show version那么首先用朋友的号登录一次,获取相关的信息
然后让朋友根据唯一的telegram-id去确定好要发送的群聊和发送的内容
demo我也展示出来:
获得之后用cursor写一个脚本:命名成task.py,调配好windows的每日任务定时执行即可
import subprocess
def send_messages(task_file,account):
with open(task_file, 'r', encoding='utf-8') as f:
for line in f:
line = line.strip()
if not line:
continue
# 分割聊天ID和消息内容
chat_id, message = line.split(' ', 1)
# 处理负数的聊天ID(POSIX风格双短横线)
cmd = [
'tg-signer',
'-p', 'http://127.0.0.1:7890',
'-a',f'{account}',
'send-text'
]
# 根据ID是否为负数构建不同的命令格式
if chat_id.startswith('-'):
cmd.extend(['--', chat_id, message.strip()])
else:
cmd.extend([chat_id, message.strip()])
# 执行命令
print(cmd)
result = subprocess.run(cmd, capture_output=True, text=True)
# 处理执行结果
if result.returncode == 0:
print(f"成功发送到 {chat_id}: {message}")
else:
print(f"发送失败到 {chat_id},错误信息: {result.stderr}")
if __name__ == '__main__':
peoples = {'my_account': 'my_task.txt', 'good': 'lhz_task.txt'}
这里要记得改,以防万一我特意不加注释让你报错
for account, task_file in peoples.items():
send_messages(task_file, account)详细的项目架构为:
最后
有每日定时签到的需求但是自己懒得部署的也可以按照上面的步骤找我联系(10元/月)
对脚本有详细建议或者更新的可以自行编写,此处我不放仓库了,有需要的直接复制粘贴就行
