BARU: Helius mengakuisisi Light Protocol
Buat Bot Telegram Solana dengan Kurang dari 100 Baris Kode
Blog/Pengembangan

Buat Bot Telegram Solana dengan Kurang dari 100 Baris Kode

Engineer IntegrasiHet Dagli di XHet Dagli di LinkedIn
Bacaan 4 menit

Ingin terus mendapatkan informasi terbaru tentang peristiwa Solana secara real-time? Panduan ini akan menunjukkan cara membuat bot Telegram yang dapat melacak aktivitas on-chain. Kami akan menggunakan pelacak penjualan NFT sebagai contoh, tetapi templat yang kami buat dapat dengan mudah disesuaikan untuk kasus penggunaan lain.

Berikut tampilan bot contoh kami:

Templat ini menggabungkan webhook Helius untuk data Solana secara real-time dengan Cloudflare Workers untuk hosting serverless. Baik untuk melacak penjualan NFT, memantau protokol DeFi, maupun mengawasi dompet tertentu, konfigurasi ini menyediakan fondasi yang kuat.

Menyiapkan Proyek Anda

Mari siapkan dan jalankan proyek Anda:

1. Kloning repositori

Kode
git clone https://github.com/helius-labs/cloudfare-telegram-template.git

cd cloudfare-telegram-template

2. Instal dependensi

Kode
npm install

3. Konfigurasikan variabel lingkungan

Buka wrangler.toml dan isi key berikut:

TELEGRAM_BOT_TOKEN

  1. Buka Telegram dan cari @BotFather.
  2. Mulai percakapan dengan BotFather dan kirim perintah /newbot. 
  3. Ikuti petunjuk untuk memilih nama dan nama pengguna bot Anda. 
  4. Setelah dibuat, BotFather akan memberi Anda token. Ini adalah TELEGRAM_BOT_TOKEN Anda. 

TELEGRAM_CHAT_ID

  1. Buat channel dan tambahkan bot Anda sebagai administrator.
  2. Kirim pesan ke channel tersebut.
  3. Kunjungi: https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates
  4. Temukan field "chat":{"id": dalam respons. Ini adalah TELEGRAM_CHAT_ID Anda.
  5. Tonton video ini untuk panduan langkah demi langkah:

HELIUS_API_KEY Key API Helius Anda (dapatkan dari Helius)

AUTH_TOKEN Buka bash dan buat AUTH_TOKEN yang unik:

Kode
openssl rand -base64 32

4. Deploy ke Cloudflare

Kode
npm run deploy

Setelah menjalankan perintah ini, Anda akan melihat URL deployment di output konsol. Catat URL ini karena Anda akan membutuhkannya pada langkah berikutnya.

5. Buat webhook Anda

Gunakan URL deployment dari langkah sebelumnya untuk membuat webhook Anda:

Kode
curl -X POST https://your-worker-url.workers.dev/create-webhook

Anda akan menerima respons berhasil setelah menjalankan perintah ini.

Anda dapat melihat webhook baru yang telah disiapkan di dasbor Helius Anda.

6. Edit webhook Anda

Setelah membuat webhook, Anda dapat menyesuaikannya lebih lanjut di dasbor Helius: 

  1. Buka bagian webhook di dasbor Anda
  2. Webhook yang baru dibuat akan muncul dalam daftar. 
  3. Klik webhook tersebut untuk mengedit pengaturannya.
  4. Di sini Anda dapat mengubah berbagai parameter seperti:
    • Jenis transaksi yang ingin Anda lacak
    • Alamat dompet tertentu yang ingin dipantau
    • Jaringan (mainnet, devnet)

Penjelasan Kode

Pertama, mari periksa import dan definisi tipe:

Kode
import { Hono } from 'hono';

type Env = {
  HELIUS_API_KEY: string;
  TELEGRAM_BOT_TOKEN: string;
  TELEGRAM_CHAT_ID: string;
  AUTH_TOKEN: string;
};

‍Kami menggunakan Hono, framework web ringan untuk Cloudflare Workers. Tipe Env mendefinisikan variabel lingkungan untuk integrasi Helius dan Telegram.

Selanjutnya, kita menyiapkan aplikasi Hono:‍

Kode
const app = new Hono<{ Bindings: Env }>();

app.get('/', (c) => c.text('Solana Action Bot is running!'));

Kode ini membuat aplikasi kita dan menyiapkan endpoint pemeriksaan kondisi sederhana.

Sekarang, mari buat webhook:

Kode
app.post('/create-webhook', async (c) => {
  const webhookURL = `${new URL(c.req.url).origin}/webhook`;
  console.log('Setting up webhook with URL:', webhookURL);

  const response = await fetch(
    `https://api.helius.xyz/v0/webhooks?api-key=${c.env.HELIUS_API_KEY}`,
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        webhookURL: webhookURL,
        transactionTypes: ["NFT_SALE"],
        accountAddresses: ["M2mx93ekt1fmXSVkTrUL9xVFHkmME8HTUi5Cyc5aF7K"], // Magic Eden v2 program
        webhookType: "enhanced",
        authHeader: c.env.AUTH_TOKEN
      }),
    }
  );
  const data = await response.json();
  console.log('Helius webhook setup response:', data);
  return c.json({ success: true, webhook: data, webhookURL: webhookURL });
});

