
Crea un bot de Telegram para Solana en menos de 100 líneas de código
¿Quieres mantenerte al día sobre los eventos de Solana en tiempo real? Esta guía te mostrará cómo crear un bot de Telegram capaz de monitorear actividades on-chain. Usaremos un monitor de ventas de NFT como ejemplo, pero puedes adaptar fácilmente la plantilla que crearemos a otros casos de uso.
Así se verá nuestro bot de ejemplo:
Esta plantilla combina los webhooks de Helius para obtener datos de Solana en tiempo real con Cloudflare Workers para el alojamiento sin servidor. Ya sea que monitorees ventas de NFT, protocolos DeFi o billeteras específicas, esta configuración te ofrece una base sólida.
Configura tu proyecto
Pongamos tu proyecto en funcionamiento:
1. Clona el repositorio
git clone https://github.com/helius-labs/cloudfare-telegram-template.git
cd cloudfare-telegram-template2. Instala las dependencias
npm install3. Configura las variables de entorno
Abre wrangler.toml y completa las siguientes claves:
TELEGRAM_BOT_TOKEN
- Abre Telegram y busca @BotFather.
- Inicia un chat con BotFather y envía el comando
/newbot. - Sigue las instrucciones para elegir un nombre y un nombre de usuario para tu bot.
- Una vez creado, BotFather te dará un token. Este es tu
TELEGRAM_BOT_TOKEN.
TELEGRAM_CHAT_ID
- Crea un canal y agrega tu bot como administrador.
- Envía un mensaje al canal.
- Visita: https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates
- Busca el campo
"chat":{"id":en la respuesta. Este es tuTELEGRAM_CHAT_ID. - Mira este video para consultar una guía paso a paso:
HELIUS_API_KEY
Tu clave de API de Helius (obtenla en Helius)
AUTH_TOKEN
Abre Bash y genera un AUTH_TOKEN único:
openssl rand -base64 32No confirmes estos valores en Github.
4. Despliega en Cloudflare
npm run deployDespués de ejecutar este comando, verás la URL de tu despliegue en la salida de la consola. Guarda esta URL, ya que la necesitarás en el siguiente paso.
5. Crea tu webhook
Usa la URL de despliegue del paso anterior para crear tu webhook:
curl -X POST https://your-worker-url.workers.dev/create-webhookReemplaza "your-worker-url" por la URL real de tu Worker.
Después de ejecutar este comando, recibirás una respuesta que confirma que se completó correctamente.
Puedes ver el nuevo webhook que configuraste en tu panel de Helius.
El nuevo webhook puede tardar entre 2 y 3 minutos en iniciarse por completo y comenzar a funcionar.
6. Edita tu webhook
Después de crear tu webhook, puedes personalizarlo aún más en el panel de Helius:
- Ve a la sección de webhooks de tu panel
- Deberías ver el webhook que acabas de crear en la lista.
- Haz clic en el webhook para editar su configuración.
- Aquí puedes modificar varios parámetros, como:
- Los tipos de transacciones que quieres monitorear
- Las direcciones de billeteras específicas que quieres monitorear
- La red (mainnet, devnet)
Mantén sin cambios el campo "Webhook URL". Debe seguir apuntando al endpoint /webhook de tu Cloudflare Worker (https://your-worker- url.workers.dev/webhook).
Explicación del código
Primero, examinemos nuestras importaciones y definiciones de tipos:
import { Hono } from 'hono';
type Env = {
HELIUS_API_KEY: string;
TELEGRAM_BOT_TOKEN: string;
TELEGRAM_CHAT_ID: string;
AUTH_TOKEN: string;
};
Usamos Hono, un framework web ligero para Cloudflare Workers. El tipo Env define nuestras variables de entorno para las integraciones con Helius y Telegram.
A continuación, configuramos nuestra aplicación Hono:
const app = new Hono<{ Bindings: Env }>();
app.get('/', (c) => c.text('Solana Action Bot is running!'));Esto crea nuestra aplicación y configura un endpoint sencillo para comprobar su estado.
Ahora, creemos nuestro 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 });
});
Este endpoint configura nuestro webhook de Helius. En este ejemplo, monitoreamos las ventas de NFT del programa Magic Eden v2, pero puedes modificar transactionTypes e accountAddresses según tus necesidades.
Así enviamos mensajes a 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();
}Esta función da formato a nuestro mensaje y lo envía a nuestro chat de Telegram.
Por último, procesemos los datos entrantes del webhook:
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');
});
Aquí procesamos los datos de Helius y enviamos mensajes con formato a Telegram. Según tu caso de uso, puedes personalizar esta parte para gestionar distintos tipos de transacciones o extraer información diferente.
Opciones de personalización
Aunque nuestro ejemplo se centra en las ventas de NFT, puedes adaptar fácilmente esta plantilla a varios casos de uso:
- Modifica
transactionTypesal crear el webhook para monitorear distintos eventos - Cambia
accountAddressespara monitorear programas o billeteras específicos - Ajusta el formato de los mensajes en el endpoint
/webhooksegún tus necesidades de datos - Implementa lógica adicional para filtrar o procesar los datos entrantes
Explora la documentación de webhooks de Helius para descubrir toda la variedad de datos y eventos que puedes monitorear. Sin embargo, no te limites solo a los eventos definidos explícitamente. Los webhooks de Helius son increíblemente versátiles y pueden monitorear una amplia variedad de actividades on-chain, incluso aquellas que no se analizan ni mencionan directamente en nuestra documentación.
Estos son algunos ejemplos de eventos que podrías monitorear:
- Transferencias de tokens SPL específicos
- Nuevos despliegues de programas
- Creaciones de pools de Raydium o adiciones de liquidez
- Creaciones de propuestas de gobernanza o votaciones
- Lanzamientos de candy machines de Metaplex
- Creaciones de mercados de Serum
Con esta plantilla, puedes crear bots de Telegram para una gran variedad de tareas de monitoreo en Solana, desde eventos de protocolos DeFi hasta el seguimiento de la actividad de billeteras y mucho más.
Si llegaste hasta aquí, ¡gracias! Esperamos que esta guía te haya ayudado a comenzar a crear tu propio bot de Telegram para Solana. Suscríbete a nuestro boletín para no perderte ninguna novedad sobre Solana. ¿Quieres profundizar más? Explora los artículos más recientes del blog de Helius y continúa hoy mismo tu recorrido por Solana.
Recursos adicionales
Artículos relacionados
Suscríbete a Helius
Mantente al día con las novedades del desarrollo en Solana y recibe actualizaciones cuando publiquemos


