You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Deluge签到脚本优化:如何拦截重复登录与重复登出操作

签到应用Deluge脚本优化:防止重复登录/登出

需求说明

需要实现以下限制:

  • 已处于**Sign In(登录)**状态的用户,无法再次执行登录操作
  • 已处于**Sign Out(登出)**状态的用户,无法再次执行登出操作
    原脚本仅实现状态切换,但未限制重复操作,用户手动覆盖状态后会导致无效的重复记录。

原脚本

var = Sign_in_out[UserName == input.UserName] sort by Added_Time Desc;
if(var.Status == "Sign In")
{
    Status.select("Sign Out");
}
else if(var.Status == "Sign Out")
{
    Status.select("Sign In");
}
else
{
    Status.select("Sign In");
}

优化后的脚本

// 获取用户最新的签到状态记录
var userRecords = Sign_in_out[UserName == input.UserName] sort by Added_Time Desc;
latestStatus = if(userRecords.size() > 0, userRecords.Status, null);

// 基于用户触发的操作("Sign In"或"Sign Out")执行校验
if(input.Action == "Sign In") {
    // 已登录则阻止操作
    if(latestStatus == "Sign In") {
        alert("您已处于登录状态,无需重复操作");
        abort; // 终止脚本,不执行后续动作
    }
    // 执行登录操作并保存记录
    Status.select("Sign In");
    Sign_in_out.add({
        "UserName": input.UserName,
        "Status": "Sign In",
        "Added_Time": now()
    });
} else if(input.Action == "Sign Out") {
    // 已登出则阻止操作
    if(latestStatus == "Sign Out") {
        alert("您已处于登出状态,无需重复操作");
        abort; // 终止脚本,不执行后续动作
    }
    // 执行登出操作并保存记录
    Status.select("Sign Out");
    Sign_in_out.add({
        "UserName": input.UserName,
        "Status": "Sign Out",
        "Added_Time": now()
    });
}

逻辑说明

  1. 获取最新状态:通过用户名筛选记录并按时间倒序排序,确保拿到用户当前的真实状态
  2. 操作校验拦截:根据用户触发的具体操作,检查当前状态是否与操作重复,重复则弹出提示并终止脚本
  3. 强制状态流转:仅当操作与当前状态不冲突时,才执行状态切换并保存新记录,避免手动修改状态导致的无效操作

内容的提问来源于stack exchange,提问作者cluelesscoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 19:10:48