Endpoint ini menyiapkan webhook Helius. Dalam contoh ini, kita melacak penjualan NFT dari program Magic Eden v2, tetapi Anda dapat mengubah transactionTypes dan accountAddresses sesuai kebutuhan.‍

Berikut cara kita mengirim pesan ke Telegram:

Kode
async function sendTelegramMessage(message: string, env: Env) {
  const url = `https://api.telegram.org/bot${env.TELEGRAM_BOT_TOKEN}/sendMessage`;
  const response = await fetch(url, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      chat_id: env.TELEGRAM_CHAT_ID,
      text: message,
      parse_mode: 'Markdown',
    }),
  });
  return response.json();
}

Fungsi ini memformat pesan dan mengirimkannya ke chat Telegram kita.

Terakhir, mari tangani data webhook yang masuk:

Kode
app.post('/webhook', async (c) => {

  const authToken = c.req.header('Authorization');
  if (authToken !== c.env.AUTH_TOKEN) {
    return c.text('Unauthorized', 401);
  }

  let data;
  try {
    data = await c.req.json();
    console.log('Received webhook data:', JSON.stringify(data, null, 2));
  } catch (error) {
    console.error('Error parsing webhook data:', error);
    return c.text('Error processing webhook', 400);
  }

  if (!Array.isArray(data) || data.length === 0) {
    console.log('No transactions in webhook data');
    return c.text('No transactions to process', 200);
  }

  for (const transaction of data) {
    if (transaction.type === 'NFT_SALE') {
      const { amount, buyer, seller, signature, nfts } = transaction.events.nft;
      const message = `🎉 *NFT Sale*\n\n` +
        `*Price*: ${amount / 1e9} SOL\n` +
        `*Buyer*: \`${buyer}\`\n` +
        `*Seller*: \`${seller}\`\n` +
        `*Signature*: [View on Solana Explorer](https://explorer.solana.com/tx/${signature})`;

      try {
        const result = await sendTelegramMessage(message, c.env);
        console.log('Telegram message sent:', result);
      } catch (error) {
        console.error('Error sending Telegram message:', error);
      }
    }
  }

  return c.text('Webhook processed');
});

‍Di sinilah kita memproses data dari Helius dan mengirim pesan yang telah diformat ke Telegram. Berdasarkan kasus penggunaan Anda, bagian ini dapat disesuaikan untuk menangani berbagai jenis transaksi atau mengekstrak informasi yang berbeda.

Opsi Penyesuaian

Meskipun contoh kami berfokus pada penjualan NFT, Anda dapat dengan mudah menyesuaikan templat ini untuk berbagai kasus penggunaan:

  1. Ubah transactionTypes saat membuat webhook untuk melacak peristiwa yang berbeda
  2. Ubah accountAddresses untuk memantau program atau dompet tertentu
  3. Sesuaikan format pesan di endpoint /webhook agar sesuai dengan kebutuhan data Anda
  4. Terapkan logika tambahan untuk memfilter atau memproses data yang masuk‍

Jelajahi dokumentasi webhook Helius untuk mengetahui seluruh ragam data dan peristiwa yang dapat dilacak. Namun, jangan membatasi diri hanya pada peristiwa yang didefinisikan secara eksplisit! Webhook Helius sangat fleksibel dan dapat melacak beragam aktivitas on-chain, termasuk aktivitas yang tidak langsung diuraikan atau disebutkan dalam dokumentasi kami.

Berikut beberapa contoh peristiwa yang dapat Anda lacak:

  • Transfer token untuk token SPL tertentu
  • Deployment program baru
  • Pembuatan pool Raydium atau penambahan likuiditas
  • Pembuatan proposal tata kelola atau pemungutan suara
  • Peluncuran candy machine Metaplex
  • Pembuatan pasar Serum

Dengan memanfaatkan templat ini, Anda dapat membuat bot Telegram untuk berbagai tugas pemantauan Solana, mulai dari peristiwa protokol DeFi hingga pelacakan aktivitas dompet dan banyak lagi.

Jika Anda telah membaca sejauh ini, terima kasih! Kami harap panduan ini membantu Anda mulai membuat bot Telegram Solana sendiri. Pastikan untuk berlangganan newsletter kami agar Anda tidak pernah melewatkan informasi terbaru tentang Solana. Siap mempelajari lebih lanjut? Jelajahi artikel terbaru di blog Helius dan lanjutkan perjalanan Solana Anda hari ini.

Referensi Tambahan

  1. Dokumentasi Helius
  2. Dokumentasi Cloudflare Workers
  3. API Bot Telegram
  4. Dokumentasi Hono

Berlangganan Helius

Ikuti perkembangan terbaru dalam pengembangan Solana dan dapatkan pembaruan saat kami memublikasikan postingan

Gambar diperbesar