Skip to content

🍀 LuckyScan - 加密货币玄学分析平台 | 结合六爻、梅花易数、塔罗牌、占星骰子等传统占卜方法,为加密货币投资提供多维度玄学分析

License

Notifications You must be signed in to change notification settings

0xChris-Defi/LuckyScan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🍀 LuckyScan

融合古今智慧,分析加密未来

一个结合传统占卜方法与现代数据分析的加密货币玄学分析平台

English | 简体中文

License: MIT TypeScript React Node.js

✨ 项目简介

LuckyScan 是一个创新的加密货币分析工具,将传统的东方占卜智慧(六爻、梅花易数、塔罗牌、占星骰子)与现代区块链数据相结合,为加密货币投资者提供独特的多维度分析视角。

🎯 核心特性

  • 🔮 四大占卜系统

    • 六爻排盘:基于时间戳生成卦象,分析本卦、变卦、六亲、世应、六神
    • 梅花易数:展示本卦、互卦、变卦、错卦、综卦五个卦象及体用关系
    • 塔罗牌:随机抽取三张牌(过去、现状、未来),支持正逆位解读
    • 占星骰子:模拟掷骰子(行星、星座、宫位),提供占星学解读
  • 📊 智能评分系统

    • 四大占卜方法加权计算(六爻35% + 梅花25% + 塔罗20% + 骰子20%)
    • 五级评级体系(大吉、吉、中平、凶、大凶)
    • 圆环进度条可视化展示
  • 💹 实时价格数据

    • 集成 DexScreener API 获取实时价格
    • 24小时价格趋势图表(使用 Recharts)
    • 支持 Solana 和 EVM 链代币
  • 🔐 多种登录方式

    • Web3 钱包登录(RainbowKit + wagmi)
    • Google OAuth 登录
    • Twitter/X OAuth 登录
  • 📱 用户功能

    • 历史记录保存和查询
    • 代币收藏功能
    • 代币对比分析(雷达图)
    • 热门代币展示(按查询次数排序)
  • 🤖 Telegram Bot 集成

    • 支持通过 Telegram Bot 查询代币占卜结果
    • Webhook 模式实时推送
    • 智能识别 Solana 和 EVM 链地址
    • 群组和私聊双模式支持
    • 用户互动统计和限流保护
  • 🎨 赛博朋克设计

    • 霓虹绿 + 紫色渐变主题
    • 响应式布局,完美适配移动端
    • 流畅的动画和交互效果
  • 🖼️ 社交分享优化

    • 动态生成 OG Image(Open Graph 图片)
    • 智能缓存机制(24小时)
    • 支持中文、Emoji、特殊字符
    • 圆环发光效果,视觉冲击力强

🚀 快速开始

前置要求

  • Node.js 22+
  • pnpm 8+
  • MySQL 8+ 或 TiDB(推荐)

安装步骤

  1. 克隆仓库
git clone https://github.com/0xChris-Defi/LuckyScan.git
cd LuckyScan
  1. 安装依赖
pnpm install
  1. 配置环境变量

复制 .env.example.env 并填入配置:

cp .env.example .env

必填配置:

  • DATABASE_URL: MySQL/TiDB 连接字符串
  • SESSION_SECRET: Session 加密密钥(随机字符串)
  • JWT_SECRET: JWT 签名密钥(随机字符串)

可选配置(根据需要启用功能):

  • Google OAuth: GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET
  • Twitter OAuth: TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET
  • Telegram Bot: TELEGRAM_BOT_TOKEN, PUBLIC_DOMAIN
  • 第三方API: AVE_API_KEY, OKX_API_KEY, OKX_SECRET_KEY, OKX_PASSPHRASE
  1. 初始化数据库
pnpm db:push
  1. 启动开发服务器
pnpm dev

访问 http://localhost:3000

生产部署

  1. 构建项目
pnpm build
  1. 启动生产服务器
NODE_ENV=production node dist/index.js

📁 项目结构

