青龙面板部署 GLaDOS 自动签到脚本与 Telegram 推送配置指南

一、 环境准备与脚本部署

1. 基础依赖配置

  • 登录青龙面板 $\rightarrow$ 依赖管理 $\rightarrow$ Python3 $\rightarrow$ 新建依赖
  • 输入 requests 并确认安装。

2. 脚本文件创建

  • 进入 脚本管理 $\rightarrow$ 新建文件
  • 文件名命名为:glados_checkin.py
  • 粘贴脚本源码并保存。

3. 环境变量设置

在青龙面板 环境变量 中添加必要变量:

变量名示例 / 说明必填项
GLADOS_COOKIEkoa:sess=xxx; koa:sess.sig=xxx;

注意:多账号配置可用 &||| 或换行分隔。


二、 Cookie 提取方法

建议使用浏览器的无痕(隐身)模式操作,避免浏览器扩展与缓存干扰:

  1. Ctrl + Shift + N(Mac 使用 Cmd + Shift + N)打开无痕窗口。
  2. F12 打开开发者工具,切换到 Network(网络) 标签页。
  3. 访问并登录 GLaDOS 官网。
  4. 在 Network 面板搜索框输入 checkinstatus,触发一次页面刷新或签到操作。
  5. 点击任意出现的请求,在 Headers(标头) $\rightarrow$ Request Headers(请求标头) 中找到 cookie: 字段。
  6. 复制完整字符串,并确认其中包含 koa:sess=koa:sess.sig= 核心字段。
  7. 注意事项:提取完成后不要点击网页上的“退出登录”,直接关闭无痕窗口即可,否则 Cookie 会立即失效。

三、 Telegram 机器人创建与配置

1. 创建机器人

  1. 在 Telegram 中搜索官方账号 @BotFather
  2. 发送指令 /newbot
  3. 输入机器人的显示名称(例如:My Checkin Bot)。
  4. 输入机器人的唯一用户名(Username),必须以 bot 结尾(例如:zgladoscheckin_bot)。
  5. 获取 BotFather 返回的 API Token(格式如:8777280554:AAHCbGsUi...)。

2. 获取用户 ID (Chat ID)

  1. 在 Telegram 中搜索 @userinfobot@getmyid_bot
  2. 点击 Start 发送消息,获取回复信息中的纯数字 Id

3. 激活机器人

在 Telegram 中主动搜索创建的机器人 Username(如 @zgladoscheckin_bot),点击 Start 发送任意消息。未进行此步骤会导致推送返回 400 Bad Request: chat not found 错误。


四、 两种通知推送实现方案

方案 A:使用青龙面板系统级通知(推荐)

直接由青龙系统管理通知,无需在青龙环境变量中配置 TG_BOT_TOKENTG_USER_ID(若已添加请删除/禁用,防止脚本内部调用网络连接超时)。

  1. 进入青龙面板 系统设置 $\rightarrow$ 通知设置
  2. 选择 Telegram 渠道并填入 Bot TokenChat ID
  3. 测试通过后保存。

解决“重复签到不触发系统通知”问题

青龙系统默认可能静默处理非报错日志。如需每次运行均强制推送,可在 glados_checkin.py 中进行以下修改:

1. 修改 main() 函数返回值
main() 函数末尾的返回逻辑修改为同时返回状态码、标题与内容:

# 将 main() 末尾修改为:
exit_code = 1 if (ok == 0 and repeat == 0 and len(cookies) > 0) else 0
return exit_code, title, content

2. 修改脚本入口代码
将脚本底部的 if __name__ == "__main__": 替换为:

if __name__ == "__main__":
    ret = main()
    if isinstance(ret, tuple):
        exit_code, title, content = ret
    else:
        exit_code, title, content = ret, "GLaDOS 签到", "执行完毕"

    try:
        from notify import send
        send(title, content)
        logger.info("已通过青龙 notify 模块强制发送通知")
    except Exception as e:
        logger.debug("未能调用青龙 notify 模块: %s", e)

    sys.exit(exit_code)

方案 B:脚本内置推送(适用于具有网络访问条件环境)

若青龙服务器所在网络可直连 Telegram API,也可在青龙 环境变量 中直接添加以下变量:

变量名说明
TG_BOT_TOKENBotFather 提供的 API Token
TG_USER_ID个人 Telegram 纯数字 ID

注:若运行在中国大陆境内网络且未配置网络代理,此方案会在日志中报 ConnectTimeoutError: Connection to api.telegram.org timed out 错误。


五、 定时任务配置与 Cron 语法参考

  • 任务名称:GLaDOS 自动签到
  • 任务命令task glados_checkin.py
  • 定时规则语法(标准 5 位 Cron):

$$\begin{matrix} \text{分} & \text{时} & \text{日} & \text{月} & \text{周} \\ \downarrow & \downarrow & \downarrow & \downarrow & \downarrow \\ \mathbf{6} & \mathbf{0} & \mathbf{*} & \mathbf{*} & \mathbf{*} \end{matrix}$$

常用 Cron 示例

规则执行时间
6 0 * * *每天凌晨 00:06 执行
0 8 * * *每天早上 08:00 执行
30 23 * * *每天晚上 23:30 执行

标签: none

添加新评论