
Buat Bot Telegram Solana dengan Kurang dari 100 Baris Kode
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
git clone https://github.com/helius-labs/cloudfare-telegram-template.git
cd cloudfare-telegram-template2. Instal dependensi
npm install3. Konfigurasikan variabel lingkungan
Buka wrangler.toml dan isi key berikut:
TELEGRAM_BOT_TOKEN
- Buka Telegram dan cari @BotFather.
- Mulai percakapan dengan BotFather dan kirim perintah
/newbot. - Ikuti petunjuk untuk memilih nama dan nama pengguna bot Anda.
- Setelah dibuat, BotFather akan memberi Anda token. Ini adalah
TELEGRAM_BOT_TOKENAnda.
TELEGRAM_CHAT_ID
- Buat channel dan tambahkan bot Anda sebagai administrator.
- Kirim pesan ke channel tersebut.
- Kunjungi: https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates
- Temukan field
"chat":{"id":dalam respons. Ini adalahTELEGRAM_CHAT_IDAnda. - 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:
openssl rand -base64 32Jangan commit nilai-nilai ini ke Github.
4. Deploy ke Cloudflare
npm run deploySetelah 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:
curl -X POST https://your-worker-url.workers.dev/create-webhookGanti "your-worker-url" dengan URL worker Anda yang sebenarnya.
Anda akan menerima respons berhasil setelah menjalankan perintah ini.
Anda dapat melihat webhook baru yang telah disiapkan di dasbor Helius Anda.
Webhook baru mungkin memerlukan waktu 2–3 menit hingga sepenuhnya aktif dan dapat digunakan.
6. Edit webhook Anda
Setelah membuat webhook, Anda dapat menyesuaikannya lebih lanjut di dasbor Helius:
- Buka bagian webhook di dasbor Anda
- Webhook yang baru dibuat akan muncul dalam daftar.
- Klik webhook tersebut untuk mengedit pengaturannya.
- Di sini Anda dapat mengubah berbagai parameter seperti:
- Jenis transaksi yang ingin Anda lacak
- Alamat dompet tertentu yang ingin dipantau
- Jaringan (mainnet, devnet)
Biarkan field "Webhook URL" tetap seperti semula. Field tersebut harus tetap mengarah ke endpoint /webhook Cloudflare Worker Anda (https://your-worker- url.workers.dev/webhook).
Penjelasan Kode
Pertama, mari periksa import dan definisi tipe:
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:
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:
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:
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:
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:
- Ubah
transactionTypessaat membuat webhook untuk melacak peristiwa yang berbeda - Ubah
accountAddressesuntuk memantau program atau dompet tertentu - Sesuaikan format pesan di endpoint
/webhookagar sesuai dengan kebutuhan data Anda - 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
Artikel Terkait
Berlangganan Helius
Ikuti perkembangan terbaru dalam pengembangan Solana dan dapatkan pembaruan saat kami memublikasikan postingan


