Хотите автоматизировать ответы в Telegram, получать уведомления или просто поэкспериментировать? Создание бота — отличный способ начать. В этой инструкции разберем, как создать самого простого бота-эхо, который будет отвечать вам тем же сообщением, используя бесплатные инструменты от Google — Google Apps Script.
Преимущества этого способа:
- Бесплатно: Не требует аренды сервера или VPS.
- Простота: Не нужны глубокие знания программирования.
- Мощь Google: Используем надежную инфраструктуру Google.
- Интеграция: Легко подключить Google Таблицы, Календарь, Gmail и другие сервисы.
- Не требует постоянного запуска: GAS работает по запросу (когда боту приходит сообщение).
Шаг 1: Создаем бота в Telegram и получаем токен
Вся магия начинается с Отца Ботов — @BotFather.
- Найдите в Telegram пользователя @BotFather.
- Отправьте ему команду /start, а затем /newbot.
- BotFather попросит вас придумать имя для вашего бота (то, что будут видеть пользователи). Например, My GAS Test Bot.
- Затем нужно придумать username для бота. Он должен быть уникальным и заканчиваться на bot (например, my_test_gas_bot).
- После успешного создания BotFather пришлет вам токен доступа. Он выглядит примерно так: 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw.
Сохраните этот токен в надежном месте, он нам понадобится в следующем шаге.
Шаг 2: Создаем скрипт в Google Apps Script
- Перейдите на сайт Google Apps Script.
- Нажмите «Создать проект».
- Вы окажетесь в редакторе кода. Вверху вы увидите название проекта по умолчанию (например, «Проект без названия»). Нажмите на него и дайте проекту понятное имя, например, Telegram Echo Bot.
Теперь самое интересное — напишем код.
Шаг 3: Пишем код для нашего бота-эхо
Удалите весь код, который есть в файле Code.gs по умолчанию, и скопируйте туда следующий код:
// Замените значение в кавычках на токен, который вы получили от BotFather
var TELEGRAM_TOKEN = 'ВАШ_ТОКЕН_БОТА';
// Главная функция, которая будет запускаться при получении сообщения от пользователя
function doPost(e) {
// Парсим входящие данные от Telegram
var update = JSON.parse(e.postData.contents);
// Проверяем, есть ли в обновлении текстовое сообщение
if (update.message && update.message.text) {
// Извлекаем важные данные из сообщения
var chatId = update.message.chat.id;
var text = update.message.text;
// Формируем ответное сообщение
var replyText = 'Вы сказали: ' + text;
// Отправляем ответ обратно в чат
sendTelegramMessage(chatId, replyText);
}
}
// Вспомогательная функция для отправки сообщения через API Telegram
function sendTelegramMessage(chatId, text) {
// Формируем URL для запроса к API Telegram
var url = 'https://api.telegram.org/bot' + TELEGRAM_TOKEN + '/sendMessage';
// Параметры запроса
var payload = {
'chat_id': chatId,
'text': text
};
// Настраиваем и отправляем POST-запрос
var options = {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload)
};
UrlFetchApp.fetch(url, options);
}Что делает этот код:
- doPost(e) — это специальная функция, которая автоматически вызывается, когда на наш скрипт приходит POST-запрос (то есть когда пользователь пишет боту).
- Мы извлекаем ID чата и текст сообщения из входящих данных.
- Функция sendTextMessage формирует правильный URL и отправляет ответ обратно в Telegram.
Обязательно сделайте следующее: Замените в третьей строке кода 'ВАШ_ТОКЕН_БОТА' на настоящий токен, который вы получили от @BotFather. Не забудьте оставить токен в кавычках!
Шаг 4: Развертываем скрипт как Веб-приложение
Теперь нужно сделать наш скрипт доступным извне, чтобы Telegram мог отправлять ему уведомления.
- В редакторе скрипта нажмите на кнопку «Начать развертывание» -> «Новые развертывания».
- Рядом с надписью «Выбрать тип» нажмите на шестеренку и выберите «Веб-приложение».
- В поле «Описание» введите, например, Веб-приложение для Telegram-бота.
- В настройках «Выполнять от имени» оставьте «От моего имени».
- В настройках «У кого есть доступ» выберите «Все» (иначе Telegram не сможет отправить данные на ваш скрипт).
- Нажмите «Начать развертывание».
- Система запросит разрешение на доступ к данным. Внимательно прочитайте запрос и нажмите «Разрешить».
- После успешного развертывания появится окно с URL веб-приложения. Он будет выглядеть так: https://script.google.com/macros/s/.../exec. Скопируйте этот URL! Это ваш Webhook URL.
Шаг 5: Сообщаем Telegram адрес нашего скрипта (Устанавливаем Webhook)
Нам нужно сообщить Telegram, куда пересылать сообщения, предназначенные вашему боту. Для этого используется метод setWebhook.
- Откройте новую вкладку браузера.
- Вставьте в адресную строку следующий URL, предварительно заменив ВАШ_ТОКЕН_БОТА и ВАШ_URL_ВЕБ_ПРИЛОЖЕНИЯ на соответствующие значения:
https://api.telegram.org/botВАШ_ТОКЕН_БОТА/setWebhook?url=ВАШ_URL_ВЕБ_ПРИЛОЖЕНИЯ
Пример готовой ссылки:
https://api.telegram.org/bot110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw/setWebhook?url=https://script.google.com/macros/s/AKfycby.../exec
Нажмите Enter. В ответ вы должны увидеть сообщение в формате JSON:
Это значит, что все прошло успешно.
Шаг 6: Проверяем бота в работе!
- Найдите своего бота в Telegram по username (@my_test_gas_bot).
- Начните диалог, нажав кнопку START.
- Отправьте любое текстовое сообщение.
Ура! Бот должен ответить вам фразой: "Вы сказали: [ваше сообщение]".
Что дальше? Идеи для улучшения
Ваш первый бот готов! Теперь вы можете развивать его:
- Обработка команд: Добавьте условие в функцию doPost для реакции на команды (например, /start).
if (text === '/start') {
sendTextMessage(chatId, 'Привет! Я бот, созданный на Google Apps Script!');
return; // Завершаем функцию, чтобы не слать лишние сообщения
}- Интеграция с Google Таблицами: Чтобы записывать в них сообщения от пользователей или выводить оттуда данные.
- Отправка уведомлений: Напишите функцию, которая будет сама отправлять вам сообщения по расписанию или какому-либо событию.
- Расписание: Используйте встроенный в GAS триггер Time-driven, чтобы бот мог отправлять сообщения по расписанию (например, напоминания).
Если что-то пошло не так:
- Проверьте токен и URL веб-приложения на опечатки.
- Убедитесь, что доступ к веб-приложению стоит "Все".
- В редакторе скрипта перейдите в "Вид" -> "Журналы выполнения". Это ваш лучший друг для отладки. Там видны все ошибки.
Поздравляем! Вы только что создали и запустили своего Telegram-бота, используя мощь и бесплатность Google Apps Script. Теперь у вас есть базовый навык создания Telegram-ботов без сервера. Удачи в ваших экспериментах!