luckyscan_web/
├── client/                 # 前端代码
│   ├── src/
│   │   ├── pages/         # 页面组件
│   │   ├── components/    # UI组件
│   │   ├── hooks/         # 自定义Hooks
│   │   ├── lib/           # 工具库(tRPC、wagmi等)
│   │   └── index.css      # 全局样式
│   ├── public/            # 静态资源
│   └── index.html         # HTML模板
├── server/                # 后端代码
│   ├── _core/             # 核心框架(OAuth、tRPC、Vite等)
│   ├── divination/        # 占卜算法
│   │   ├── liuyao.ts     # 六爻算法
│   │   ├── meihua.ts     # 梅花易数算法
│   │   ├── tarot.ts      # 塔罗牌算法
│   │   ├── dice.ts       # 占星骰子算法
│   │   ├── scoring.ts    # 综合评分算法
│   │   └── rateLimiter.ts # 限流保护
│   ├── telegram/          # Telegram Bot
│   │   ├── bot.ts        # Bot主逻辑
│   │   ├── summary.ts    # 代币摘要生成
│   │   ├── divination.ts # 占卜报告生成
│   │   └── userStats.ts  # 用户统计
│   ├── db.ts              # 数据库查询
│   ├── routers.ts         # tRPC路由
│   ├── ogImageCanvas.ts   # OG Image生成
│   └── oauthRouter.ts     # OAuth路由
├── drizzle/               # 数据库Schema和迁移
│   ├── schema.ts          # 数据表定义
│   └── migrations/        # 迁移文件
├── shared/                # 前后端共享代码
├── storage/               # S3存储工具
└── fonts/                 # 字体文件(OG Image渲染)

🛠️ 技术栈

前端

  • 框架: React 19 + TypeScript 5.9
  • 样式: Tailwind CSS 4 + shadcn/ui
  • 状态管理: TanStack Query (React Query)
  • 路由: Wouter
  • 图表: Recharts
  • Web3: RainbowKit + wagmi + viem
  • 构建工具: Vite 6

后端

  • 运行时: Node.js 22
  • 框架: Express 4
  • API: tRPC 11
  • 数据库: Drizzle ORM + MySQL/TiDB
  • 认证: Passport.js (Google/Twitter OAuth) + Web3签名
  • Bot: Telegraf (Telegram Bot API)
  • 图片生成: @napi-rs/canvas

开发工具

  • 包管理: pnpm
  • 代码格式化: Prettier
  • 测试: Vitest

🔧 核心功能实现

🎲 占卜算法详解

1️⃣ 六爻排盘算法

核心逻辑

  • 📅 时间起卦:根据当前时间戳计算年月日时干支(使用 lunar-typescript 农历库)
  • 🎲 摇卦模拟:使用时间戳的秒数和毫秒数作为随机种子,模拟六次摇卦
  • 🔄 动爻判断:每爻有三个阴阳值,三阴为老阴(动),三阳为老阳(动),其余为少阴/少阳(静)
  • 🌟 六神配置:根据日干配置六神(青龙、朱雀、勾陈、螣蛇、白虎、玄武)
  • 👥 六亲关系:根据卦宫五行与爻位五行的生克关系确定六亲(父母、兄弟、子孙、妻财、官鬼)
  • ⚖️ 世应定位:根据卦象类型(八纯卦、游魂卦、归魂卦、本宫卦)确定世应位置

评分算法(基础分50分):

 世爻旺相:+20分(世爻代表自己,旺相则吉)
 世爻囚死:-15分(世爻衰弱则凶)
 用神发动:+15分(用神动则事情有转机)
 忌神发动:-12分(忌神动则阻碍增加)
 青龙临世:+15分(吉神临世,喜事临门)
 白虎临世:-10分(凶神临世,需防破财)
 五行平衡:+10分(卦象五行分布均衡)
 五行失衡:-8分(某一五行过旺或过弱)
 世应相生:+12分(世应和谐,事情顺利)
 世应相克:-10分(世应冲突,阻碍重重)

最终分数范围:0-100分

  • 80-100分:大吉 🎉
  • 60-80分:吉 😊
  • 40-60分:中平 😐
  • 20-40分:凶 😰
  • 0-20分:大凶 💀

2️⃣ 梅花易数算法

核心逻辑

  • 🕐 时间起卦:年月日时数字之和除以8得上卦,加时辰数除以8得下卦
  • 🔄 五卦生成
    • 本卦:原始卦象
    • 互卦:2、3、4爻为下卦,3、4、5爻为上卦
    • 变卦:动爻变化后的卦象
    • 错卦:阴阳全部颠倒
    • 综卦:卦象上下颠倒
  • 🎯 体用判断:动爻所在卦为用卦,另一卦为体卦
  • 五行生克:根据体用五行关系判断吉凶

