发布于 2026-01-06 8 阅读
0

如何编写 Solana 钱包跟踪 Telegram 机器人 DEV 的全球展示挑战赛,由 Mux 呈现:展示你的项目!

如何编写 Solana 钱包跟踪 Telegram 机器人

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

构建专业的 Solana 钱包跟踪系统的全面指南,该系统可监控交易并通过 Telegram 提供实时通知。

介绍

在瞬息万变的 Solana 交易世界中,随时掌握钱包动态至关重要。本指南将引导您创建一个功能强大的钱包跟踪机器人,该机器人可以监控交易并通过 Telegram 发送详细通知。

系统架构

该系统由三个主要部件组成:

  1. Helius RPC 用于事务监控
  2. MongoDB 用于数据存储
  3. 用于通知的 Telegram 机器人

分步指南

1. 设置你的 Telegram 机器人

首先,我们将创建并配置您的 Telegram 通知机器人。

创建你自己的 Telegram 机器人

  1. 打开 Telegram 并搜索@botfather
  2. 发送/newbot命令
  3. 给你的机器人起个名字(例如:“super_wallet_tracking_bot”)
  4. 保存您的机器人令牌

配置聊天 ID

现在我们已经给机器人命名并获得了机器人令牌,接下来需要获取聊天 ID。

获取您的聊天 ID:

  1. 将您的机器人添加到您的频道
  2. 发送消息
  3. 访问地址:https: //api.telegram.org/bot/getUpdates
  4. 从响应中提取 chat_id

或者您可以使用以下脚本获取您的聊天 ID:

import TelegramBot from "node-telegram-bot-api";
import dotenv from "dotenv";

dotenv.config();

const TELEGRAM_BOT_TOKEN = process.env.TELEGRAM_BOT_TOKEN!;

const bot = new TelegramBot(TELEGRAM_BOT_TOKEN, { polling: true });

bot.on("message", (msg) => {
  console.log("New chat ID:", msg.chat.id);

  TELEGRAM_CHAT_ID = msg.chat.id.toString();
});
Enter fullscreen mode Exit fullscreen mode

环境配置

将以下内容添加到您的 .env 文件中:

TELEGRAM_BOT_NAME = "super_wallet_tracking_bot"
TELEGRAM_BOT_TOKEN = "YOUR_BOT_TOKEN"
TELEGRAM_CHAT_ID = "YOUR_CHAT_ID"
Enter fullscreen mode Exit fullscreen mode

设置好环境变量后,创建一个telegram.ts文件并写入以下代码,即可向 Telegram 发送消息:

import TelegramBot from "node-telegram-bot-api";
import dotenv from "dotenv";

dotenv.config();

const TELEGRAM_CHAT_ID = process.env.TELEGRAM_CHAT_ID!;

const bot = new TelegramBot(TELEGRAM_BOT_TOKEN, { polling: false });

export const sendTelegramMessage = async (message: string) => {
  try {
    await bot.sendMessage(TELEGRAM_CHAT_ID, message, {
      parse_mode: "HTML",
      disable_web_page_preview: true,
    });
  } catch (error) {
    console.error("Failed to send Telegram message:", error);
  }
};
Enter fullscreen mode Exit fullscreen mode

2.集成 Helius RPC

Helius 为 Solana 事务监控提供可靠的 RPC 端点。

设置步骤:

  1. 从Helius 控制面板获取您的 Helius API 密钥
  2. 在 .env 文件中配置 RPC 端点:
RPC_URL = "https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY"
WSS_URL = "wss://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY"
Enter fullscreen mode Exit fullscreen mode

3. 数据库配置及与 MongoDB 的连接

我们使用 MongoDB 来存储交易历史记录和进行分析。

配置:

MONGODB_URI = "mongodb://localhost:27017/solana_wallet_tracking"
Enter fullscreen mode Exit fullscreen mode

创建db.ts文件,并写入以下代码:

import mongoose from "mongoose";

