/actions-mtz-coupons

以自动化的方式领取外卖红包。

Primary LanguageJavaScriptMIT LicenseMIT

外卖神券天天领

🧧【美团】外卖神券天天领

workflow release update fork

外卖神券天天领,超值红包享不停;以自动化的方式领取美团红包。

★ 专注领劵,不搞杂七杂八
★ 多帐号支持,全村都能配上
★ 并行化任务,数管齐下更有效率
★ 异常重试,一次不行再来一次
★ 多路消息通知,总有一个到达你
★ Github Actions 部署,从未如此简单

一、📕 使用手册

获取账号 TOKEN

打开美团主页,登录后使用 Chrome DevTools 或任意抓包工具获取 cookie 信息,提取 token 字段值。

示例:

token=Js3xxxxFyy_Aq-rOnxMte6vKPV4AAAAA6QwAADgqRBSfcmNqyuG8CQ7JDL7xxxxNGbfF7tPNV5347_ANLcydua_JHCSRj0_xxxg9xx;

1.1 🚀 部署

使用 GitHub Actions 部署:

  1. Fork 源项目
    1. 访问 actions-mtz-coupons 源仓库
    2. 点击右上角 Star 按钮 ;)
    3. 点击右上角 Fork 按钮
  2. 添加 Actions secrets
    1. 导航到 Fork 后的仓库主页面
    2. 在仓库菜单栏中,点击 ⚙️Settings
    3. 点击侧边栏 Secrets and variables - Actions条目
    4. 点击 New repository secret 创建仓库密码
      1. Name 输入框中填入 TOKEN
      2. Secret 输入框中填入从 cookie 中提取的 token 值(详见下文 TOKEN 配置)
    5. 点击 Add secret 保存配置

Fork 后的项目可执行 npm run sync 同步上游更新,详细参考【脚本更新】章节

脚本触发方式

Github Actions 工作流支持手动自动两种触发方式

1.2 🔏 TOKEN 配置

TOKEN Secret 支持 StringJSON 对象两种数据格式:

  • String 类型 - 简单配置,值为 cookie 中提取的 token 信息
  • JSON 类型 - 高级配置,适用于一对一推送以及多账户支持

TOKENJSON 类型时,应包含以下属性:

属性名 类型 默认值 必填 说明
token string 账号 token
alias string 账号别名,便于区分多账户
qywxUid string 企业微信通知,用户 id
tgUid string Telegram 通知,用户 id
barkKey string Bark 通知,推送 Key
larkWebhook string 飞书通知,webhook 链接
dtWebhook string 钉钉通知,webhook 链接。当设置加签时,需按照secret|webhook 的格式将 secret 拼接至 webhook 之前(两者以 | 分隔)
qq string Qmsg 通知,qq 号

注意:企业微信通知需配置 QYWX_SEND_CONF Secret,Telegram 通知需配置 TG_BOT_TOKEN Secret,详见【消息通知】章节

String 配置示例:

Js3xxxxFyy_Aq-rOnxMte6vKPV4AAAAA6QwAADgqRBSfcmNqyuG8CQ7JDL7xxxxNGbfF7tPNV5347_ANLcydua_JHCSRj0_xxxg9xx

JSON 配置示例:

{
  "token": "Js3xxxxFyy_Aq-rOnxMte6vKPV4AAAAA6QwAADgqRBSfcmNqyuG8CQ7JDL7xxxxNGbfF7tPNV5347_ANLcydua_JHCSRj0_xxxg9xx",
  "qywxUid": "Vincent",
  "barkKey": "kkWwxxxq5NpWx"
}

多账户配置

TOKEN 指定为数组时,代表启用账户配置。每个配置成员均支持 StringJSON 格式。

配置示例:

[
  "Js3xxxxFyy_Aq-rOnxMte6vKPV4AAAAA6QwAADgqRBSfcmNqyuG8CQ7JDL7xxxxNGbfF7tPNV5347_ANLcydua_JHCSRj0_xxxg9xx",
  {
    "token": "3R2xxxxxUqS_Aq-rOnxMte6vKPV4AAAAA6QwAADgqRBSfcmNqyuG8CQ7JDL7xxxxNGbfF7tPNV5347_ANLcydua_JHCSRj0_xxxg9xx",
    "alias": "fish",
    "barkKey": "kkWwxxxq5NpWx",
    "qywxUid": "Vincent"
  }
]

1.3 🔔 消息通知

发送消息推送,通知程序运行结果。按照通知类型分为用户通知全局通知

  • 用户通知:一对一推送,适用于多账户内的“乘客”
  • 全局通知:推送所有任务的执行情况,适用于程序管理者

支持平台:

用户通知 全局通知 备注
Bark 仅 iOS 支持
飞书
钉钉
Telegram
企业微信
Server 酱
pushplus
Qmsg 酱 ☑️ 平台方对非捐赠版有频次限制,将影响多账户通知通能