评分算法(基础分50分):

 用生体:+25分(对方生助我,大吉)
 体克用:+20分(我克制对方,吉利)
 比和:+10分(五行相同,平和)
 体生用:-15分(我生助对方,泄气)
 用克体:-20分(对方克制我,凶险)
 吉卦加分:乾、坤、泰、大有等卦 +10
 凶卦减分:否、剥、困、蹇等卦 -10
 五行属性:木(生长)+5分,火(繁荣)+8
 五行属性:金(收敛)-3分,水(流动)±0分

特色功能

  • 📊 展示五个卦象的完整信息(卦名、五行、卦辞)
  • 🎨 可视化体用关系(箭头指示生克方向)
  • 📖 提供详细的卦象解读和投资建议

3️⃣ 塔罗牌算法

核心逻辑

  • 🃏 牌组:使用22张大阿卡纳牌(愚者、魔术师、女祭司...世界)
  • 🎲 抽牌:随机抽取3张牌,分别代表过去、现状、未来
  • 🔄 正逆位:每张牌有50%概率为正位或逆位
  • 📊 牌位权重:过去30%、现状40%、未来30%

评分算法(基础分50分):

// 单牌评分(每张牌预设正位分和逆位分)
 太阳(正位):+18分(最吉利的牌)
 世界(正位):+15分(完成与成功)
 星星(正位):+12分(希望与指引)
 塔(正位):-15分(突然的变故)
 恶魔(正位):-12分(束缚与诱惑)
 死神(正位):-10分(结束与转变)

// 牌组合加分
 三张正位:+10分(整体向好)
 三张逆位:-10分(困难重重)
 现状为吉牌:额外 +5分(当下状态良好)
 未来为凶牌:额外 -5分(前景堪忧)

特色功能

  • 🎴 精美的塔罗牌图片展示
  • 📝 每张牌的详细解读(正位和逆位含义)
  • 🔮 三张牌的综合解读和投资建议
  • 🎨 视觉化的时间线展示(过去→现状→未来)

4️⃣ 占星骰子算法

核心逻辑

  • 🎲 三颗骰子
    • 行星骰子:太阳、月亮、水星、金星、火星、木星、土星、天王星、海王星、冥王星、上升、中天
    • 星座骰子:白羊、金牛、双子、巨蟹、狮子、处女、天秤、天蝎、射手、摩羯、水瓶、双鱼
    • 宫位骰子:第1宫-第12宫
  • 🌟 组合解读:根据行星、星座、宫位的组合给出占星学解读

评分算法(基础分50分):

// 行星评分
 吉星:木星 +15分、金星 +12分、太阳 +10
 凶星:土星 -12分、火星 -8分、冥王星 -10
⚖️ 中性:月亮、水星、天王星、海王星 ±0分

// 星座评分
 火象星座(白羊、狮子、射手):+8分(热情进取)
 风象星座(双子、天秤、水瓶):+5分(灵活变通)
⚖️ 土象星座(金牛、处女、摩羯):+3分(稳健保守)
 水象星座(巨蟹、天蝎、双鱼):-3分(情绪波动)

// 宫位评分
 第1宫(自我)、第10宫(事业):+8
 第2宫(财富)、第5宫(创造):+10
⚖️ 第3宫(沟通)、第11宫(社交):+5
 第8宫(危机)、第12宫(隐藏):-8

// 特殊组合加分
 木星+射手座+第9宫:+20分(大吉组合)
 金星+金牛座+第2宫:+18分(财运亨通)
 太阳+狮子座+第5宫:+15分(创造力爆发)
 土星+摩羯座+第8宫:-15分(困难重重)

特色功能

  • 🎲 3D骰子动画效果(前端展示)
  • 📊 行星、星座、宫位的详细解读
  • 🌌 占星学知识科普
  • 💡 基于组合的投资建议

📊 综合评分算法

加权计算

综合评分 = 六爻评分 × 35% + 梅花评分 × 25% + 塔罗评分 × 20% + 骰子评分 × 20%

归一化处理

  • 使用 Min-Max 归一化将各占卜方法的分数映射到 [0, 100] 区间
  • 计算标准差,检测分数离散程度
  • 如果标准差过大(>25),降低权重以避免极端值影响

动态调整

if (标准差 > 25) {
  // 分数分歧过大,降低权重
  调整系数 = 0.8;
} else {
  调整系数 = 1.0;
}

