Solana Meme 代币分析 Bot
SolanaTelegram BotWeb3SPL Token

Solana Meme 代币分析 Bot

Telegram 机器人 + Solana 链上数据,实时监控 Meme 代币持有者和价格

  • 支持实时监控多个代币持有者变化
  • 集成多个价格 API,降级模式保证可用性
  • 自动检测和转发新代币地址

项目概述

Solana Meme Bot 是一个专为 Solana 生态 Meme 代币设计的 Telegram 机器人。通过集成 Solana RPC 节点和多个价格 API,实现对代币持有者分析、价格监控和群组消息转发的全自动化服务。

核心架构

技术栈

  • Bot 框架: Telegraf + Telegram API
  • 区块链: Solana Web3.js + SPL Token
  • 价格数据: Jupiter API + Birdeye API
  • 元数据: Metaplex Token Metadata
  • 部署: PM2 + Node.js

系统架构

核心功能

🔍 代币信息查询

当用户发送 Solana 代币地址时,机器人自动分析并返回详细信息:

// 核心处理逻辑
async function processToken(tokenAddress) {
  // 1. 验证地址格式
  if (!isSolanaAddress(tokenAddress)) {
    return '无效的 Solana 地址'
  }

  // 2. 获取代币价格和元数据
  const { price, symbol } = await getTokenPrice(tokenAddress)

  // 3. 分析持有者信息
  const { holderCount, holders } = await getTokenHoldersInfo(tokenAddress, 100)

  // 4. 生成分析报告
  return formatTokenReport({
    address: tokenAddress,
    symbol,
    price,
    holderCount,
    topHolders: holders.slice(0, 10),
  })
}

📊 持有者分析

  • 持有者数量统计: 实时统计代币持有者总数
  • 巨鲸识别: 自动识别大额持有者和可疑地址
  • 持有分布: 分析代币分布的集中度和去中心化程度
  • 黑名单检测: 集成交易所和混币器地址黑名单

💰 价格监控系统

// 多源价格获取策略
async function getTokenPrice(address) {
  let price = 0
  let symbol = '未知'

  // 1. 优先使用 Jupiter API
  try {
    const priceResponse = await fetch(
      `https://lite-api.jup.ag/price/v3?ids=${address}`
    )
    const priceData = await priceResponse.json()
    if (priceData[address]?.usdPrice) {
      price = priceData[address].usdPrice
    }
  } catch (err) {
    console.log('Jupiter API 失败,切换到 Birdeye')
  }

  // 2. 备用 Birdeye API
  if (price === 0) {
    try {
      const options = {
        headers: {
          'X-API-KEY': BIRDEYE_TOKEN,
          'x-chain': 'solana',
        },
      }
      const response = await fetch(
        `https://public-api.birdeye.so/defi/price?address=${address}`,
        options
      )
      const data = await response.json()
      price = data.data?.value || 0
    } catch (err) {
      console.log('Birdeye API 也失败了')
    }
  }

  return { price, symbol }
}

🤖 群组消息转发

  • 智能地址提取: 自动识别消息中的 Solana 代币地址
  • 去重机制: 防止重复转发相同地址
  • 定时清理: 过期地址自动清理,避免内存泄漏

🔧 优雅降级机制

// 降级模式处理
if (!isSolanaNodeAvailable) {
  return {
    holderCount: null,
    holders: [],
    message: 'Solana 节点暂不可用,部分功能受限',
  }
}

技术亮点

高效的链上数据查询

  • 程序账户过滤: 使用 getProgramAccounts 直接查询 SPL Token 账户
  • 数据切片优化: 只获取必要的账户地址,减少网络传输
  • 批量处理: 并行查询多个账户的详细信息

消息队列处理

// 避免并发处理冲突的队列系统
const messageQueue = []
let isProcessing = false

async function processMessageQueue() {
  if (isProcessing || messageQueue.length === 0) return

  isProcessing = true
  try {
    const { ctx, handler } = messageQueue.shift()
    await handler(ctx)
  } finally {
    isProcessing = false
    processMessageQueue() // 递归处理下一条
  }
}

智能缓存策略

  • 地址去重: 使用 ExpiringAddressSet 实现自动过期的地址缓存
  • 价格缓存: 短期内相同地址查询使用缓存结果
  • 持有者数据缓存: 减少频繁的链上查询

实际应用场景

场景 1:新币快速分析

用户操作: 在群组中发送代币地址 Bot 响应:

🪙 代币信息
地址: 2AQdpHJ2JpcEgPiATUXjQxA8QmafFegfQwSLWSprPicm
符号: MEME
价格: $0.000234
持有者数量: 1,247

📊 持有者分析
• 前10持有者占比: 45.2%
• 可疑地址检测: 发现2个交易所地址
• 风险评估: 中等风险

场景 2:群组监控转发

  • 监听源群组: 自动监听 Alpha 群组中的新代币分享
  • 智能筛选: 只转发符合格式的 Solana 地址
  • 防重复: 24小时内相同地址不重复转发

场景 3:批量监控管理

/list - 查看当前监控列表
选择删除下面一个监控
[PEPE] [DOGE] [SHIB]

/status - 检查系统状态
Solana节点状态: 可用 ✅

业务价值

📈 效率提升

  • 即时分析: 3秒内完成代币基础分析
  • 批量处理: 支持同时监控多个代币
  • 7x24运行: 全天候自动化服务

🛡️ 风险控制

  • 巨鲸预警: 自动识别大额持有者异常行为
  • 黑名单检测: 整合已知的交易所和混币器地址
  • 持有分布分析: 评估代币的去中心化程度

💡 投资决策支持

  • 实时数据: 基于最新链上数据的分析
  • 多维度评估: 价格、持有者、分布等综合分析
  • 历史追踪: 支持定期监控代币变化趋势

技术挑战与解决

RPC 节点稳定性

  • 问题: Solana RPC 节点偶尔不可用或响应慢
  • 解决: 实现优雅降级,保证基础功能可用
  • 效果: 系统可用性从 85% 提升到 95%

数据获取效率

  • 挑战: 查询大量持有者信息耗时较长
  • 优化: 使用数据切片和并行查询
  • 改进: 查询时间从 30 秒减少到 5 秒

消息处理并发

  • 风险: 高频消息可能导致 API 限流
  • 方案: 实现消息队列和速率限制
  • 保障: 确保消息处理的顺序性和可靠性

🚀 这个项目展示了我在 Web3 和 DeFi 领域的技术实践,通过自动化工具帮助用户快速分析 Meme 代币的风险和机会。项目体现了对区块链技术、数据处理和用户体验的综合考虑。