消息模板示例:

【外卖神券天天领😋】
账号 xxx:
- ¥5(满20可用)
- ¥7(满35可用)
- ¥3(满20可用)

账号 xxx:
- ¥5(满20可用)
- ¥7(满35可用)
...

1.3.1 Bark

Bark 是一款可以接收自定义通知的 iOS 应用

获取推送 key

打开 Bark App 查看推送 url:

URL 组成:host/:key/:body
示例: https://api.day.app/kkWwxxxq5NpWx/推送内容...

host: 服务域名
key: 推送 key,设备唯一标识
body: 自定义推送内容

提取推送 key,本例为 kkWwxxxq5NpWx

用户通知配置

TOKEN Secret 配置为 JSON 格式,添加 barkKey 属性,填入推送 key。

全局通知配置

进入项目 "Settings" → "Secrets" 配置页,点击 New repository secret

  • 新建 BARK_KEY 项,填入推送 key

1.3.2 飞书

飞书是字节跳动旗下先进企业协作与管理平台,提供一站式的无缝办公协作能力。

创建飞书捷径
  1. 打开飞书应用目录,选择 "企业服务" → "连接器" → "飞书捷径",点击“获取”(使用)按钮安装应用
  2. 打开飞书捷径应用,在 “按应用查看模板” 栏目筛选 “webhook”,选择使用 “webhook 收到请求时通知”
  3. 配置 webhook 捷径
    1. 点击 "Catch hook" 卡片
      {
        "mtz": {
          "title": "外卖神券天天领",
          "content": "hello world!"
        }
      }
    2. 点击“通过飞书捷径机器人发送消息”卡片
      • 消息标题 项,清空已有内容,点击右侧加号按钮选择 mtz.title
      • 消息内容 项,清空已有内容,点击右侧加号选择 mtz.content
    3. 点击“保存”按钮应用配置
用户通知配置

TOKEN Secret 配置为 JSON 格式,添加 larkWebhook 属性,填入webhook 地址

全局通知配置

进入项目 "Settings" → "Secrets" 配置页,点击 New repository secret

  • 新建 LARK_WEBHOOK 项,填入webhook 地址

1.3.3 钉钉

钉钉是由阿里巴巴集团开发的智能移动办公平台,用于商务沟通和工作协同。

注意:当设置 “加签” 时,需按照secret\|webhook 的格式将 secret 拼接至 webhook 之前(两者以 | 分隔)

创建钉钉机器人*
  1. 创建一个团队(群聊)
  2. 打开 PC 端钉钉,在群设置中选择 “智能群助手” → “添加机器人” → “自定义”
  3. 填写机器人自定义名称,配置安全设置。安全设置支持以下两种方式:
    1. 自定义关键词:填入 外卖
    2. 加签
  4. 复制 webhook 地址
用户通知配置

TOKEN Secret 配置为 JSON 格式,添加 dtWebhook 属性,填入webhook 地址

全局通知配置

进入项目 "Settings" → "Secrets" 配置页,点击 New repository secret

  • 新建 DINGTALK_WEBHOOK 项,填入webhook 地址

1.3.4 Telegram

Telegram 是一款跨平台的专注于安全和速度的聊天软件。通过创建 Telegram Bot,可发送自定义通知。

