• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
profMoish

profMoish

MindfulMiles

Public
Like
MindfulMiles
Home
Code
5
README.md
C
daily_scheduler.ts
telegram_bot.ts
telegram_scheduler.ts
telegram_webhook.ts
Branches
1
Pull requests
Remixes
History
Environment variables
3
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
README.md
Code
/
README.md
Search
5/26/2025
Viewing readonly version of main branch: v43
View latest version
README.md

Telegram Bot для Val Town

Набор скриптов для отправки сообщений через Telegram Bot API в Val Town.

📋 Содержание

  • telegram_bot.ts - Основной класс для работы с Telegram Bot API
  • telegram_webhook.ts - HTTP эндпоинт для отправки сообщений через веб-запросы
  • telegram_scheduler.ts - Cron-задача для автоматической отправки сообщений

🚀 Быстрый старт

1. Создание Telegram бота

  1. Найдите @BotFather в Telegram
  2. Отправьте команду /newbot
  3. Следуйте инструкциям для создания бота
  4. Сохраните полученный токен

2. Получение Chat ID

Для отправки сообщений нужен Chat ID получателя:

Способ 1: Через @userinfobot

  1. Найдите @userinfobot в Telegram
  2. Отправьте любое сообщение
  3. Бот вернет ваш Chat ID

Способ 2: Через API

  1. Отправьте сообщение вашему боту
  2. Откройте в браузере: https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates
  3. Найдите chat.id в ответе

3. Настройка в Val Town

  1. Добавьте переменную окружения TELEGRAM_BOT_TOKEN с токеном вашего бота
  2. В коде замените "YOUR_CHAT_ID" на реальный Chat ID

📖 Использование

Базовая отправка сообщений

import { sendTelegramMessage } from "./telegram_bot.ts"; // Простое сообщение await sendTelegramMessage("123456789", "Привет!"); // С HTML разметкой await sendTelegramMessage( "123456789", "<b>Жирный</b> и <i>курсивный</i> текст", { parseMode: 'HTML' } );

HTTP API для отправки сообщений

Настройте telegram_webhook.ts как HTTP val и отправляйте POST запросы:

curl -X POST https://your-val.web.val.run/ \ -H "Content-Type: application/json" \ -d '{ "chat_id": "123456789", "text": "Сообщение через API", "parse_mode": "HTML" }'

Автоматические уведомления

Настройте telegram_scheduler.ts как cron val для:

  • Ежедневных напоминаний
  • Уведомлений о погоде
  • Регулярных отчетов

🔧 Конфигурация

Переменные окружения

  • TELEGRAM_BOT_TOKEN - токен вашего Telegram бота (обязательно)

Настройка получателей

В telegram_scheduler.ts измените массив RECIPIENTS:

const RECIPIENTS: Recipient[] = [ { chat_id: "123456789", name: "Иван Иванов" }, { chat_id: "987654321", name: "Мария Петрова" }, ];

📚 API Reference

TelegramBot класс

sendMessage(chatId, text, options?)

Отправляет текстовое сообщение.

Параметры:

  • chatId - ID чата получателя
  • text - текст сообщения
  • options - дополнительные опции:
    • parseMode - режим разметки ('HTML', 'Markdown', 'MarkdownV2')
    • disableWebPagePreview - отключить предпросмотр ссылок
    • disableNotification - тихая отправка

sendMessageWithKeyboard(chatId, text, keyboard)

Отправляет сообщение с inline клавиатурой.

getMe()

Получает информацию о боте.

Утилиты

sendTelegramMessage(chatId, text, options?)

Быстрая отправка сообщения без создания экземпляра класса.

🎯 Примеры использования

1. Уведомления о системных событиях

import { sendTelegramMessage } from "./telegram_bot.ts"; // При ошибке в приложении await sendTelegramMessage( "123456789", "🚨 <b>Ошибка в системе</b>\n\nВремя: " + new Date().toISOString(), { parseMode: 'HTML' } );

2. Ежедневные отчеты

// В cron задаче const report = `📊 <b>Ежедневный отчет</b> 👥 Новых пользователей: 15 💰 Доход: $1,250 📈 Конверсия: 3.2% Время: ${new Date().toLocaleDateString('ru-RU')}`; await sendTelegramMessage("123456789", report, { parseMode: 'HTML' });

3. Интерактивные уведомления

import { TelegramBot } from "./telegram_bot.ts"; const bot = new TelegramBot(Deno.env.get('TELEGRAM_BOT_TOKEN')!); await bot.sendMessageWithKeyboard( "123456789", "Выберите действие:", [ [ { text: "✅ Подтвердить", callback_data: "confirm" }, { text: "❌ Отклонить", callback_data: "reject" } ], [ { text: "📊 Статистика", callback_data: "stats" } ] ] );

🔒 Безопасность

  • Никогда не храните токен бота в коде
  • Используйте переменные окружения Val Town
  • Ограничьте доступ к HTTP эндпоинтам при необходимости
  • Валидируйте входящие данные

🐛 Отладка

Проверка подключения к боту

import { TelegramBot } from "./telegram_bot.ts"; const bot = new TelegramBot(Deno.env.get('TELEGRAM_BOT_TOKEN')!); const info = await bot.getMe(); console.log('Информация о боте:', info);

Логирование ошибок

Все функции возвращают результат операции. Проверяйте статус:

const success = await sendTelegramMessage("123456789", "Тест"); if (!success) { console.error('Не удалось отправить сообщение'); }

📝 Лицензия

MIT License - используйте свободно в своих проектах.

🤝 Поддержка

При возникновении проблем:

  1. Проверьте правильность токена бота
  2. Убедитесь, что Chat ID корректный
  3. Проверьте логи в Val Town
  4. Убедитесь, что бот не заблокирован пользователем
FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
© 2025 Val Town, Inc.