最终评级

  • 🎉 80-100分:大吉(强烈看好,建议关注)
  • 😊 60-80分:吉(整体向好,可以考虑)
  • 😐 40-60分:中平(中性观望,谨慎决策)
  • 😰 20-40分:凶(风险较高,建议回避)
  • 💀 0-20分:大凶(极度危险,强烈不推荐)

🤖 Telegram Bot 功能详解

🚀 核心功能

  1. 智能地址识别

    • 🔍 自动识别 Solana 链地址(32-44位 Base58 字符)
    • 🔍 自动识别 EVM 链地址(0x开头的42位16进制字符)
    • 📝 支持在消息中混合文本和地址
    • 🎯 一次可识别多个地址(自动取第一个)
  2. 占卜查询

    • 💬 私聊模式:直接发送代币地址即可查询
    • 👥 群组模式:需要 @bot 或回复 bot 消息
    • 📊 返回完整的占卜报告(四大占卜结果 + 综合评分)
    • 🔗 提供网页链接查看详细报告
  3. 塔罗抽牌

    • 🎴 命令:/tarot/塔罗
    • 🔮 随机抽取3张塔罗牌
    • 📖 显示牌名、正逆位、解读
    • 🎨 精美的 Emoji 装饰
  4. 用户统计

    • 📈 记录每个用户的互动次数
    • 👥 记录每个群组的互动次数
    • 📊 管理员可查看统计数据
  5. 限流保护

    • ⏱️ 每个用户每小时最多查询5次
    • 🚫 超过限制后显示剩余冷却时间
    • 🔄 防止恶意刷量和滥用
  6. Webhook 监控

    • 📝 记录每次 Webhook 调用(消息类型、用户ID、响应时间)
    • ⚠️ 记录错误信息和状态
    • 🔄 自动清理旧日志(保留最近1000条)
    • 📊 管理员可查看 Webhook 状态和日志

🎯 使用示例

私聊查询

用户: axUxN2q4AWzHaU6LXmjqQh7KEjaXDPKScjmzwEBpump
Bot: 🔮 正在为您分析代币...
     ✅ 分析完成!
     📊 综合评分:38分(凶)
     🔗 查看完整报告:https://luckyscan.ai/report/axUxN2...

群组查询

用户: @LuckyScan_TG_bot 帮我看看这个币 0x1234...abcd
Bot: 🔮 正在为您分析代币...
     ✅ 分析完成!
     📊 综合评分:75分(吉)
     🔗 查看完整报告:https://luckyscan.ai/report/0x1234...

塔罗抽牌

用户: /tarot
Bot: 🔮 塔罗占卜
     
     🃏 过去:愚者(正位)
     新的开始,充满可能性
     
     🃏 现状:魔术师(正位)
     创造力与行动力的展现
     
     🃏 未来:太阳(正位)
     成功与喜悦即将到来
     
     💡 综合解读:整体运势向好...