创建 Telegram Bot*
  1. Telegram 搜索 @BotFather,点击 /start 启用 bot
  2. 点击 /newbot 创建自定义 bot
    1. 输入 bot 昵称
    2. 输入 bot id(需全局唯一),以 _bot 结尾,例:test233_bot
  3. 创建成功后,将会返回你的 bot token(例:1689581149:AAGYVVjEHsaNxxxT8eQxxxshwr2o4Pxxxu86
  4. Telegram 搜索刚刚创建的 bot id(本例: test_bot),点击 /start 启用 bot
获取 Bot Token

Telegram 搜索 @BotFather,点击 /mybots,获取 bot token

获取用户 ID

Telegram 搜索 @userinfobot,点击 /start,获取用户 ID。

配置 Bot Token

进入项目 "Settings" → "Secrets" 配置页,点击 New repository secret

  • 新建 TG_BOT_TOKEN 项,填入 bot token
用户通知配置

TOKEN Secret 配置为 JSON 格式,添加 tgUid 属性,填入用户 ID。

全局通知配置

进入项目 "Settings" → "Secrets" 配置页,点击 New repository secret

  • 新建 TG_USER_ID 项,填入用户 ID

1.3.5 企业微信

企业微信 是微信团队出品的企业通讯与办公应用,具有与微信互联的能力。

创建企业微信应用*
  1. PC 端打开企业微信官网,注册一个企业
  2. 注册完成后,进入“应用管理” → “应用” → “自建”,点击 ➕创建应用
  3. 完善应用名称与 logo 信息,可见范围选择公司名
获取应用信息

进入企业微信管理后台:

  1. 我的企业” → “企业信息” 下获取 “企业 ID”
  2. 应用管理” → “应用” → “自建”,点进目标应用,获取 AgentId(应用 ID)
  3. 应用管理” → “应用” → “自建”,点进目标应用,获取 Secret(应用钥匙)
配置企业微信通知

进入项目 "Settings" → "Secrets" 配置页,点击 New repository secret

  • 新建 QYWX_SEND_CONF 项,填入 <JSON 配置>

JSON 配置字段说明:

属性名 类型 默认值 必填 说明
corpId string 企业 ID
agentId string 应用 ID
corpSecret string 应用密匙
toUser string @all (推送所有) 用户 ID,多用户以 | 分割

示例:

{
  "corpId": "wwxxxe9ddxxxc50xxx",
  "agentId": "1000002",
  "corpSecret": "12Qxxxo4hxxxyedtxxxdyfVxxxCqh6xxxF0zg3xxxNI",
  "toUser": "@all"
}
用户通知配置

TOKEN Secret 配置为 JSON 格式,添加 qywxUid 属性

全局通知配置

QYWX_SEND_CONF Secret 设置 toUser 属性

1.3.6 Server 酱(仅支持全局通知)

Server 酱 是一款从服务器、路由器等设备上推消息到手机的工具。

获取 SendKey

打开 Server 酱 SendKey 页面,获取 SendKey

全局通知配置

进入项目 "Settings" → "Secrets" 配置页,点击 New repository secret

  • 新建 SC_SEND_KEY 项,填入 SendKey

1.3.7 pushplus(仅支持全局通知)

pushplus 推送加。是一个集成了微信、企业微信、钉钉、短信、邮件等渠道的信息推送平台。

获取 pushplus token

进入 pushplus 官网,登录后获取 pushplus token

全局通知配置

进入项目 "Settings" → "Secrets" 配置页,点击 New repository secret

  • 新建 PUSHPLUS_TOKEN 项,填入 token

1.3.8 Qmsg 酱

Qmsg 酱 是一个 QQ 消息推送平台。

获取 qmsg key

进入 Qmsg 酱管理台。登录后获取推送 key

配置 qmsg key

进入项目 "Settings" → "Secrets" 配置页,点击 New repository secret

  • 新建 QMSG_KEY 项,填入 key
用户通知配置

TOKEN Secret 配置为 JSON 格式,添加 qq 属性,填入用户 qq 号。

全局通知配置

进入项目 "Settings" → "Secrets" 配置页,点击 New repository secret

  • 新建 QMSG_ADMIN 项,填入 qq 号

二、🔄 脚本更新

此项目将长期维护,为了确保副本能够及时享受到上游更新,请定期执行同步操作。

2.1 使用命令同步(推荐)

执行 npm script:

npm run sync

脚本执行后会拉取上游仓库的最新主分支代码,与本地主分支进行合并,最后合并结果同步到远程仓库。

2.2 手动同步

参考 Github 官方文档 同步复刻

三、🛠 开发与测试

为了便于调试,项目使用 dotenv 储存本地配置,在项目根目录下创建 .env 文件,填入 Secrets 信息。

示例:

# 美团 cookie token
TOKEN=token=Js3xxxxFyy_Aq-rOnxMte6vKPV4AAAAA6QwAADgqRBSfcmNqyuG8CQ7JDL7xxxxNGbfF7tPNV5347_ANLcydua_JHCSRj0_xxxg9xx;
# bark 推送 key
BARK_KEY=kkWwxxxq5NpWx
# telegram bot token
TG_BOT_TOKEN=1689581149:AAGYVVjEHsaNxxxT8eQxxxshwr2o4Pxxxu86
# telegram 用户 ID
TG_USER_ID=100000000
# server 酱 SendKey
SC_SEND_KEY=SCTxxxxxTPIvAYxxxxxXjGGzvCfUxxxxxx
# 企业微信配置
QYWX_SEND_CONF={"agentId": "1000002", "corpId": "wwxxxe9ddxxxc50xxx", "corpSecret": "12Qxxxo4hxxxyedtxxxdyfVxxxCqh6xxxF0zg3xxxNI", "toUser": "@all"}
# 钉钉 webhook (加签)
SEC69162axxxf59sdss23|https://oapi.dingtalk.com/robot/send?access_token=09bsdfa66xxxa608bsds

3.1 本地调试

npm run start:local

3.2 单元测试

npm run test

四、参与贡献

请参阅:CONTRIBUTING.md

五、📜 声明

本项目仅供学习与研究之用,请勿用于商业或非法用途。原作者不能完全保证项目的合法性,准确性和安全性,因使用不当造成的任何损失与损害,与原作者无关。请仔细阅读此声明,一旦您使用并复制了本项目,则视为已接受此声明。

Star History

Star History Chart