moments-workers

基于 Cloudflare Workers + Hono + React 的全栈开箱即用项目,完全免费,用于记录和分享美好瞬间 ✨

功能特点

  • 📝 支持用户注册、登录、权限管理(管理员/普通用户)
  • 📸 图片/文件上传,文件存储于 Cloudflare KV,支持 Telegram 云端备份
  • 🗂️ 记录(posts)增删改查,支持分页
  • 🔒 RESTful API,基于 Basic Auth 验证
  • ⚡ 前后端分离,前端基于 React + antd-mobile,后端基于 Hono 框架
  • 🌍 跨域支持,适合多端部署
  • 🛠️ 支持 Cloudflare D1 数据库

技术栈

  • Cloudflare Workers
  • Hono (API 路由)
  • React 18 / antd-mobile
  • Cloudflare KV / D1 Database
  • Vite 构建
  • Telegram Bot API(文件备份)

项目预览

notion image
notion image
notion image
notion image
notion image

部署步骤

  1. 克隆项目
moments-workers
chengzhnagUpdated Oct 29, 2025
notion image
  1. 创建cloudflareKV和D1数据库
登录cloudflare新创建KV和D1数据库
notion image
notion image
notion image
创建出来之后kv和d1都有对应的ID
notion image
notion image
  1. 进入D1数据库新增用户表和记录表

shell

CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, account TEXT NOT NULL UNIQUE, password TEXT NOT NULL, name TEXT NOT NULL, role TEXT NOT NULL DEFAULT 'normal', created_at TEXT DEFAULT (datetime('now', 'localtime')), updated_at TEXT DEFAULT (datetime('now', 'localtime')), extra_data TEXT );
Shell

shell

CREATE TABLE records ( id INTEGER PRIMARY KEY AUTOINCREMENT, creator_id INTEGER NOT NULL, content_text TEXT, content_media TEXT, created_at TEXT DEFAULT (datetime('now', 'localtime')), updated_at TEXT DEFAULT (datetime('now', 'localtime')), extra_data TEXT, FOREIGN KEY (creator_id) REFERENCES users(id) );
Shell

shell

INSERT INTO users (account, password, name, role, extra_data) VALUES ('admin', 'admin123', '系统管理员', 'admin', '{"avatar": "https://cdn.jsdelivr.net/gh/Zgrowth/image@master/141380129-(1).70afffymx2.webp", "phone": "13800138000"}');
Shell
将上面三段代码分别执行
notion image
  1. 修改git仓库配置文件
需要创建Telegram Bot用于存储文件,需要科学上网。
创建 Telegram Bot 并获取 TG_BOT_TOKEN 与 TG_CHAT_ID
🚀 第一步:创建 Telegram Bot
  1. 打开 Telegram
    1. 在手机或电脑上启动 Telegram 应用,并登录你的账号。
  1. 搜索 @BotFather
    1. 在搜索栏中输入 @BotFather,找到并点击进入 BotFather 的聊天窗口。
  1. 创建新 Bot
    1. 在 BotFather 的聊天框中发送以下命令:

      shell

      /newbot
      Shell
      BotFather 会提示你输入 Bot 的名称和用户名。
  1. 设置 Bot 名称
      • 名称:输入你希望的 Bot 名称(可自定义)。
      • 用户名:输入 Bot 的唯一标识符(必须以 _bot结尾,例如 MyCoolBot_bot)。
        • ⚠️ 注意:用户名必须唯一且仅包含字母和 _bot,不能包含中文或特殊符号。
  1. 获取 Bot Token
    1. 成功创建后,BotFather 会返回类似以下的 Token:

      shell

      123456789:ABCDEfghiJK4314daDSadSa7
      Shell
      保存好这个 Token,后续所有 API 请求都需要它。
🧩 第二步:获取群组的 TG_CHAT_ID
  1. 将 Bot 添加到群组
      • 创建一个 Telegram 群组(或使用现有群组)。
      • 在群组中点击右上角的成员列表 → 添加 Bot。
      • 确保 Bot 有权限接收消息(无需管理员权限)。
  1. 在群组中发送消息并 @Bot
      • 在群组中发送任意消息,并在消息中 @Bot(例如):
        • Hello @MyCoolBot_bot
  1. 获取 Chat ID
      • 打开浏览器,访问以下链接(替换 <token> 为你的 Bot Token):
        • shell

          https://api.telegram.org/bot<token>/getUpdates
          Shell
      • 你会看到一个 JSON 格式的响应,示例如下:
        • shell

          { "ok": true, "result": [ { "update_id": 414941268, "message": { "chat": { "id": -465512321, "title": "My Group", "type": "group" } } } ] }
          Shell
      • 找到 chat.id 的值(例如 465512321),这就是群组的 TG_CHAT_ID
🧾 常见问题解答

1. 如何验证 Bot 是否正常工作?

  • 使用以下链接测试 Bot 是否能向群组发送消息:
    • shell

      https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<CHAT_ID>&text=Hello%20World!
      Shell
  • 如果收到 ok: true 的响应,说明配置成功!

2. 如何快速获取 Chat ID?

  • 使用 Bot @getuseridbot
      1. 将 @getuseridbot 添加到群组。
      1. 在群组中发送 /start
      1. Bot 会返回群组的 ID。

3. Token 和 Chat ID 需要保密吗?

  • Token 是敏感信息,请勿公开分享。
  • Chat ID 可以用于内部配置,但需确保安全性。
🛠 示例代码(Python 发送消息)

shell

import requests TOKEN = "123456789:ABCDEfghiJK4314daDSadSa7" CHAT_ID = "-465512321" url = f"https://api.telegram.org/bot{TOKEN}/sendMessage" data = { "chat_id": CHAT_ID, "text": "🎉 Bot 测试消息!" } response = requests.post(url, data=data) print(response.json())
Shell
通过以上步骤,你可以轻松创建 Telegram Bot 并获取所需的 TG_BOT_TOKEN 和 TG_CHAT_ID
其他配置可直接填入保存
  • 修改 wrangler.json,设置你的 Cloudflare KV、D1、Telegram Bot Token 等。
  • 主要环境变量:
    • TG_BOT_TOKEN:Telegram Bot Token
    • TG_CHAT_ID:Telegram 群组/用户ID
    • DOMAIN:你的域名
    • DB:Cloudflare D1 数据库绑定
    • IMAGE:Cloudflare KV 绑定
notion image
  1. 在cloudflare新建workers
notion image
notion image
等待部署完成即可,后续改动git仓库都会触发自动部署
notion image
默认分配的域名需要科学上网才可以访问,建议自定义域名。
  1. 账号和密码
初始账号:admin 初始密码:admin123
可在第三个数据库初始代码里修改默认的初始账号:

shell

INSERT INTO users (account, password, name, role, extra_data) VALUES ('admin', 'admin123', '系统管理员', 'admin', '{"avatar": "https://cdn.jsdelivr.net/gh/Zgrowth/image@master/141380129-(1).70afffymx2.webp", "phone": "13800138000"}');
Shell
Cloud Mail:使用CloudFlare搭建你的私人邮局VPS本地服务器使用Docker容器搭建NotionNext博客教程
Loading...