export const connectDB = async (mongodb_url: string) => {
  await mongoose.connect(mongodb_url);
  console.log("📦 MongoDB Connected");
};
Enter fullscreen mode Exit fullscreen mode

4. 钱包监控

配置您要监控的钱包地址:

WALLET_ADDRESS = "YOUR_WALLET_ADDRESS"
Enter fullscreen mode Exit fullscreen mode

5. 使用 Helius RPC 设置 Solana 连接

我们需要通过 Helius RPC 端点与 Solana 区块链建立通信。

创建connection.ts文件,并写入以下代码:

import { Connection } from "@solana/web3.js";
import dotenv from "dotenv";

dotenv.config();

const RPC_URL = process.env.RPC_URL!;
const WSS_URL = process.env.WSS_URL!;

if (!RPC_URL || !WSS_URL) {
  throw new Error(
    "RPC_URL and WSS_URL must be defined in environment variables"
  );
}

export const connection = new Connection(RPC_URL, { wsEndpoint: WSS_URL });
Enter fullscreen mode Exit fullscreen mode

这将创建一个 Connection 实例,该实例提供以下功能:

  • 基于 HTTP 的 RPC 调用进行事务查询
  • 用于实时交易监控的 WebSocket 连接
  • 自动重连处理
  • 连接状态管理

6. 交易分析

系统监控:

  • 交易签名
  • 代币转移
  • 买卖操作
  • 金额变化
  • 时间戳

我们需要从 Helius RPC 获取交易数据,并处理这些数据,详细分析签名:

创建trading.ts文件,并写入以下代码:

import { NATIVE_MINT } from "@solana/spl-token";
import { LAMPORTS_PER_SOL, PublicKey } from "@solana/web3.js";

import { sendTelegramMessage } from "./telegram.js";
import { Trading } from "./models/Trading.js";
import { formatCryptoAddress } from "./lib/format.js";

import { connection } from "./config.js";

const explorerUrl = "https://solscan.io/tx/";
const walletUrl = `https://solscan.io/account/`;

export const subscribeTrading = (key: string) => {
    const anaylzeSignature = async (log: any) => {
      txn = await connection.getParsedTransaction(signature, {
             maxSupportedTransactionVersion: 0,
            commitment: "confirmed",
          });

      if (!txn) {
        console.log(`Failed to fetch transaction after ${attempt} attempts`);
        return;
      }

      // process transaction to get relevant information

      console.log("preTokenBalances", preTokenBalances);
      console.log("postTokenBalances", postTokenBalances);
      console.log("loaced addresses", innerInstructions);

      const message = `
        🔔 <b>New Transaction Detected!</b>

        👛 <b>Wallet:</b> <a href="${walletUrl + signer}">${formatCryptoAddress(signer)}</a>

        💰 <b>Sol Amount:</b> ${solAmount > 0 ? "📥 SELL" : "📤 BUY"} ${Math.abs(solAmount).(3)} SOL

        💸 <b>PNL for this Token:</b> ${totalPNL.toFixed(3)} SOL

        🚀 <b>Token:</b> <a href="${walletUrl + tokenAddress}">${tokenInfo}</a>

        🔗 <a href="${explorerUrl + signature}">View Transaction</a>
${new Date().toLocaleString()}
        `;

      await sendTelegramMessage(message); 
    }

  return connection.onLogs(new PublicKey(key), anaylzeSignature, "processed");
}
Enter fullscreen mode Exit fullscreen mode

结论

这款 Solana 钱包追踪机器人提供了一个强大的解决方案,可通过 Telegram 实时通知监控钱包活动。按照本指南操作并进行配置,您可以创建一个强大的工具来追踪 Solana 交易并随时了解您的钱包动态。

该系统的模块化架构便于维护和未来的增强,同时提供可靠的交易监控和通知传递。

请务必定期监控 API 使用情况并维护数据库,以确保跟踪系统的最佳性能。

联系信息

文章来源:https://dev.to/marksantiago290/how-to-write-solana-wallet-tracking-telegram-bot-3m9h