🛡️ 安全与稳定性

  1. Webhook 持久化

    • 🔒 使用生产域名配置 Webhook(https://luckyscan.ai
    • 🔄 服务器重启后自动恢复 Webhook 配置
    • 📊 实时监控 Webhook 状态(在线/离线)
    • ⚠️ Webhook 掉线时自动通知管理员
  2. 错误处理

    • ✅ 捕获所有异常并记录日志
    • 📝 向用户返回友好的错误提示
    • 🔄 自动重试失败的请求(最多3次)
    • 📊 错误统计和分析
  3. 性能优化

    • ⚡ 异步处理消息,不阻塞 Webhook 响应
    • 💾 使用缓存减少数据库查询
    • 📊 批量处理日志写入
    • 🚀 响应时间 < 500ms

📊 管理员功能

  1. 统计查询

    • 📈 查看总用户数和总群组数
    • 👥 查看活跃用户排行榜
    • 🏆 查看活跃群组排行榜
    • 📊 查看每日互动趋势
  2. Webhook 管理

    • 🔍 查看 Webhook 当前状态
    • 📝 查看最近的 Webhook 日志
    • ⚠️ 查看错误日志和失败率
    • 🔄 手动重置 Webhook
  3. 用户管理

    • 🚫 封禁恶意用户
    • 🔓 解封用户
    • 📊 查看用户详细信息
    • 🔄 重置用户限流计数

🖼️ OG Image 生成

功能说明

  • 🎨 动态生成社交分享卡片(1200x630 PNG)
  • 📊 展示代币符号、综合评分、四大占卜分数
  • 💾 智能缓存(24小时),避免重复生成
  • 🌐 支持中文、英文、Emoji、特殊字符
  • ✨ 圆环发光效果,视觉冲击力强

技术实现

  • 使用 @napi-rs/canvas 在服务端渲染 Canvas
  • 字体文件打包到项目内(Liberation Sans、Droid Sans Fallback、Noto Color Emoji)
  • Base64 存储在数据库,减少文件系统 I/O
  • HTTP 头标识缓存状态(X-Cache: HIT/MISS

API 端点

GET /api/og/:contractAddress

示例

https://luckyscan.ai/api/og/axUxN2q4AWzHaU6LXmjqQh7KEjaXDPKScjmzwEBpump

💾 数据缓存策略

  • 占卜结果缓存: 全局缓存,相同代币24小时内返回相同结果
  • 价格数据缓存: 24小时缓存,减少API调用
  • OG Image 缓存: 24小时缓存,减少 Canvas 渲染开销
  • 查询次数统计: 每次查询自动增加计数,用于热门代币排序

🔐 钱包登录流程

  1. 用户连接钱包(RainbowKit)
  2. 后端生成随机 nonce
  3. 用户签名包含 nonce 的消息
  4. 后端验证签名(viem)
  5. 创建 session 并返回 cookie

📖 API 文档

tRPC 路由

divination.analyze

分析代币占卜结果

输入:

{
  contractAddress: string;  // 代币合约地址
}

输出:

{
  contractAddress: string;
  tokenInfo: {
    name: string;
    symbol: string;
    price: number;
    priceChange24h: number;
  };
  divination: {
    liuyao: { /* 六爻结果 */ };
    meihua: { /* 梅花易数结果 */ };
    tarot: { /* 塔罗牌结果 */ };
    dice: { /* 占星骰子结果 */ };
  };
  scores: {
    overall: number;        // 综合评分 (0-100)
    level: string;          // 评级 (大吉/吉/中平/凶/大凶)
    individual_scores: {
      liuyao: { score: number; level: string; };
      meihua: { score: number; level: string; };
      tarot: { score: number; level: string; };
      dice: { score: number; level: string; };
    };
  };
  queryCount: number;       // 查询次数
  timestamp: number;        // 占卜时间戳
}

home.getHotTokens

获取热门代币列表

输出:

Array<{
  contractAddress: string;
  tokenName: string;
  tokenSymbol: string;
  queryCount: number;
  lastPrice: number;
  priceChange24h: number;
}>

history.getHistory

获取用户历史记录

输入:

{
  page: number;
  pageSize: number;
}

favorites.list

获取用户收藏列表

auth.me

获取当前用户信息

OAuth 路由

  • GET /auth/google - Google登录
  • GET /auth/google/callback - Google回调
  • GET /auth/twitter - Twitter登录
  • GET /auth/twitter/callback - Twitter回调

钱包认证路由

  • POST /api/trpc/walletAuth.getNonce - 获取签名nonce
  • POST /api/trpc/walletAuth.login - 钱包登录
  • POST /api/trpc/walletAuth.logout - 登出

OG Image 路由

  • GET /api/og/:contractAddress - 生成/获取 OG Image

🤝 贡献指南

欢迎贡献代码!请查看 CONTRIBUTING.md 了解详细的贡献流程。

开发流程

  1. Fork 本仓库
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

代码规范

  • 使用 TypeScript 编写代码
  • 遵循 Prettier 格式化规范
  • 提交前运行 pnpm format 格式化代码
  • 为新功能编写单元测试(Vitest)

📄 开源协议

本项目采用 MIT License 开源协议。

🙏 致谢

⚠️ 免责声明

本平台的分析结果仅供参考,不构成任何投资建议。占卜结果基于传统方法和算法,不代表真实的市场走势。使用本平台进行的任何投资决策所产生的后果,用户需自行承担。

📞 联系方式


⭐ 如果这个项目对你有帮助,请给个 Star!

Made with ❤️ by LuckyScan Team

About

🍀 LuckyScan - 加密货币玄学分析平台 | 结合六爻、梅花易数、塔罗牌、占星骰子等传统占卜方法,为加密货币投资提供多维度玄学分析

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •