Pull to refresh

Comments 19

Спасибо! Для такого новичка, как я нуждающегося в понимании основ процесса, статья очень хорошая.

В поле Who has access выбираем Anyone, что позволит другим пользователям вносить правки в проект и деплоить без вашего участия.

А это обязательно? И зачем?

Не обязательно. Лично у меня была такая потребность, когда я правила чужой код. Сохранить я свой код смогла, но задеплоить - нет. Так что все на ваше усмотрение)

Это обязательно. Иначе вызовы Telegram Web Hook не сработают.

  1. Уберите из статьи реальный токен бота.

  2. Было бы неплохо во второй части статьи увидеть механизм хранения информации в тех же гугл-таблицах :)

Все боты все равно удаляются поcле публикации) Механизм записи и хранения инфы в табличках опишу в следующих статьях

3. Рассмотрите также вариант отправки сообщения сразу же при обработке (возвращая JSON из функции)
https://jeffreyeverhart.com/2016/04/14/how-to-serve-json-using-the-google-apps-script-content-service/
https://core.telegram.org/bots/faq#how-can-i-make-requests-in-response-to-updates

Так Вы снизите углеродный след :)

Токен можно поменять через botfather

Выше есть ссылка на видео, там рассказывают про чтение и запись в таблицу.

const App_link = "";
//после каждого деплоя обновляем значение переменной

Apps Script поддерживает версионирование деплоймента. Соответственно при создании нового - выдаётся новый url, при обновлении - остаётся прежний.

SpreadsheetApp.openById('blahblah')

В случае встроенного скрипта достаточно SpreadsheetApp.getActive()

Спасибо, интересно.
А как сделать чтоб бот присылал не "текст", а значение ячейки таблицы например?

Можно записать в переменную значение ячейки и использовать эту переменную в качестве отправляемого сообщения. Могу подробнее описать механизм в следующих постах.

Вообще у гугла полно встроенных методов, с которыми можно познакомиться в документации и попробовать их использовать

После вставки App_link нужно снова задеплоить, но здесь и далее при других правках выбирать Новая версия.

Сделал своего первого бота с помощью этой инструкции, благодарю за статью!

Кстати, еспользовать гугл-таблицу в качестве БД бота - оказалось вполне удобно.

Но обнаружил одну особенность: этот бесплатный хостинг - небыстрый, в любой момент бот может зависнуть на полминуты. Итог: не подходит для коммерческого бота, но вполне подходит для создания прототипа.

В поле Who has access выбираем Anyone, что позволит другим пользователям вносить правки в проект и деплоить без вашего участия.

Похоже на ошибку, кажется, это поле влияет только на доступ к внешней ссылке, а для доступа к проекту нужны отдельные права

Спасибо, полезная штука. Ещё осталось разобраться как в таблицу писать значения!

Автор, спасибо за интересный подход к созданию ботов

Я в свою очередь, решил воссоздать Ваш сценарий, но столкнулся с ошибкой - когда на App_Link телега шлет Update, в ответ приходит "Wrong response from the webhook: 401 Unauthorized". Как Вы решали вопрос с авторизацией и стоял ли он вообще перед Вами?

Если вопрос еще актуален.
Я предполагаю, что не была выполнена эта функция. То есть убедидесь, что API корректный и выполнение закончилось успешно.

function api_connector () {
	UrlFetchApp.fetch(`https://api.telegram.org/bot${API}/setWebHook?url=${App_link}`);  
}

Переменная API - api token вашего бота

Переменная App_link - ссылка, полученная при деплое приложения

Запустить функцию можно в скриптах, либо можно скопировать текст из ковычек и вставить в браузере, что вернет такой результат:

{"ok":true,"result":true,"description":"Webhook is already set"}

Я - начинающий. Мне надо, чтобы бот искал значение в гугл таблице и возвращал значение в телеграм. По названию статьи, она мне подходит. Сделал всё, как в статье, и что? Как это относится собственно к гугл таблице? Что за деплои, в каком порядке что делать? Читал несколько раз, потом плюнул, скопипастил весь скрипт разом и задеплоил. Ну, отправляет он хелловорд, дальше-то что? Зачем тут вообще таблицы? Каким они местом к боту?

Sign up to leave a comment.

Articles