Google Script Telegram webhook How-to
Начало: Пишем Telegram бота на Google script
Читать полностью оригинал: https://habr.com/post/326220/
Цели, задачи, оправдания безумства.
Вопросы, на которые нужно получить ответ «да»
- Можно ли создать Telegram бота в Google Script?
- Можно ли бесплатно использовать API Google Translate без регистрации и SMS?
- Можно ли сделать онлайн инструмент без использования хостинга?
Недостатки и неприятные особенности
Естественно, выбранные «инструменты» реализации бота накладывают немало ограничений.
- Во-первых, бот будет отвечать на сообщения с большой задержкой (до минуты).
- Во-вторых, несмотря на то, что Google Translate используется внутри Google Script, ограничения по количеству запросов в секунду и общему их количеству в сутки все же есть. По понятным причинам возможность использования web hook отсутствует.
Эксперимент показал, что можно без проблем связать сервисы Google с ботом Telegram в личных целях, автоматизировать сбор информации и получать ее весьма оперативно. Можно без проблем написать парсер какого-нибудь авито и отправлять новые объявления по интересующем запросу в телеграм. В этом случае даже скорость ответа бота на сообщения не играет никакой существенной роли.
UPD: Pylorama в своем комментарии рассказал о том, как сделать WebHook.
Google Script Telegram webhook How-to:
1. Реализуйте в скрипте метод doPost() для обработки пост запросов.
2. Опубликуйте google script как веб приложение с доступом для всех.
3. Используя API метод setWebhook укажите адрес скрипта.
Пример
Создаем скрипт с методом doPost(e)
function doPost(e) {
var botId = 'TELEGRAM_BOT_API_KEY';
var content = JSON.parse(e.postData.contents);
var message = content.message;
var text = message.text;
//Обрабатываем запрос нужным образом, например:
UrlFetchApp.fetch('https://api.telegram.org/bot' + botId + "/sendMessage", {
'method': 'post',
'payload': {
chat_id: message.chat.id,
text: 'It Works!'
}
});
//возвращаем пустой документ, главное передать телеграму 200 response code.
return HtmlService.createHtmlOutput();
}
Публикуем как веб приложение и получаем URI скрипта. Теперь можно дописать и вызвать функцию для установки webhook.
function setWebhook() {
var botId = 'TELEGRAM_BOT_API_KEY';
var scriptUrl = 'YOUR_SCRIPT_URI';
UrlFetchApp.fetch('https://api.telegram.org/bot' + botId + "/setWebhook?url=" + scriptUrl);
}
Документация по Web Apps https://developers.google.com/apps-script/guides/web
P.S. Я тут погуглил, оказывается, все уже реализовано: 1, 2
По первой ссылке не особо много полезного, да и дата публикации позже моей. Я написал пост далеко не сразу. А за вторую спасибо.
Бот на хуках gist.github.com/oshliaer/77ccc68599e7b0fea39f
Google Script Telegram webhook How-to