
Создайте Telegram-бота для Solana менее чем в 100 строках кода
Хотите отслеживать события Solana в реальном времени? В этом руководстве мы покажем, как создать Telegram-бота для мониторинга ончейн-активности. В качестве примера мы используем трекер продаж NFT, но создаваемый шаблон легко адаптировать к другим сценариям.
Вот как будет выглядеть наш пример бота:
Этот шаблон объединяет вебхуки Helius для получения данных Solana в реальном времени и Cloudflare Workers для бессерверного хостинга. Такое решение станет надежной основой для отслеживания продаж NFT, мониторинга протоколов DeFi или наблюдения за определенными кошельками.
Настройка проекта
Подготовим проект к запуску:
1. Клонируйте репозиторий
git clone https://github.com/helius-labs/cloudfare-telegram-template.git
cd cloudfare-telegram-template2. Установите зависимости
npm install3. Настройте переменные окружения
Откройте wrangler.toml и заполните следующие ключи:
TELEGRAM_BOT_TOKEN
- Откройте Telegram и найдите @BotFather.
- Начните чат с BotFather и отправьте команду
/newbot. - Следуйте инструкциям, чтобы выбрать имя и имя пользователя для бота.
- После создания BotFather выдаст вам токен. Это ваш
TELEGRAM_BOT_TOKEN.
TELEGRAM_CHAT_ID
- Создайте канал и добавьте бота в качестве администратора.
- Отправьте сообщение в канал.
- Перейдите по адресу: https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates
- Найдите в ответе поле
"chat":{"id":. Это вашTELEGRAM_CHAT_ID. - Посмотрите пошаговую инструкцию в этом видео:
HELIUS_API_KEY
Ваш ключ API Helius (получите его в Helius)
AUTH_TOKEN
Откройте bash и сгенерируйте уникальное значение AUTH_TOKEN:
openssl rand -base64 32Не добавляйте эти значения в коммиты Github.
4. Разверните проект в Cloudflare
npm run deployПосле выполнения этой команды URL развернутого проекта появится в выводе консоли. Сохраните его: он понадобится на следующем шаге.
5. Создайте вебхук
Используйте URL развернутого проекта из предыдущего шага, чтобы создать вебхук:
curl -X POST https://your-worker-url.workers.dev/create-webhookЗамените "your-worker-url" на фактический URL вашего воркера.
После выполнения этой команды вы получите ответ об успешном создании.
Созданный вебхук можно посмотреть в панели управления Helius.
Полный запуск и переход нового вебхука в рабочее состояние могут занять 2–3 минуты.
6. Измените вебхук
После создания вебхука вы можете дополнительно настроить его в панели управления Helius:
- Перейдите в раздел вебхуков в панели управления
- Новый вебхук должен появиться в списке.
- Нажмите на вебхук, чтобы изменить его настройки.
- Здесь можно изменить различные параметры, в том числе:
- Типы транзакций, которые вы хотите отслеживать
- Адреса определенных кошельков для мониторинга
- Сеть (mainnet, devnet)
Не изменяйте поле "Webhook URL". Оно по-прежнему должно указывать на конечную точку /webhook вашего Cloudflare Worker (https://your-worker- url.workers.dev/webhook).
Разбор кода
Сначала рассмотрим импорты и определения типов:
import { Hono } from 'hono';
type Env = {
HELIUS_API_KEY: string;
TELEGRAM_BOT_TOKEN: string;
TELEGRAM_CHAT_ID: string;
AUTH_TOKEN: string;
};
Мы используем Hono — легковесный веб-фреймворк для Cloudflare Workers. Тип Env определяет переменные окружения для интеграций с Helius и Telegram.
Затем настроим приложение Hono:
const app = new Hono<{ Bindings: Env }>();
app.get('/', (c) => c.text('Solana Action Bot is running!'));Этот код создает приложение и настраивает простую конечную точку для проверки работоспособности.
Теперь создадим вебхук:
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 });
});
Эта конечная точка настраивает вебхук Helius. В этом примере мы отслеживаем продажи NFT из программы Magic Eden v2, но вы можете изменить transactionTypes и accountAddresses в соответствии со своими задачами.
Вот как мы отправляем сообщения в 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();
}Эта функция форматирует сообщение и отправляет его в наш чат Telegram.
Наконец, обработаем входящие данные вебхука:
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');
});
Здесь мы обрабатываем данные от Helius и отправляем отформатированные сообщения в Telegram. Вы можете адаптировать эту часть к своему сценарию, чтобы обрабатывать разные типы транзакций или извлекать другую информацию.
Варианты настройки
Хотя наш пример посвящен продажам NFT, этот шаблон легко адаптировать к различным сценариям:
- Измените
transactionTypesпри создании вебхука, чтобы отслеживать другие события - Измените
accountAddresses, чтобы отслеживать определенные программы или кошельки - Настройте форматирование сообщений в конечной точке
/webhookв соответствии с требованиями к данным - Добавьте логику для фильтрации или обработки входящих данных
Изучите документацию по вебхукам Helius, чтобы узнать обо всех доступных для отслеживания данных и событиях. Но не ограничивайтесь только явно определенными событиями. Вебхуки Helius очень гибкие и позволяют отслеживать множество видов ончейн-активности, даже если они напрямую не разбираются или не упоминаются в нашей документации.
Вот несколько примеров событий, которые можно отслеживать:
- Переводы определенных SPL-токенов
- Развертывание новых программ
- Создание пулов Raydium или добавление ликвидности
- Создание предложений по управлению или голосование по ним
- Запуски Metaplex candy machine
- Создание рынков Serum
С помощью этого шаблона можно создавать Telegram-ботов для самых разных задач мониторинга Solana: от событий протоколов DeFi до отслеживания активности кошельков и многого другого.
Спасибо, что дочитали до конца! Надеемся, это руководство помогло вам начать создавать собственного Telegram-бота для Solana. Подпишитесь на нашу рассылку, чтобы не пропускать новости Solana. Хотите узнать больше? Изучите последние статьи в блоге Helius и продолжите знакомство с Solana уже сегодня.
Дополнительные ресурсы
Похожие статьи
Подпишитесь на Helius
Следите за новостями разработки на Solana и получайте уведомления о наших публикациях


