Этот веб-сайт использует файлы cookie, чтобы обеспечить вам наилучший сервис
Хорошо
Статьи

Как создать Telegram-бота через Google Apps Script: пошаговая инструкция

Хотите автоматизировать ответы в Telegram, получать уведомления или просто поэкспериментировать? Создание бота — отличный способ начать. В этой инструкции разберем, как создать самого простого бота-эхо, который будет отвечать вам тем же сообщением, используя бесплатные инструменты от Google — Google Apps Script.
Преимущества этого способа:
  • Бесплатно: Не требует аренды сервера или VPS.
  • Простота: Не нужны глубокие знания программирования.
  • Мощь Google: Используем надежную инфраструктуру Google.
  • Интеграция: Легко подключить Google Таблицы, Календарь, Gmail и другие сервисы.
  • Не требует постоянного запуска: GAS работает по запросу (когда боту приходит сообщение).

Шаг 1: Создаем бота в Telegram и получаем токен

Вся магия начинается с Отца Ботов — @BotFather.
  1. Найдите в Telegram пользователя @BotFather.
  2. Отправьте ему команду /start, а затем /newbot.
  3. BotFather попросит вас придумать имя для вашего бота (то, что будут видеть пользователи). Например, My GAS Test Bot.
  4. Затем нужно придумать username для бота. Он должен быть уникальным и заканчиваться на bot (например, my_test_gas_bot).
  5. После успешного создания BotFather пришлет вам токен доступа. Он выглядит примерно так: 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw.
⚠️ ВАЖНО: Этот токен — пароль от вашего бота. Никому его не показывайте!
Сохраните этот токен в надежном месте, он нам понадобится в следующем шаге.

Шаг 2: Создаем скрипт в Google Apps Script

  1. Перейдите на сайт Google Apps Script.
  2. Нажмите «Создать проект».
  3. Вы окажетесь в редакторе кода. Вверху вы увидите название проекта по умолчанию (например, «Проект без названия»). Нажмите на него и дайте проекту понятное имя, например, 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 мог отправлять ему уведомления.
  1. В редакторе скрипта нажмите на кнопку «Начать развертывание» -> «Новые развертывания».
  2. Рядом с надписью «Выбрать тип» нажмите на шестеренку и выберите «Веб-приложение».
  3. В поле «Описание» введите, например, Веб-приложение для Telegram-бота.
  4. В настройках «Выполнять от имени» оставьте «От моего имени».
  5. В настройках «У кого есть доступ» выберите «Все» (иначе Telegram не сможет отправить данные на ваш скрипт).
  6. Нажмите «Начать развертывание».
  7. Система запросит разрешение на доступ к данным. Внимательно прочитайте запрос и нажмите «Разрешить».
  8. После успешного развертывания появится окно с URL веб-приложения. Он будет выглядеть так: https://script.google.com/macros/s/.../exec. Скопируйте этот URL! Это ваш Webhook URL.

Шаг 5: Сообщаем Telegram адрес нашего скрипта (Устанавливаем Webhook)

Нам нужно сообщить Telegram, куда пересылать сообщения, предназначенные вашему боту. Для этого используется метод setWebhook.
  1. Откройте новую вкладку браузера.
  2. Вставьте в адресную строку следующий 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: Проверяем бота в работе!

  1. Найдите своего бота в Telegram по username (@my_test_gas_bot).
  2. Начните диалог, нажав кнопку START.
  3. Отправьте любое текстовое сообщение.
Ура! Бот должен ответить вам фразой: "Вы сказали: [ваше сообщение]".

Что дальше? Идеи для улучшения

Ваш первый бот готов! Теперь вы можете развивать его:
  • Обработка команд: Добавьте условие в функцию doPost для реакции на команды (например, /start).
if (text === '/start') {

sendTextMessage(chatId, 'Привет! Я бот, созданный на Google Apps Script!');

return; // Завершаем функцию, чтобы не слать лишние сообщения

}
  • Интеграция с Google Таблицами: Чтобы записывать в них сообщения от пользователей или выводить оттуда данные.
  • Отправка уведомлений: Напишите функцию, которая будет сама отправлять вам сообщения по расписанию или какому-либо событию.
  • Расписание: Используйте встроенный в GAS триггер Time-driven, чтобы бот мог отправлять сообщения по расписанию (например, напоминания).

Если что-то пошло не так:

  • Проверьте токен и URL веб-приложения на опечатки.
  • Убедитесь, что доступ к веб-приложению стоит "Все".
  • В редакторе скрипта перейдите в "Вид" -> "Журналы выполнения". Это ваш лучший друг для отладки. Там видны все ошибки.
Поздравляем! Вы только что создали и запустили своего Telegram-бота, используя мощь и бесплатность Google Apps Script. Теперь у вас есть базовый навык создания Telegram-ботов без сервера. Удачи в ваших экспериментах!
Инструкции