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(推荐)
- 克隆仓库
git clone https://github.com/0xChris-Defi/LuckyScan.git
cd LuckyScan- 安装依赖
pnpm install- 配置环境变量
复制 .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
- 初始化数据库
pnpm db:push- 启动开发服务器
pnpm dev- 构建项目
pnpm build- 启动生产服务器
NODE_ENV=production node dist/index.jsluckyscan_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
核心逻辑:
- 📅 时间起卦:根据当前时间戳计算年月日时干支(使用
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分:大凶 💀
核心逻辑:
- 🕐 时间起卦:年月日时数字之和除以8得上卦,加时辰数除以8得下卦
- 🔄 五卦生成:
- 本卦:原始卦象
- 互卦:2、3、4爻为下卦,3、4、5爻为上卦
- 变卦:动爻变化后的卦象
- 错卦:阴阳全部颠倒
- 综卦:卦象上下颠倒
- 🎯 体用判断:动爻所在卦为用卦,另一卦为体卦
- ⚡ 五行生克:根据体用五行关系判断吉凶
评分算法(基础分50分):
✅ 用生体:+25分(对方生助我,大吉)
✅ 体克用:+20分(我克制对方,吉利)
✅ 比和:+10分(五行相同,平和)
❌ 体生用:-15分(我生助对方,泄气)
❌ 用克体:-20分(对方克制我,凶险)
✅ 吉卦加分:乾、坤、泰、大有等卦 +10分
❌ 凶卦减分:否、剥、困、蹇等卦 -10分
✅ 五行属性:木(生长)+5分,火(繁荣)+8分
❌ 五行属性:金(收敛)-3分,水(流动)±0分特色功能:
- 📊 展示五个卦象的完整信息(卦名、五行、卦辞)
- 🎨 可视化体用关系(箭头指示生克方向)
- 📖 提供详细的卦象解读和投资建议
核心逻辑:
- 🃏 牌组:使用22张大阿卡纳牌(愚者、魔术师、女祭司...世界)
- 🎲 抽牌:随机抽取3张牌,分别代表过去、现状、未来
- 🔄 正逆位:每张牌有50%概率为正位或逆位
- 📊 牌位权重:过去30%、现状40%、未来30%
评分算法(基础分50分):
// 单牌评分(每张牌预设正位分和逆位分)
✅ 太阳(正位):+18分(最吉利的牌)
✅ 世界(正位):+15分(完成与成功)
✅ 星星(正位):+12分(希望与指引)
❌ 塔(正位):-15分(突然的变故)
❌ 恶魔(正位):-12分(束缚与诱惑)
❌ 死神(正位):-10分(结束与转变)
// 牌组合加分
✅ 三张正位:+10分(整体向好)
❌ 三张逆位:-10分(困难重重)
✅ 现状为吉牌:额外 +5分(当下状态良好)
❌ 未来为凶牌:额外 -5分(前景堪忧)特色功能:
- 🎴 精美的塔罗牌图片展示
- 📝 每张牌的详细解读(正位和逆位含义)
- 🔮 三张牌的综合解读和投资建议
- 🎨 视觉化的时间线展示(过去→现状→未来)
核心逻辑:
- 🎲 三颗骰子:
- 行星骰子:太阳、月亮、水星、金星、火星、木星、土星、天王星、海王星、冥王星、上升、中天
- 星座骰子:白羊、金牛、双子、巨蟹、狮子、处女、天秤、天蝎、射手、摩羯、水瓶、双鱼
- 宫位骰子:第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分:大凶(极度危险,强烈不推荐)
-
智能地址识别
- 🔍 自动识别 Solana 链地址(32-44位 Base58 字符)
- 🔍 自动识别 EVM 链地址(0x开头的42位16进制字符)
- 📝 支持在消息中混合文本和地址
- 🎯 一次可识别多个地址(自动取第一个)
-
占卜查询
- 💬 私聊模式:直接发送代币地址即可查询
- 👥 群组模式:需要 @bot 或回复 bot 消息
- 📊 返回完整的占卜报告(四大占卜结果 + 综合评分)
- 🔗 提供网页链接查看详细报告
-
塔罗抽牌
- 🎴 命令:
/tarot或/塔罗 - 🔮 随机抽取3张塔罗牌
- 📖 显示牌名、正逆位、解读
- 🎨 精美的 Emoji 装饰
- 🎴 命令:
-
用户统计
- 📈 记录每个用户的互动次数
- 👥 记录每个群组的互动次数
- 📊 管理员可查看统计数据
-
限流保护
- ⏱️ 每个用户每小时最多查询5次
- 🚫 超过限制后显示剩余冷却时间
- 🔄 防止恶意刷量和滥用
-
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: 🔮 塔罗占卜
🃏 过去:愚者(正位)
新的开始,充满可能性
🃏 现状:魔术师(正位)
创造力与行动力的展现
🃏 未来:太阳(正位)
成功与喜悦即将到来
💡 综合解读:整体运势向好...
-
Webhook 持久化
- 🔒 使用生产域名配置 Webhook(
https://luckyscan.ai) - 🔄 服务器重启后自动恢复 Webhook 配置
- 📊 实时监控 Webhook 状态(在线/离线)
⚠️ Webhook 掉线时自动通知管理员
- 🔒 使用生产域名配置 Webhook(
-
错误处理
- ✅ 捕获所有异常并记录日志
- 📝 向用户返回友好的错误提示
- 🔄 自动重试失败的请求(最多3次)
- 📊 错误统计和分析
-
性能优化
- ⚡ 异步处理消息,不阻塞 Webhook 响应
- 💾 使用缓存减少数据库查询
- 📊 批量处理日志写入
- 🚀 响应时间 < 500ms
-
统计查询
- 📈 查看总用户数和总群组数
- 👥 查看活跃用户排行榜
- 🏆 查看活跃群组排行榜
- 📊 查看每日互动趋势
-
Webhook 管理
- 🔍 查看 Webhook 当前状态
- 📝 查看最近的 Webhook 日志
⚠️ 查看错误日志和失败率- 🔄 手动重置 Webhook
-
用户管理
- 🚫 封禁恶意用户
- 🔓 解封用户
- 📊 查看用户详细信息
- 🔄 重置用户限流计数
功能说明:
- 🎨 动态生成社交分享卡片(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 渲染开销
- 查询次数统计: 每次查询自动增加计数,用于热门代币排序
- 用户连接钱包(RainbowKit)
- 后端生成随机 nonce
- 用户签名包含 nonce 的消息
- 后端验证签名(viem)
- 创建 session 并返回 cookie
分析代币占卜结果
输入:
{
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; // 占卜时间戳
}获取热门代币列表
输出:
Array<{
contractAddress: string;
tokenName: string;
tokenSymbol: string;
queryCount: number;
lastPrice: number;
priceChange24h: number;
}>获取用户历史记录
输入:
{
page: number;
pageSize: number;
}获取用户收藏列表
获取当前用户信息
GET /auth/google- Google登录GET /auth/google/callback- Google回调GET /auth/twitter- Twitter登录GET /auth/twitter/callback- Twitter回调
POST /api/trpc/walletAuth.getNonce- 获取签名noncePOST /api/trpc/walletAuth.login- 钱包登录POST /api/trpc/walletAuth.logout- 登出
GET /api/og/:contractAddress- 生成/获取 OG Image
欢迎贡献代码!请查看 CONTRIBUTING.md 了解详细的贡献流程。
- Fork 本仓库
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
- 使用 TypeScript 编写代码
- 遵循 Prettier 格式化规范
- 提交前运行
pnpm format格式化代码 - 为新功能编写单元测试(Vitest)
本项目采用 MIT License 开源协议。
- shadcn/ui - 精美的UI组件库
- RainbowKit - Web3钱包连接
- tRPC - 类型安全的API
- DexScreener - 加密货币价格数据
- lunar-typescript - 农历库
- Telegraf - Telegram Bot 框架
- @napi-rs/canvas - 服务端 Canvas 渲染
本平台的分析结果仅供参考,不构成任何投资建议。占卜结果基于传统方法和算法,不代表真实的市场走势。使用本平台进行的任何投资决策所产生的后果,用户需自行承担。
- 🐦 Twitter: @luckyscan_ai
- 📱 Telegram: LuckyScan Bot
- 💬 GitHub Issues: 提交问题
⭐ 如果这个项目对你有帮助,请给个 Star!
Made with ❤️ by LuckyScan Team