MindfulMiles
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.
Viewing readonly version of main branch: v45View latest version
Набор скриптов для отправки сообщений через Telegram Bot API в Val Town.
telegram_bot.ts- Основной класс для работы с Telegram Bot APItelegram_webhook.ts- HTTP эндпоинт для отправки сообщений через веб-запросыtelegram_scheduler.ts- Cron-задача для автоматической отправки сообщений
- Найдите @BotFather в Telegram
- Отправьте команду
/newbot - Следуйте инструкциям для создания бота
- Сохраните полученный токен
Для отправки сообщений нужен Chat ID получателя:
Способ 1: Через @userinfobot
- Найдите @userinfobot в Telegram
- Отправьте любое сообщение
- Бот вернет ваш Chat ID
Способ 2: Через API
- Отправьте сообщение вашему боту
- Откройте в браузере:
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates - Найдите
chat.idв ответе
- Добавьте переменную окружения
TELEGRAM_BOT_TOKENс токеном вашего бота - В коде замените
"YOUR_CHAT_ID"на реальный Chat ID
import { sendTelegramMessage } from "./telegram_bot.ts";
// Простое сообщение
await sendTelegramMessage("123456789", "Привет!");
// С HTML разметкой
await sendTelegramMessage(
"123456789",
"<b>Жирный</b> и <i>курсивный</i> текст",
{ parseMode: 'HTML' }
);
Настройте 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: "Мария Петрова" },
];
Отправляет текстовое сообщение.
Параметры:
chatId- ID чата получателяtext- текст сообщенияoptions- дополнительные опции:parseMode- режим разметки ('HTML', 'Markdown', 'MarkdownV2')disableWebPagePreview- отключить предпросмотр ссылокdisableNotification- тихая отправка
Отправляет сообщение с inline клавиатурой.
Получает информацию о боте.
Быстрая отправка сообщения без создания экземпляра класса.
import { sendTelegramMessage } from "./telegram_bot.ts";
// При ошибке в приложении
await sendTelegramMessage(
"123456789",
"🚨 <b>Ошибка в системе</b>\n\nВремя: " + new Date().toISOString(),
{ parseMode: 'HTML' }
);
// В cron задаче
const report = `📊 <b>Ежедневный отчет</b>
👥 Новых пользователей: 15
💰 Доход: $1,250
📈 Конверсия: 3.2%
Время: ${new Date().toLocaleDateString('ru-RU')}`;
await sendTelegramMessage("123456789", report, { parseMode: 'HTML' });
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 - используйте свободно в своих проектах.
При возникновении проблем:
- Проверьте правильность токена бота
- Убедитесь, что Chat ID корректный
- Проверьте логи в Val Town
- Убедитесь, что бот не заблокирован пользователем