奈雪小程序任务脚本
功能概述
该脚本用于自动完成奈雪点单小程序的每日任务,包括:
- 自动检测 Token 有效性
- 自动签到(如果未签到)
- 获取用户基础信息(昵称、手机号)
- 查询当前奈雪币余额
- 记录连续签到天数
- 支持多账号执行,适用于 Node.js 脚本自动化平台(如青龙面板)定时运行。
使用方法
- 配置环境变量
NAIXUE_TOKEN
,内容为 Bearer Token(去掉 Bearer)。 - 多账号用
&
或换行分隔。 - 定时运行脚本。
完整代码实现
以下是完整的脚本代码:
const init = require('init')
const {$, notify, sudojia, checkUpdate} = init('奈雪点单');
const crypto = require('crypto');
const naiXueList = process.env.NAIXUE_TOKEN ? process.env.NAIXUE_TOKEN.split(/[\n&]/) : [];
let message = '';
// 接口地址
const baseUrl = 'https://tm-web.pin-dao.cn'
// openId
const openId = 'AsaSsGzbziPlZwfiXM';!(async () => {await checkUpdate($.name, naiXueList);for (let i = 0; i < naiXueList.length; i++) {const index = i + 1;$.token = naiXueList[i];console.log(`\n*****第[${index}]个${$.name}账号*****`);const isLogin = await baseUserInfo();if (!isLogin) {console.error(`Token 已失效`);await notify.sendNotify(`【Token失效通知】`, `${$.name}账号[${index}] Token 已失效,请重新登录获取 Token\n\n`);continue;}message += `📣====${$.name}账号[${index}]====📣\n`;message += `${$.nickName}(${$.mobile})\n`;await $.wait(sudojia.getRandomWait(800, 1200));await main();await $.wait(sudojia.getRandomWait(2000, 2500));}if (message) {await notify.sendNotify(`【${$.name}】`, `${message}`);}
})().catch((e) => $.logErr(e)).finally(() => $.done());// ... existing code ...
功能说明
方法列表
方法名 | 作用描述 |
---|---|
baseUserInfo() | 校验当前用户 Token 是否有效,获取用户昵称、手机号等基础信息 |
queryAndHandleSignIn() | 查询当前是否已签到,未签到则调用 performSignIn() 执行签到 |
performSignIn(nowDate) | 执行当天的签到操作(POST 提交签到日期) |
queryUserCoin() | 查询用户当前奈雪币余额与连续签到天数 |
sendRequest(apiOptions) | 所有接口请求的封装方法,自动附带签名和通用参数 |
getBody() | 生成请求签名和结构,包括 HMAC-SHA1 签名逻辑和时间戳 |
randomString() | 生成用于签名的 nonce 随机字符串(默认6位) |
formatDate(date) | 格式化日期为 YYYY-MM-DD 格式,用于签到接口参数 |
关键变量
变量名 | 说明 |
---|---|
NAIXUE_TOKEN | 环境变量,内容是 Bearer Token(去掉 Bearer) |
$.token | 当前用户的 token,用于 Authorization |
$.signCount | 连续签到的天数 |
$.nickName | 当前用户昵称 |
$.mobile | 当前用户手机号 |
openId | 固定写死的 openId,签名计算需要 |
执行流程图
以下是脚本的主要执行流程(Mermaid 语法):
注意事项
本文部分仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性、准确性、完整性和有效性,请根据情况自行判断。