NodeSeek-Bot 通俗配置教程:把 NodeSeek 签到、RSS 和 Lucky 抽奖接到 Telegram

NodeSeek-Bot Telegram 自动化教程缩略图

我经常刷 NodeSeek,所以看到 NodeSeek-Bot 这个项目时,第一反应不是“又一个机器人”,而是:这玩意儿很适合把论坛里分散的事情收拢到 Telegram。

它不是单纯的消息提醒工具,而是一个 NodeSeek / DeepFlood 到 Telegram 的桥接机器人:能做论坛账号验证、私聊转发、签到、RSS 关键词推送,还能配合浏览器脚本收集 Lucky 抽奖任务并自动开奖。

本文基于我在 2026-05-12 查看仓库时的代码整理,当前仓库快照为 ae91976,最后提交说明是 fix: support Telegram mention commands in admin panel。后面如果项目更新,配置项以仓库为准。

这个项目能做什么

先用人话说一遍功能:

  • Telegram 私聊转发:别人私聊你的 Bot,验证通过后,消息会转发给管理员。管理员直接回复那条转发消息,就能回给对方。
  • NodeSeek 账号验证:用户第一次联系 Bot 时,Bot 会生成验证码,让用户去 NodeSeek 给你的论坛账号发站内信。机器人轮询论坛私信,看到验证码后完成绑定。
  • 论坛签到:支持 NodeSeek 签到,也能选择随机鸡腿模式;如果配置 DeepFlood Cookie,也可以一起签。
  • RSS 关键词提醒:读取 https://rss.nodeseek.com,按版块和关键词过滤后推送到 Telegram。
  • Lucky 抽奖:配合仓库里的 lucky.user.js 油猴脚本,把 NodeSeek 帖子里的 Lucky 链接推送给 Bot。到了开奖时间,Bot 会按 NodeSeek 的逻辑计算中奖楼层并发给管理员。
  • 管理面板:管理员在 Telegram 里用 /start 就能看到私聊、签到、抽奖、RSS 的入口。

最推荐的部署方式

如果你只是自己用,我建议先用 Docker Compose + Polling 模式 跑起来。这个模式不需要域名,也不用折腾 Telegram Webhook。

但是如果你想用 Lucky 抽奖推送,也就是浏览器里的油猴脚本直接把抽奖链接提交到服务器,那就需要启用 Webhook 模式,并且要有一个 HTTPS 域名反代到 Bot 的 8080 端口。

准备工作

你需要准备这些东西:

  • 一台能访问 Telegram 和 NodeSeek 的 VPS。
  • Docker 和 Docker Compose。
  • 一个 Telegram Bot Token。
  • 你的 Telegram 数字 UID。
  • NodeSeek 登录后的 Cookie。
  • 可选:如果要使用 Lucky Webhook,需要一个 HTTPS 域名。

1. 创建 Telegram Bot

打开 Telegram,找 @BotFather,发送:

/newbot

按提示起名字,最后你会得到一个类似这样的 Token:

1234567890:AAxxxxxxxxxxxxxxxxxxxxxxxxxxxx

这个 Token 要放进 TG_BOT_TOKEN,不要公开。

2. 获取 Telegram UID

可以找 @userinfobot 或类似工具,拿到自己的数字 ID。这个值要放进:

TG_ADMIN_UID=你的数字ID

只有这个 UID 会被当成管理员,能看到管理面板、执行签到、RSS、抽奖等命令。

3. 获取 NodeSeek Cookie

登录 NodeSeek 后,在浏览器开发者工具里找 Cookie。Chrome 大概路径是:

F12 → Application → Storage → Cookies → https://www.nodeseek.com

把当前登录状态需要的 Cookie 拼成一行,格式类似:

key1=value1; key2=value2; key3=value3

然后放到:

NODESEEK_COOKIES=key1=value1; key2=value2; key3=value3

Cookie 等于你的登录态,不要发给别人。失效以后,签到、私信验证、抽奖楼层读取都会受影响。

Docker 部署

在服务器上执行:

mkdir -p /opt/nodeseek-bot
cd /opt/nodeseek-bot
git clone https://github.com/LonelyRyF/NodeSeek-Bot.git .
cp .env.example .env
nano .env

最小配置可以先这样:

TG_BOT_TOKEN=你的BotToken
TG_ADMIN_UID=你的Telegram数字ID
NODESEEK_COOKIES=你的NodeSeekCookie

WEBHOOK_URL=
PORT=8080
HOST=0.0.0.0

POLL_INTERVAL=30
RSS_POLL_INTERVAL=60
LOG_LEVEL=INFO

然后启动:

docker compose up -d --build
docker compose logs -f

项目默认会把数据和日志挂载到:

./data:/app/data
./logs:/app/logs

也就是说,真正需要备份的是 data/.env。其中 data/data.json 会保存验证码、用户绑定关系、黑名单、消息映射、RSS 配置、抽奖任务等状态。

Polling 和 Webhook 怎么选

Polling 模式:

WEBHOOK_URL 留空,Bot 会主动连接 Telegram 拉消息。优点是最省事,不需要域名,不需要 Nginx 反代。日常使用、签到、RSS 都可以这样跑。

Webhook 模式:

设置:

WEBHOOK_URL=https://bot.example.com

程序会暴露这些接口:

POST /webhook
GET  /health
POST /lucky-webhook

注意仓库默认的 docker-compose.yml 没有暴露端口。如果要用 Webhook 或 Lucky 油猴脚本,建议把 compose 改成这样:

