ym104432846
Вставьте ссылку на видео из Youtube, Rutube, VK видео
Задайте вопрос по видео
Что вас интересует?
00:00:15
Создание телеграм-бота:
  • Участники обсудят создание Telegram-бота с использованием Google App Script и подключения его к сервисному аккаунту
  • Для работы бота потребуется подключение оболочки (интерфейса), задания команд и настройки вебхука для обработки запросов от бота
  • В ходе презентации спикеры пошагово продемонстрируют процесс создания и настройки Telegram-бота, начиная с выбора имени и юзернейма
00:04:23
Токен телеграм-бота и его безопасность:
  • 1. Выбран уникальный идентификатор (токен) для работы с ботом, который обеспечивает безопасность управления ботом и предотвращает доступ посторонних лиц к сообщениям
  • 2. Для проверки корректности работы бота и получения информации о нём используется метод запроса вида `https://api.telegram.org/bot<токен>/getMe`
  • 3. В результате выполнения указанного метода возвращается информация о боте, включая его ID, имя и username («май фест бот»)
00:06:11
Подключение телеграм-бота к Google App Script:
  • Создан бот и размещена информация о создании Google таблицы для проекта
  • Разработан скрипт (my first boot), добавлен токен бота и настроены глобальные константы
  • Реализована функция получения информации от бота через запросы к API Google
00:13:06
Установка вебхука и настройка скрипта:
  • Решено установить вебхук для подключения бота к скрипту
  • Определён порядок действий: создание переменной `web_url`, установка метода `set_webhook` и передача параметра `url`
  • Обозначена необходимость изучения документации Google Apps Script и английского языка для понимания работы скрипта
00:20:10
Работа с таблицей Google и запись сообщений:
  • Решено использовать идентификатор (id) таблицы и листа вместо именования по имени, поскольку id остаётся неизменным при переименовании листа
  • Разработан механизм записи данных в таблицу с помощью Google Sheets API, включая использование диапазона ячеек (например, `b3`) и запись значений (`setValue`)
  • Создан логгинг сообщений пользователей в отдельный лист таблицы («лог»), куда автоматически записываются дата и текст сообщений
00:35:49
Отправка сообщений телеграм-ботом:
  • 1. Разработана функция отправки сообщений через бота с указанием идентификатора (id) таблицы и текста сообщения
  • 2. Создана функция, реагирующая на сообщения пользователей и отвечающая им автоматически
  • 3. Запланировано создание новой версии скрипта для развертывания обновлений функционала работы бота
0: Приветствую вас на канале создание google таблицы теллеграм Ботов. Сегодня вы создадите своего 1 telegram бота, который будет работать бесплатно 24 на 7. Итак, в этом видео мы разберёмся, что такое бот, создадим бота в бот фазер узнаем.
1: Что такое токен у бота и для чего он нужен? Научимся обращаться к вашему боту по его токену, подключим бота к google, таблицы, напишем код для записи сообщений пользователей в таблицу, то есть пользователи будут писать боту, а все будет у вас.
2: Копироваться в таблицу все сообщения и научим бота отвечать на сообщения вы будете писать боту сообщения а он будет вам отвечать все будем делать на google app script сейчас я вам все покажу ничего сложного не будет смотрите моё видео.
3: Поехали все шаги я буду показывать на своём экране, если у вас что-то не получается, то просто пересмотрите это видео ещё раз или задавайте вопросы в группе telegram, которая у нас в описании, что такое telegram bot давайте разберёмся. Итак есть.
4: Сервисный аккаунт бот фазер сейчас мы перейдём все это, сделаем в котором создаются боты пишем команду new bot создаётся ваш новый бот, но бот, который вы создаёте в bot father это только оболочка, чтобы бот начал.
5: Работать, он должен быть подключён к сервису. Это может быть конструктор бота или написанный код. Вашу оболочку. Вы должны куда-то подключить ваш интерфейс, вашу точку входа для пользователей нужно куда-то подключить и задать ему команды, то есть по которым он будет работать, как это работает, как мы сегодня будем делат.
6: Чтобы это работало у нас есть оболочка, наш бот и есть google app script это набор правил, как должен наш бот работать и мы установим вебхук, то есть мы скажем, что как только бот получает какие-то уведомления, какие-то команды, сообщения и так далее, он должен отправлять эту
7: Информацию в наш google app script этот скрипт, этот код обрабатывает информацию по определённым правилам мы напишем код и, соответственно, говорит, как дальше боту реагировать, например, пользователь пишет сообщение хай боту.
8: Вот бот у нас пользователь написал ему сообщение хай, в этот момент происходит запрос post запрос ну это такая такой терминология, дальше разберёте, поймёте что это такое ну как бы для начала просто пост запрос этот пост запрос уходит в наш в google app script.
9: Он его принимает, то есть наш скрипт, принимает, обрабатывает этот запрос и выдаёт обратный ответ, отвечает ему hello, world. То есть таким образом, мы сегодня как раз и сделаем, что мы пишем пользователю боту что-то.
10: Сообщение и бот нам отвечает на это сообщение. Вот примерно так это работает. То есть запрос уходит в скрипт, скрипт его обрабатывает наш код и дальше выдаёт боту какую-то информацию, какую-то реакцию, то есть какую-то команду он выдаёт обратно боту. Вот.
11: Таким образом, это все будет происходить, это была небольшая презентация, а теперь переходим непосредственно к созданию бота, открываем это у меня telegram версия дестоп, версия telegram и находим следующего Бо.
12: Сервисного бота. Пишем бот фазер пишем правильно, смотрим, чтобы был значок правильный. Сейчас он подгрузится. Вот, вот такой значок должен быть. Открываем его. Смотрите, сколько пользователей его используют и что это за бот. Это бот, который сервисный бот самого telegram через
13: С которого создаются другие боты, нажимаем старт, и он нам выдаёт. Значит, что он может делать? Нас интересует создать нового бота ренью. Вот, к сожалению, все на английском, поэтому можно перевести, если что-то непонятно, мы нажимаем нью. Вот. И он спрашивает, как вы хотите
14: Назвать вашего бота это просто имя, которое будет у вас отображаться в боте. Мы назовём его мафии бот.
15: Мой 1 бот. Дальше он спрашивает вас ввести user name? То есть это именно user name, он его поменять нельзя будет уже. То есть ваш бот всегда будет работать с этим юзернеймом. То есть он должен отображать то, как, ну как он вообще? А для чего этот бот создан?
16: Ну так попробуем назвать его my first boot и скорее всего, сейчас будет ошибка да, это юзернейм уже занят, видите, давайте назовём его как-нибудь my, ну как-нибудь вот так, например, даст ли такое название? Тоже занято такое имя?
17: Должно заканчиваться, оно обязательно на бот. Видите ещё раз бот.
18: Отлично. Наконец то подобрали имя, которое свободно, это, то есть оно должно быть уникально. Поэтому, user, мы можем уже перейти в бота. И вот мы получили как раз токен нашего бота, и нам говорят, держите в безопасности ваш токен. Зачем его держать в безопасности? Потому что чере
19: Этот токен происходит абсолютно вся работа вашего бота. То есть тот человек, который узнает ваш токен бота, он сможет управлять полностью вашим ботом, в том числе перехватывать сообщения, к примеру. Вот что мы можем делать с этим токеном, перейдём в документацию.
20: Telegram это telegram документация, я ссылочку оставлю, я перевёл эту страничку на русский язык, она на английском, но я перевёл её на русский, здесь найдём функцию get me вот как раз пишется каждому боту даётся уникальный токен.
21: Аутентификации, да, или этот токен через этот токен мы как раз будем делать запросы. Как выглядит запрос. Это строка url, которая заканчивается бот. Дальше вставляем токен бота и через слэш указываем имя.
22: Method, то есть, например, если мы хотим посмотреть, что это у нас за бот, мы должны скопировать ссылку вот до сюда дальше вставить токен токен, который мы получили, копируем токен, вставляя
23: Его дальше и дальше через слэш, через слэш должны написать get me, причём можно не учитывать регистр пишем get my, выходит запрос, и вот что мы видим.
24: Просто верна вернул окей тру и результат, в результате мы пишем что id нашего бота такой-то что из бот ну что бот это true правда это бот, имя бота, май фест бот, то как я написал и username нашего бота май.
25: First boot, ну и тут другая ещё информация, которая про наш бот указана, то есть вот через такую строку мы получили в нашем браузере информацию. Ну что, давайте теперь начинать создавать нашего бота, для этого перейдём в google диск, у меня есть папочка, урок.
26: Мой 1 1 бот здесь я создаю google таблицу, назовём её мой 1 бот по-русски назовём так здесь название.
27: На 1 год.
28: Отлично. Ввели название и переходим дальше. Расширение апс скрипт. Что это такое? Это скрипт, который прикреплён к нашей таблице. Он прикрепляется к таблице. То есть мы зашли в него, давайте его.
29: Назовём сразу же my first boot, этот скрипт, май ферст, Боот, скрипт.
30: Здесь мы уже можем сделать следующее пока функцию сдвинем чуть ниже, мы сюда запишем в константу.
31: Глобальная константа у нас будет, назовём её токен и вставим сюда токен нашего бота, который мы получили от bot father. Копирую наш токен, вставляю токен сюда в кавычках вставляется.
32: В кавычках. Если я бы вставил без кавычек токен, то он покрасил мне цветом вот таким вот и подкрасил. Видите, говорит, что непонятно что-то ввели кавычки, могут быть одинарные, неважно, кавычки могут быть двойные, как кверху или кавычки.
33: То я рекомендую, могут быть косые, косая кавычка это там, где у вас на клавиатуре её в самом верхнем левом углу, под эскейпом. Кнопочка её там как раз на английской раскладке получите вот такие косые кавычки. Дальше расскажу, почему их лучше использоват.
34: Есть. Поставили косые кавычки, ввели это, мы ввели глобальную константу токен, к ней мы будем дальше обращаться. Теперь напишем функцию get me. То есть функция, которая будет как раз возвращать тоже самое, что мы здесь сделали, но через скрипт для
35: Этого, чтобы нам написать функцию гетм. Мы должны сделать запрос тоже, ну, точно такой же, да, мы это просто сделали. Запрос. Запросы делаются следующим образом. Через класс url фича, когда мы начинаем вводить, что
36: У нас возникает подсказка, да, вот как вы обратили внимание, то есть я начал вводить url, и он выдаёт подсказки. Чем больше символов я ввожу, тем, соответственно, лучше. Он понимает, что, что мы хотим. Соответственно, я нажимаю enter, и он мне вводит тот класс, который, в котором я хоч,
37: Обратиться апп и дальше опять ставлю точку. Он предлагает какие возможности фичереквест мы должны выбрать Феч. Это как раз происходит обращение, ставлю любое метод, любая функция заканчивается вот такими
38: Кавычками них мы можем указать дополнительные параметры конкретно здесь мы можем указать url то есть строковый юрл здесь вот есть подсказочки например url фич google com мы можем обратиться к этому google?
39: При этом, видите, смотрите, он пишет пример конс, мы можем в целом вообще скопировать это все и подставить под себя. Но я рекомендую не logger использовать, а console log в целом скопировали. Да, вот это мы можем уже закомментировать как, что такое
40: Закомментировать это. То есть мы ставим 2 косые черты. Видите, у нас точка становится серой. То есть эта часть кода не будет выполняться, а код всегда выполняется в функции сверху вниз. То есть сначала выполнится эта строчка, потом выполнится эта строчка, что означают эти строчки константа.
41: Ну давайте даже напишем не константу, а переменная переменная обозначается как лет респонс, то есть мы в переменную респонс добавляем результат обращения вот к этому google com а давайте посмотрим, кстати, что что вообще будет такое для этого нам нужно сохранить скрипт.
42: Видите, у нас здесь горит значение, надо сохранить скрипт, и у нас появляется функция, которая у нас есть в этом файле скрипта. У нас есть функция гэти. Начинаем выполнение, но перед 1 выполнением нам нужно дать разрешение скрипту выполнять определённые
43: Функция. Переходим разрешить. Выполняем, выбираем наш аккаунт дополнительные настройки или advanced. У вас здесь может быть написано. Нажимаем перейти на страницу мафе скрипт не безопасно он предлагает здесь он говорит о том, что вы хотите поключиться внешнему сервису. То есть мы как раз обращаемся к внешнему сервису, мы ему говорим, да,
44: Знаем об этом продолжить все хорошо и выполняется функция. Вот какой-то ответ нам выдал от гугла, то есть мы обратились к google, какой-то ответ выдал, но нам google не интересен, нам интересно обратиться к нашему, к нашему боту и
45: И получить от него ответ то, что он вообще, что он выдаёт для этого. Вместо вот этого мы ставим опять косые скобочки, косые кавычки, вставляем нашу ссылку в целом все отлично мы можем уже
46: Обращаться по этой ссылке, посмотреть что у нас есть, нажимаем выполнить у нас сохраняется автоматический скрипт и мы получаем все тоже самое смотрите, мы получили тот же самый результат, чтобы его красивенько отобразить мы можем использовать следующий метод json.
47: Parx. И теперь у нас он в консоли будет более красиво отображаться. Давайте посмотрим он будет уже отображаться. Вот видите каким красивым это у нас объект, в котором нам возвраща.
48: Ключи и их результаты. Ну, объект дальше уже расскажем, пока не заморачивайтесь, просто видим объект в нём как раз вот вся информация у нас. Id нашего бота мы видим опять же, тот же самый first name username, просто тот же самый объект, который мы
49: Видели вот здесь вот строку написанный, который плохо читаемый, мы сейчас его вот этим методом json parse сделали более читабельным, то есть в каждую строчку отдельно параметр у нас написался, отлично мы сделали это, но здесь мы указали
50: Конкретно наш токен. Но если мы поменяем токен, у нас будет обращаться к старому боту все. Поэтому мы сделаем следующее. Мы сейчас удалим отсюда токен и вставим следующее ставим значок доллара и 2 фигурные
51: Скобки такую такую открывающуюся. Видите, он у нас даже выделился черным цветом. Сюда мы можем вставить любую переменную то есть мы у нас она определена токен переменная глобально, то есть она вынесена вне функции. Это значит глобальная переменная если бы она вот это
52: Переменная респонс, она является локальной переменной, она видна только внутри этой функции. Вот эта переменная будет видна везде, в любой точке скрипта, в любой функции она будет видна поэтому можем вставить токен и сохраняем ещё раз выполним, посмотрим у нас все тоже самое вернётся, видит
53: Только теперь мы обратились к токену Такому, если мы здесь поменяем на двоечку токен, у нас будет уже некорректный, неверный и, естественно, нам ответят вот что там отвечает, что не авторизован. То есть он ошибку выдаёт. Собственно, что все неправильно. Вы ввели неправильный какой-то токен, я не знаю куда.
54: Обращаться и что вообще с ним делать, если правильно все хорошо ага, супер. Это мы сделали следующее что мы можем сделать это установить как раз подключить webhook к нашему скрипту ну как я и говори.
55: Hook да, это как раз тот момент, когда мы говорим, что наш бот должен работать со скриптом, сейчас он не работает, сейчас только мы вызываем в скрипте функцию определённую и получаем.
56: Бота, какую-то информацию, но чтобы получать автоматически от бота любые изменения, любую там информацию, когда боту что-то пишут, куда-то добавляют в группы, какие-то реакции ставят. Неважно, все, что бот может ощутить на себе. Грубо говоря, мы должны
57: Установить вебхук. Для этого мы должны. Давайте напишем функцию, назовём её сет вебхук. Вот так вот открываются фигурные скобки. Так вот, обозначается функция отдельная в ней
58: Мы укажем. Давайте вообще найдём сначала этот сет вебхук, что нам нужно сет вебхук. Вот он предлагает, нам нужно url, адрес, куда должен обращаться, чтобы получить этот
59: Url адрес внимательно сейчас смотрим мы получаем сейчас url адрес куда бот у нас будет обращаться для этого сохраняем скрипт обязательно здесь ничего не должно быть. Нажимаем начать развёртывание и новое развёртывание. Это мы сейчас получаем только
60: Изначально первоначальный это url адрес, куда бот будет обращаться для установки webhook. Новое развёртывание нажали выбираем тип веб приложения описание ничего не пишем запуск от вашего имени от имени аккаунта, в котором вы находитесь. При этом я рекомендую выйти из
61: Аккаунтов вот здесь должно быть только 1 аккаунт у вас, поэтому выйти из всех аккаунтов, использовать google хром желательно и у кого доступ все в интернете, то есть все в интернете, которые обращаются.
62: К нашему скрипту. Ну то есть он должен принимать. И мы получили вот такую ссылочку, веб приложение, чтобы её скопировать. Нажимаем окей. Если вдруг вы не успели скопировать её, ничего страшного и закрыли это окошко, где её найти, начать развёртывание и теперь уже в управлениях развёртывания у вас эта ссылочка, вот.
63: На активное развёртывание мы сюда ещё вернёмся. Мы будем здесь ещё делать. И вот она, эта ссылочка. Веб приложение ссылочка нажимаем окей. Копируем её. Мы назовём эту. Создадим переменную лет веба url?
64: Назвали эту переменную и вставим её сюда. Вот она, ссылочка нас. Дальше мы должны обратиться к нашему боту, но уже с
65: Методом не get me a с методом сет вебхук, вот с таким методом для того, чтобы установить вебхук. Поэтому мы сейчас просто скопируем вот эти 2 строчки. Вот сюда копирую вставил. Сейчас отделю, чтобы это
66: Не путалась. У нас уже есть строчка. Трата та бот гет. Мы меняем на копируем прям отсюда, чтоб у нас все правильно было.
67: Меняем на сет вебхук. И для того, чтобы передать дополнительную переменную, мы передаём переменную url, куда нам нужно установить вебхук. Пишем юрл. Равно вот здесь как раз он указывает url адрес. Ну, блин, этот перевод
68: Установлен. Если мы посмотрим на английском, я рекомендую документацию читать на английском. Учите английский. Все будет классно, тогда сможете любую документацию легко прочитать. Почти вся документация написана на английском. Вот. Поэтому вот он параметр url. Он обязательный параметр у нас
69: Параметр url мы указываем вот здесь url равно и здесь опять указываем в вот таким образом. Кстати, а давайте я вам покажу просто как выглядит вот такая конструкция мы сейчас просто возьмём так напишем консоль лок
70: И вот эту всю строчку я вам покажу, как она будет выглядеть вообще, как код её читает, как он её видит, это закомментируем. Сохранили. То есть вот эта у нас сейчас часть не выполнится. Видите, закомментирована Серенькая, не выполняется она у вас как бы есть в коде. Комментарии можно писать. То есть вы, например, пишите здес.
71: Устанавливаем вебхук, устанавливаем вебхук. Все это просто для нас подпись будет, но она никак не читается кодом. То есть и код про неё ничего, грубо говоря, не знает. Да, знаем только мы то, что видим этот код, так выполним, теперь выбираем функцию
72: Нам надо выполнить эту, посмотреть, что такое в консоли здесь выполняем. И вот она наша строчка. Видите, он подставил после бота токен никаких больше символов нету вот этих вот. Он просто понимает, что если такие символы стоят, значит это у нас
73: Переменная какая-то и вместо вот этого всего он подставляет переменную. Переменная у нас строковая соответственно, подставляет это кавычки, они не читаются. Ну то есть просто это мы обозначаем, что это строковая переменная. Если мы здесь укажем что-то другое число, число не нужны, да?
74: Кавычки. Тогда у нас будет другая ссылочка. Вот у нас 1, 2, 3 там и так далее. Он сюда вставил и дальше url опять вставил потому он взял уже url отсюда. И как видите, у нас юрл выше определяется. Если мы определим юрл ниже того, как мы попробуем вызвать его, то у нас
75: Будет ошибка, ошибка, что не может получить доступ к вивап юрл. До инициализации она у нас определяется, но ниже. А код у нас выполняется сверху вниз. Соответственно, он не знает, где взять эту переменную. То есть он выполняет эту часть кода, он не може
76: Дальше заглянуть, он может увидеть только глобальную переменную, которая у нас вне функции, а так как это переменная внутри функции, вот она он увидел вот этот токен. То есть если мы отсюда уберём её, он все выполнится но потому что видит токен, он глобальная переменная, но нам то нужна
77: Это переменная. Короче, откатываемся назад. Надеюсь, понятно. Если непонятно, в описании ссылочка группа, пишите вопросики, рады будем ответить. Итак, посмотрели, что за ссылочка. Раскомментируем, как раскомментировать. Нажимаем контрол. И там, где у нас вопросик, все, ра.
78: Комментировали, выделили строчки, рас, комментировали. Отлично. Так, теперь мы, ну что, смотрим, как у нас установится вебхук, нажимаем set webhook. Ссылочка и окей. Видим окей. Тру. Резал тру, дискрипшен, вебхук. Во, сет. То есть теперь
79: Когда мы пишем что-то боту, наш скрипт ловит всю информацию. Но чтобы мы могли обработать эту информацию, мы должны написать функцию. Эта функция системная, она пишется только так называется дду по
80: Помните про пост запросы дду пост и здесь указать её эта функция системная и помните вот здесь я вам как раз писал, то есть пост, запрос, пост, реквест у telegram как раз все запросы, пост.
81: То есть, поэтому мы пишем, мы здесь обрабатываем как пост, запрос, do пост. Это системная функция в google скрипте и её или и по-английски. Это параметр, который будет, ну, передаёт telegram нам в этой функции. Вот давайте теперь посмотрим, что это за параметр.
82: Сейчас мы уже начинаем обращение к таблице. У нас есть таблица, на ней есть лист 1. Назовём его, не знаю там, да, пусть он пока будет называться лист 1. И мы сейчас обращаемся к этому листу и попробуем записать, что же мы получаем то в этой переменной пишем.
83: Spread sheet апп дальше мы обратились к классу. Дальше мы должны то есть мы как бы обратились к классу теперь мы должны обратиться к таблице, к какой таблице мы обращаемся я предлагаю, рекомендую вам сразу же обращаться к таблице.
84: По её id, ну это лучше. Хотя, ну, опять же, давайте будем обращаться пока просто к активной таблице, да, то есть той, которой прикреплён этот скрипт. Но имейте ввиду, что можно обратиться в том числе
85: По id, то есть open by id или по url, чем отличаются url это у нас вся строка id это только вот эта часть после д. Слэш ну давайте обратимся, давайте обратимся сразу же по id раз я вам
86: Рекомендую, зачем я буду делать по другому косые кавычки и сюда копируем уже вот этот id, потому что дальше мы будем ещё обращаться по. То есть мы сейчас полу, то есть обратились к классу, который
87: Работает у нас с таблицами, да, вот это выбрали дальше мы говорим, хотим пойти в эту таблицу конкретно вот в эту таблицу. Дальше мы должны определить следующее, какое у нас позиция. Это лист в таблице может быть несколько листов. Мы должны сказать, мы хотим пой.
88: На лист 2. Для этого мы пишем дальше. Метод get shit. Раньше был только it shit. By name сейчас можно обратиться Гетт шит бай айди и вот я вам крайне рекомендую обращаться по
89: Причём здесь числовое значение, он идёт. Что такое id листа? Перейдём в таблицу. Смотрите, у листа 1 id на конце 0 всегда при создании у 1 листа айди 0, а у любого другого, созданного, у него рандомное создаётся. И вот у этого листа
90: Например, такой id если мы создадим новый лист 3, у него будет другой id, и эти id создаются рандомно, в чем выгода обращения по id, а не по имени листа, вы можете поменять имя листа, и тогда вы перестанете ваши перестанет сюда обращаться айди н.
91: Никогда не поменяется, пока вы не удалите лист, он никуда не денется, этот айди. То есть, если мы хотим обратиться конкретно к листу 2, мы берём вот этот id, пишем, соответственно, метод get shit. By id вставляем сюда id следующее, что нужно сделать отлично. М.
92: Зашли в таблицу, мы зашли в лист. Нам нужно указать диапазон, в котором мы хотим сработать. А мы хотим записать данные. Берём диапазон, пишем get рейнж, Гетт, рейндж. И здесь уже есть 2 варианта, как ввести диапазон, можно цифр.
93: Ввести диапазон, либо можно, как мы приняли, да, например, a1 ввести, или b3. Давайте введём пока b3 двойные кавычки, я иногда ставлю двойные кавычки, но не забывайте лучше косые двойные, просто как-то более.
94: Видны что ли, get ренч и дальше что мы должны сделать? Он предлагает активировать, почистить. Тут очень много методов. Вот посмотрите, он все, что все что можно сделать, вот прям можно можете что-то выбирать, открывать, смотреть какие тут функции есть документа.
95: То есть это все можно делать. Сет бордер. Это, кстати, он делает границы, помечает очень интересно. Прям целая кладезь, чем можно заняться, но нам нужно сет велью указать, мы хотим указать велью и это велью.
96: Это то, что мы получаем от бота. Написали фу, написали эту строчку, сохранили проект, попробуем сейчас написать боту и увидим, что нас ничего не запишется наш бот, мы его стартуем и по идее,
97: Сейчас должно что-то среагировать, да, никакой реакции нету. А почему? Потому что когда мы делали развёртывание, он увидел тот слепок скрипта, который был написан до этого. Сейчас мы дописали сюда функцию дупо, что-то поменяли, но
98: Он не помнит, он не знает, что мы дописали. Он видит тот старый слепок. Для этого мы должны для того, чтобы все это применилось уже в развёртывании, да, чтобы, ну, грубо говоря, вот этот вот алгоритм, по которому работать боту обновился.
99: Нам нужно сделать следующее, так как у нас уже создан вебхук, мы его подключили. Больше мы не ходим в новое развёртывание. Если мы сделаем ещё 1 новое развёртывание, приложение у нас обновится вот эта ссылочка и у нас появится вот здесь, вот в управлении развёртываниями 2 активных развёртывании.
100: Всегда должно быть 1 когда 2 активных развёртывания у них 2 разные ссылки и она срабатывает то 1, то другая у вас бот то отвечает, то не отвечает, то вообще не отвечает. Поэтому как только сделали 1 новое развёртывание, больше сюда не ходим, ссылочку получили. Все дальше ходим только в управление развёртывание.
101: Переходим в управление развёртыванием, нажимаем кнопочку редактировать, выбираем новую версию, описание не пишем. Все. Нам нужно нажать только начать развёртывание. Нас спрашивают, предоставьте доступ. Видите, мы добавили новый класс прошита. И он уже спрашивает. Ага, у нас
102: Изменились методы, к которым мы обращаемся. Тоже самое. Кстати, нажимаю сюда. И теперь вот смотрите, он добавил нас видеть, редактировать, создавать и удалять все google таблицы на вашем аккаунте.
103: Мы даём этот доступ, то есть обратились к 1 классу, и мы вроде бы просто бы записываем данные, но он уже понимает, что этот класс умеет вот что делать. Разрешаем.
104: Предоставили доступ, у нас обновилось приложение, ссылочка осталась, все хорошо и теперь должно все сработать. Открываем бота. Так я закрою вот это. Открываем бота, напишем ему 1, 2, 3 бот получает эту информацию.
105: Смотрите, у нас уже записывается сюда бот получил эту информацию и отправил эту информацию в сообщении её вот сюда, в нашу таблицу, и мы записали её, ну тут что-то непонятное, какая-то ерунда и что-то
106: Не все как будто, да, для того, чтобы посмотреть полную информацию, у нас вся вся подробная информация находится в пост дата. Давайте добавим сюда пост, дата.
107: И дальше, ну, давайте посмотрим, да, что, что будет у нас. То есть мы, как бы, как когда мы с get me обращались, да, вот, например, у нас вот здесь вот есть как бы, вложение, то есть, окей, резал. Смотрите, здесь ещё 1 открывающиеся скобки.
108: Вот тут тоже самое. То есть у нас внутри пост, дата ещё внутри есть такие же скобки, он просто их не показывает. Мы сейчас добавили пост, дата, опять сделаем новую версию развёртывания, опять отправим какое-то сообщение.
109: Посмотрим, что у нас будет записано в этот раз. Так, убираем активность с ячейки. Если оставить активность, ячейку активной, он не сможет перезаписать. То есть он обратится к ней, но перезаписать не сможет. Поэтому переходим в другую ячейку, пишем 3 дв.
110: 1 ячейка у нас переписывается и теперь уже записывается то что у нас хранится в post data нас пост. Дата интересует нас. Давайте сейчас так вот откроем то что находится в контанс где контанс у нас. Вот смотрите контанс и здесь вся полезная информация уже.
111: Более менее хорошо можно было догадаться, конечно, но я вам расскажу, что в контанс находится все полезное, тогда пост, дата, точка, контанс опять сохраняем скрипт, сохраняя. Если не сохранить и сделать новую версию развёртывания, то ничего не применит.
112: Он не самостоятельно не сохранит скрипт. Есть. Сделали, опять деактивировали ячейку, чтобы она освободилась и пишем 1, 1, 1 боту. И теперь у нас записывается уже то, что у нас в контенсте, только в контенте. Смотрите, уже.
113: Уже красивенького. Мы какую-то информацию здесь получаем, какой-то апдейт айди, какой-то месседж. Ну и теперь лайфхак как это все красиво преобразить уже в таблице, да, то есть не здесь, в нашей консоли, а в таблице, чтобы красивенько это преобразить, мы должны дописать джисон, но уже не
114: Parse. А стринги, Фай, метод здесь берём в скобочки, берём её пост, дата контанс. Пишем дальше. Ну, 7 просто пишем, пока не запоминаем это поймём. Позже написали опять новую версию развёртывания.
115: Да, я понимаю, муторно, если что, на канале у меня есть видео, как этого не делать. Ну, это пока поделайте, пока поделайте. А дальше, когда будете, уже разберётесь со всем более менее, там уже есть способ, как не делать каждый раз новую версию. Итак, смотрим. Так че?
116: Че то записалось, да? Или пост? Дата тарата, та, че то как-то, а мы не распарсили его. Угу. Нам вот здесь надо ещё дописать. Джесон парс, её пост, дата контанс, да, вот так вот. И потом.
117: Можно стрингиа это все, так сказать, есть так хорошо.
118: Ещё разочек стринги фировать. Ну то есть это в строку переводить. String от слова string строка. Так, пишем 3, 3, 3. Смотрим, че у нас запишется. И смотрите, как красивенько уже записалось. Точно так же, как у нас в консоли было, да, вот тепер.
119: Это можно прочитать. Вот теперь это как-то более менее понятно, да, то есть здесь у нас уже информация о update id то есть это, ну, уникальный там номер и дальше о сообщении. То есть, что за id сообщение, от кого оно было отправлено от Андрея, это я.
120: В какой чат было отправлено в приватный чат, дата в unix формате. И текст, который я отправил 3. Смотрите, если сейчас текст другой отправлю, поменяется, соответственно, ткт, да, напишем сюда 1, 2, 3, 4, 5, 6. Сейчас обновится апдейт айди. Обновился текст классно.
121: У нас все, теперь мы уже научились получать данные в нашу таблицу. Класс. То есть, по сути 1 этап мы выполнили. Давайте сейчас допишем немножечко код покрасивше сделаем так, как это я
122: Уже делать. Обозначим переменную лет контанс, контанс и в неё вот это перенесём вот этот json, parse и так далее сюда перенесём, а здесь уже обратимся к самой Контес и ну, смотрите, что у нас уже в целом что
123: Есть. Мы теперь можем отсюда вычленить текст, который пишется. Вот давайте мы сейчас будем записывать на лист лист 3 у нас будет лист называться лог, да, в него будем логировать сообщения и какие
124: Таким образом, здесь у нас будет указываться дата.
125: А здесь будет текст, который пишет пользователь, дата, текст. Так, так и жирненьким, как это будет реализовано, чтобы получить текст. Ну так как это объект мы видим, да, что это
126: Как обращается, то есть, по сути, вот это, это и есть наш контанс. То есть то, что у нас здесь есть, это контанс, внутри него есть message и есть текст, чтобы к нему обратиться. То есть мы сделали как раз тринироваца вот это, то есть привели к Такому красивому ввиду.
127: Здесь видно, что на каком уровне содержится, какой, какое значение, то есть внутри каждого вот этого ключа message есть ещё 1 объект, да и внутри, например, дальше ключа from ещё 1 объект.
128: И, но они содержатся, ну вот стоят на уровне правее, да, как бы, то есть на другом уровне. Так вот у нас текст находится внутри месседж, то есть message. И здесь это вот 1 1 значение, вот это все другое значение внутри месседжа, это
129: 3 значение, например, 4 дата и потом текст, ну, неважно, какой номер у этого. Ну, мы обращаемся здесь именно по ключу, по названию. То есть, чтобы получить этот текст, что мы должны написать, мы должны написать, у нас текст будет
130: Текст будет определяться как контанс. Дальше пишем точка месседж, точка и внутри месседжа. Идём чик чик. Текст есть контанс. Месседж. Текст это
131: Определили текст и теперь давайте запишем её в на лист локк вместе с датой, так как мы это сделаем. Да, мы просто пока без даты будем писать, без даты. Мы сейчас, а то сейчас озадачимся сильно, хотя с датой напишем. С датой все решено.
132: Что мы делаем? Копируем эту строчку? Эта строчка у нас будет как как скопировать строчку? Ставим курсор на строчку, нажимаем shift alt и стрелочку вниз или вверх если хотим вверх скопировать или вниз. Если вниз скопировать, скопировал я строчку. Это у нас будет
133: Продолжать записывать. А теперь мы должны обратиться к нашему листу 3 лок и его id. Вот такой меняем в этой строчке айди листа и убираем вот эту часть мы теперь будем не записывать в диапазон мы будем добавлять
134: Строку добавляется строка методом апен дро. И здесь он ожидает объект массив массив начинается у нас с квадратных скобок. Открываем квадратные скобки внутри массива. Вот видите, эмн Эппле Панама, то есть это
135: Строка будет записана. То есть в новую строку он запишет, начиная с 1 ячейки, запишет эмн плен, Панама, эмн, плен, Панама. Если здесь заполнено будет, да, то есть он ниже, если будет у вас последняя строка заполнена, вот здесь какой-нибудь он добавит ещё 1 стро.
136: Строчку ниже, он не будет пустые заполнять метода. Он добавит ещё 1 строчку запишет ниже. Имейте ввиду, даже здесь будет пробел стоять. Кстати, да, в любой, в любой ячейке этой строки нам это не интересно. Ну, чтобы добавилось здесь, я рекомендую вообще делать вот та
137: Выделяем все, выделяем все, удаляем лишние строки, добавляем десяток строк. У нас здесь все видны только 11 строк. И мы, если что-то добавилось на самый конец, мы сразу же это обнаружим. Лирика дальше вызыва.
138: Новую дату напишем нью дейт. Это такой метод для определения даты. Он, соответственно, достаёт новую дату, ну, то есть текущую дату и дату, причём та, которая в часовом поясе скрипта. То есть, если перейти вот сюда настрой,
139: У меня московское время стоит в скрипте, и он её запишет. Неважно, какое время будет стоять у вас в таблице, но если в скрипте у вас стоит другое часовой пояс, то он выдаст дату согласно скрипту, так как мы в скрипте вызываем эту дату нью дейт и текст нам нужно через
140: Записали, сохранили, сохранили все. У нас точечки здесь нету. Управление развёртываниями. Новая версия сохранили. Так, есть. Готово. Переходим сюда. Пишем. Бо.
141: Нашему привет.
142: Привет, бот наш чик чик оо, но он, кстати, видите, подтягивает форматирование с верхней строки, поэтому будьте внимательны. Смотрите, если мы сейчас форматирование здесь скорректируем, уберём жирненькое, то сейчас он будет брать отсюда
143: Форматирование и добавлять сюда. Давайте попробуем 1, 1.
144: Так, опа, я все равно подтянул, да, так, все равно подтянул форматирование.
145: А, ну потому что у нас вот здесь вот везде такое форматирование, видите, черненькое стоит, он не с верхней подтягивает. Форматирование у нас стояло везде с верхнего, он подтянет, если у нас будет добавлять он, то есть, если добавить строчку, он отсюда подтянет. Сейчас изменим. Вот так ещё раз.
146: 1, 2, 3.
147: Все хорошо выделяет, все правильно записывает. Ну и по прежнему он сюда у нас пишет тоже 1, 2, 3. Так, ну что мы записали? Теперь мы должны научить нашего бота отправлять сообщения. Пойдём в наш скрипт.
148: Сюда я сейчас скопирую функцию, которая отправляет сообщения. Просто берите её, копируйте себе, переписывайте. Правильно? Вообще будет в описании ссылочка на вот эту таблицу. Вы её можете себе скопировать, настроить под себя, указать id своей таблицы не за
149: Будет да, то есть не моей таблицы, своей айди по таблице указать и соответственно уже она будет работать с вашей таблицей кстати чтобы вот этот id вам легко было поменять а мы сейчас сразу же сделаем вот так вот const сюда его вынесем конст сс айди кстати.
150: Сразу же тоже вам на будущее глобальные переменные рекомендуется писать с большой буквы. Почему с большой? Потому что они сразу же начинают выделяться, выделяться таким вот красным цветом и сразу же будет понятно, для вас глобальная это переменная или нет. Ну это опять же такое вот для написания кода просто
151: Принятая рекомендация. То есть мы теперь взяли, записали сюда id и вместо вот этих id вставляем просто чик чик чик. Все теперь у нас. То есть вы сейчас здесь поменяете
152: Если скопируете и у вас с вашей таблицей уже будет работать, а id при копировании таблицы, кстати, id листов сохраняются, поэтому классно.
153: Ну что, продолжаем? Пишем функцию, которая отправляет текст. Так, давайте это я выше перенесу эти 2 функции, они будут выше, они нам не сильно нужны. Сейчас будем работать с функцией сантекс. Это просто отдельная функция. Она что делает мы сюда
154: Определённым методом send message этот метод мы можем найти вот здесь сент месседж что это за метод? Этот метод для отправки сообщений через бота в него нужно обязательно указать чат айди и обязательно.
155: Указать текст, который вы отправляете. Видите, реквай параметры ес, они у меня, собственно, и указаны чат айди текст. Вот он, чат айди. То есть это параметр, который указан здесь именно в такой форме, как он указан здесь. И текст.
156: Но эти параметры я передаю сюда аргументом что такое аргументы? Это просто мы мы сделаем следующим образом. Мы напишем функцию сент, которую я буду вызывать и в функции сент. Я сейчас укажу переменные чат айди перемен.
157: На чат айди, это мой id будет его я могу взять перейдя на лист 2. И вот он мой id from да то есть мы уже записываем данные какие-то либо есть боты, которые на самом деле помогут вам это определить. Ну теперь вы сами можете определять свой id. Видите
158: Можете написать какую-нибудь простенькую функцию и она будет будете уже получать сами определять, никому не передавать эти данные и функцию переменную текст напишем, давайте напишем переменную месседж, чтобы у нас не путаться вообще. Так если мы напишем здесь
159: Переменную текст. Ну давайте напишем, она у нас не будет пересекаться вот с этими 2, потому что этот текст внутри этой функции, этот текст внутри функции do пост, они никак не пересекутся, мы будем вызывать функцию сен текст здесь напишем хэллоу.
160: Вот, да, то есть он должен там по нашему снимку отвечать именно так. То есть мы пишем ему хай, он нам отвечает, hello. И последнее, что мы должны, давайте скопируем просто функцию. Вот они, смотрите, вот этот чат айди попадает.
161: Сюда этот текст попадает сюда, и он отправляет. При этом, если мы назовём, то есть вот как они будут названы здесь, они должны быть функцией быть названы, да то есть мы здесь можем назвать месседж и тогда вот эту переменную мы должны здесь при этом название переменной берётся
162: Из telegram, а аргумент вот он подставляется чат айди сюда, то есть chat id 2 чат айди 2. Неважно. То есть вот такая функция, но здесь уже мы можем главное попасть в те же самые места. То есть chat id у нас должен быть на месте. Ну,
163: 1 месте перед запятой чат айди сюда. Текст следующий должен у нас идти. То есть этот чат айди это попадёт вот сюда вот грубо говоря, этот текст попадёт вот сюда. Ну вот таким вот простым языком объясняю, да, как у нас работает аргумент
164: То есть здесь не обязательно писать так же, как здесь, совсем не обязательно. Ну что, сохраняем? Теперь нам не надо выполнять, мы функцию выполняем, отсюда, нажимаем сен. Так, сейчас я открою, вот ничего нету, да, нажимаем Функ.
165: Saint выполнение завершено. Открываем снова нашего бота хеллоу ворлд бот нам отправил. То есть мы отправили, вернее, от имени бота пользователю с чат айди вот этим функцию send hello world супер.
166: Мы теперь это научились делать. И последнее, что мы хотели сегодня сделать, это научить бота отвечать на наши сообщения. То есть каким образом мы научим его отвечать в тот момент, когда пользователь что-то пишет, мы должны среагировать на это сообщение.
167: И написать пользователю в ответ. Для этого нам нужно, что мы можем эту функцию, конечно, сюда скопировать, вставить, например, сюда у нас есть текст, да, то есть если мы оставим текст, то он просто будет как попугай отвечать тем же самым давайте пока так и сделаем, но
168: У нас не хватает переменной chat id, чтобы её определить напишем лет чат айди.
169: Равно мы можем определить её вручную, тогда будет он всегда писать 1 и тому же пользователю. Но мы же хотим, чтобы он отвечал любому пользователю. Поэтому точно так же, как мы определяли здесь текст, идём и смотрим, как определить чат айди. Вот он.
170: Idea этого нашего пользователя, он в message from id. Пишем контанс точка месседж, точка. Дальше идём по списку Фром. Видите, у нас следую
171: Уровень это from и id у нас внутри уже Фром.
172: Точка и id ключ id. Все таким образом видите и вот этому как раз пути вот это значение соответствует. From id чик чик сохранили так chat id у нас сюда попадёт текст.
173: Можно проверить, да, то есть я как проверяю, иногда бывают ошибки, что неправильно переменную назвал. Вот у нас тут чат айди, тут текст, все хорошо, она запишется текст в таблицу, и пользователю ответит бот тем же самым сообщением, которое у нас было. Вот теперь нужно сделать управление.
174: Создать новую версию развёртывания, потому что мы поменяли дупст. Все, что связано с работой бота нужно делать. Нужно это делать. Так перейдём на лист лок, чтобы проверить, что у нас все сюда запишется, и напишем боту хай.
175: И вот нам ответит хай, мы напишем боту, хаваю по-русски, напишем привет ещё раз вот запишет привет и ответит нам привет. Он отвечает тем же самым, что мы написали, но мы хотим, чтобы вот нам отвечал хай хау.
176: World, поэтому мы можем задать переменную лет текст сюда, вот так эту пока закомментировать, сохранить. Так и кстати, у нас сейчас возникнет ошибка, ничего не произойдёт, потому что я переменную текст
177: Определяю ниже того, как я к ней обращаюсь, поэтому так не пойдёт. Вот так пойдёт. Мы определили переменную text, потом к ней обратились, пойдёт управление развёртыванием.
178: Так, так, новая версия есть. Сюда пойдём здесь напишем, пишем хай, уходит запрос, скрипт обрабатывает запрос, отвечает нам хэллоу Ровно то, чего мы хотели.
179: В самом начале нашего урока, я надеюсь, это видео было для вас полезное. Сегодня вы научились создавать своего 1 бота. Функционал этих Ботов безграничен. Они работают бесплатно 24 на 7. Берите, пользуйтесь. У меня очень много видео на канале тольк.
180: 1 знакомство с ботами. Продолжайте этим знакомиться, узнавайте больше развивайтесь, автоматизируйте свою рутину, делайте своих Ботов, делитесь своими впечатлениями в комментариях, а также по ссылке в описании в
181: Группе telegram. Ну что ж, надеюсь, моё видео было полезным. Ставьте лайк.