services:
  nodeseek-bot:
    build: .
    container_name: nodeseek-bot
    restart: always
    env_file: .env
    ports:
      - "127.0.0.1:8080:8080"
    volumes:
      - ./data:/app/data
      - ./logs:/app/logs

Nginx 反代可以参考:

server {
    listen 443 ssl http2;
    server_name bot.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

如果你暂时不玩 Lucky,只想自己收消息、签到、看 RSS,真的没必要一开始就上 Webhook。

管理员常用命令

Bot 启动后,管理员直接私聊 Bot:

/start

会出现管理面板。也可以用这些命令:

/help

查看所有帮助。

私聊管理

/messenger info
/messenger block
/messenger unblock <tg_uid>
/messenger reset <tg_uid>

block 通常是回复某个用户转发来的消息后执行,用来拉黑这个用户。reset 可以清除某个用户的验证状态,让他重新验证。

签到

/checkin status
/checkin nodeseek
/checkin nodeseek random
/checkin switch on nodeseek
/checkin switch off nodeseek

random 对应 NodeSeek 的随机鸡腿模式。代码里也有自动签到任务,默认时间是北京时间 00:05,但自动签到开关默认是关的,可以在 Telegram 的签到设置面板里打开。

RSS 关键词推送

/rss on
/rss status
/rss keyword add vps
/rss keyword add cloudflare
/rss scope set tech,trade
/rss poll
/rss history 10

RSS 逻辑不是“所有帖子都推”,而是先拉取 https://rss.nodeseek.com,再按版块和关键词匹配。关键词命中后才会发给你。

常见版块 slug 包括:

daily, tech, info, review, trade, carpool, promo, life, dev, photo-share, expose, inner, sandbox

第一次启用 RSS 时,它会先记录历史内容,不会把旧帖子一股脑推给你。这个设计很好,不然刚启动就可能刷屏。

Lucky 抽奖怎么用

Lucky 抽奖需要 Webhook 模式,因为浏览器里的油猴脚本要访问你的服务器:

WEBHOOK_URL=https://bot.example.com
LUCKY_AUTH_KEY=自己生成一串长一点的随机密钥

然后编辑仓库里的 lucky.user.js

const API_BASE_URL = "https://bot.example.com";
const AUTH_KEY = "和 .env 里的 LUCKY_AUTH_KEY 保持一致";

把脚本安装到 Tampermonkey。之后打开 NodeSeek 帖子页面,如果页面里存在 Lucky 链接,脚本会在发布按钮附近加一个“推送抽奖”按钮。

点击后,脚本会把 Lucky URL 发到:

POST /lucky-webhook

请求头里会带:

x-auth-key: 你的 LUCKY_AUTH_KEY

Bot 收到任务后会保存到 data/data.json。如果开奖时间还没到,就等到时间再开奖;如果时间已经过了,就立即执行。

它的开奖逻辑不是随便随机:代码会读取帖子楼层数据,获取 Drand 随机数,再按项目里移植的 NodeSeek 抽奖算法算出中奖楼层。最后把中奖者、楼层和开奖链接发给管理员。

我建议的个人使用方案

如果你和我一样经常逛 NodeSeek,我建议分两步来:

  1. 先开 Polling:把 Bot 跑起来,确认 Cookie 有效,先用签到和 RSS 关键词提醒。
  2. 再开 Webhook:等你确实需要 Lucky 抽奖管理时,再加域名、反代和 lucky.user.js

RSS 关键词可以先加这些:

/rss keyword add vps
/rss keyword add 服务器
/rss keyword add cloudflare
/rss keyword add 域名
/rss keyword add 优惠
/rss keyword add docker

版块可以先限制在技术、交易、测评:

/rss scope set tech,trade,review

这样不会太吵,也更容易收到真正有用的内容。

几个容易踩的坑

1. Cookie 失效。

表现通常是签到失败、验证失败、抽奖楼层读取失败。重新复制 NodeSeek Cookie,更新 .env 后重启容器:

docker compose restart

2. Lucky Webhook 访问不到。

检查三件事:WEBHOOK_URL 是否是 HTTPS、Docker 是否映射了 8080、Nginx 是否正确反代。

3. RSS 开了但没有推送。

先看关键词是否启用,再用:

/rss status
/rss poll

另外,首次初始化不会推历史内容,这是正常的。

4. 验证码时间。

仓库的示例环境变量里有 VERIFICATION_TTL,但我看当前代码时,未使用验证码实际是按 core/code_manager.py 里的 3 分钟清理逻辑执行。也就是说,如果你想改验证码有效期,要改代码而不是只改环境变量。

5. 不要公开 Token 和 Cookie。

TG_BOT_TOKENNODESEEK_COOKIESLUCKY_AUTH_KEY 都属于敏感信息。博客、截图、GitHub issue 里都别带。

总结

NodeSeek-Bot 适合重度 NodeSeek 用户。它最有价值的地方不是“又做了一个 Telegram Bot”,而是把论坛里几个高频动作串起来了:私信验证、消息转发、签到、RSS 关键词监控、Lucky 抽奖。

如果只是自己用,先用 Polling 跑起来就够了。等 RSS 和签到稳定后,再考虑 Webhook 和 Lucky。这个顺序最省心,也最不容易因为配置太多而半路放弃。

项目地址:https://github.com/LonelyRyF/NodeSeek-Bot