Создание Телеграм бота с помощью n8n с Александром Фоминым, часть 1
1:08:16

Создание Телеграм бота с помощью n8n с Александром Фоминым, часть 1

School of Practical Skills 26.07.2022 10 762 просмотров 201 лайков

Machine-readable: Markdown · JSON API · Site index

Поделиться Telegram VK Бот
Транскрипт Скачать .md
Анализ с AI
Описание видео
Мои новый курс по автоматизации и AI 👉 https://artemdzyuba.ru Присоединяйся, чтобы оставаться на связи: Телеграм: https://t.me/practicalskills Инстаграм: https://www.instagram.com/practical_skills01/ У меня новый формат — интервью с профессионалами, чтобы попробовать их навыки на зуб. Подписывайтесь, будет больше! Основной канал — в телеграме: https://t.me/practicalskills Навигация: 0:00 Знакомство 14:57 Что мы будем делать? 20:09 Заводим бота в Телеграме, используя Botfather 22:49 Начинаем строить логику в Телеграме 57:51 Добавляем отдельный процесс для отлова ошибок Наши социальные сети: Facebook: https://www.facebook.com/PracticalSkillsSchool ВКонтакте: https://vk.com/practicalskillsschool

Оглавление (5 сегментов)

Знакомство

привет друзья сегодня у нас новый формат выпусков на моем канале школа практических навыков и в этот раз у нас выпуск будет построен в виде интервью я надеюсь что те интервью будут выходить у меня достаточно большом количестве интервью у меня будут с людьми которые являются экспертами в той или иной области и могут не просто показать свою экспертность но и научить вас чему-то самого нуля чтобы вы могли построить какую-то вещь попробовать какую-то вещь не обладает совершенно не какими навыками в этой области и поскольку тема последних наших выпусков были по автоматизации по работе с сервисом автоматизации night in кстати если вы не видели эти ролики я вам искренне рекомендую там прям пошаговые туториалы что и как делать в том числе и на моем сайте проверьте а сегодня мы поговорим с человеком который в россии наверно является одним из самых глубоких специалистов в этом деле это александр фомин привет александр слышно меня карет привет джордж вот и александр нам расскажет сегодня как он вообще познакомился с автоматизацией is a night in нужно ли для этого быть каким-то программистом или разбираться вообще глубоко программирование что с этим можно сделать и ближе к концу нашего видео александр покажет нам как собирать несложного бота в телеграм бота используя покажет разные приемы которых и я не знаю как это делать достаточно эффективным способом и разные другие вещи связанные с и night in так еще раз александр привет значит насколько как давно ты знаком с int n с автоматизацией что тебя к этому привело были ли какие-то коммерческие интересы или это просто из любви там программированию или эти продукты мы этим занялся расскажи нам значится нэйтан познакомился где-то года полтора назад начале прошлого года может быть чуть раньше в общем-то автоматизации начал записываться достаточно давно в целом войти уже больше десяти лет на самом деле уже даже больше 15 я при этом не программист профессиональный не разработчик скорее больше эти менеджер предприниматель энтузиаст энди девелопер в каком то смысле то есть не разработчики которые за деньги пишет код которые пытаются что-то сам создавать и изначально я шел со стороны разработке игр и со стороны организации мероприятий в частности турниров по компьютерным играм автоматизации заинтересовалась когда познакомился еще достаточно давно с такими игровыми движками как game maker rbg maker и ну и в частности с визуальным программированием у нас как раз тоже благодаря им поскольку в них уже давно были реализованы как раз такие механизмы которые позволяют из кусочков каких-то блоков логике создавать готовые сценарии которые реализуются вот внутри игры непосредственно к ней там подошел благодаря тому что познакомился с такими инструментами как нефть и китти запер integra мат и как раз таки больше всего из них всех мне понравился этот роман за счет того что он реализует такую красивую визуализацию самого алгоритма и ты видишь как это работает а видишь всего архитектура сценария и когда я в общем наткнулся на я на этом не тоже с ним захотелось разобраться поскольку у него была на мой взгляд два таких мощных преимущество перед это грамотам это то что на это можно развернуть у себя на серверах и использовать его дальше ну условно самостоятельно настраивая его каким-то образом и кроме всего прочего его еще и можно апгрейдить так скажем дописываем к нему свои собственные модули и при этом еще и внутри использовать java script код так что знаком не так давно около пару полутора лет ну то есть и ты при этом не профессиональный программист я так понимаю ты прям не зарабатывал на хлеб программированием нет на хлеб зарабатывать не одну просто то есть я никогда не работал в должность лера лист разработчика самая профессиональная деятельность это именно менеджмент и этим менеджмент в основном и все что касается разработки или там написание кода изучение кода это всегда было своего рода хобби скорее такое который по жизни всегда рядом и всегда к этому лежала душа всегда хотелось с этим разобраться ну это наверное вот можно назвать таким in development с одной стороны потому что были еще давно какие-то мечты да что можно самостоятельно создать какую-то игрушку и на этом заработать стать известным крутым разработчикам с другой стороны вот это хобби она помогает и в работе в принципе намного лучше понимать сами процесс разработки и как это все устроено как этим можно управлять так отлично и тогда вот ты хорошо знаком с intent и много посвящаешь ему времени на сколько я понимаю поскольку ты достаточно активен на в сообществе night and 100 грамм на что ты больше тратишь свой ресурс куда применяешь int n для каких-то своих собственных там личных нужд ими там бизнес нужд или оказываешь какие там услуги и другим заказчикам или может вы вообще делаете какой-нибудь продукт свой используя night in начинал изначально использовать его для автоматизации процессов просто вот рабочих сначала свою собственных каких-то рутинных задач автоматизировал дальше автоматизировал задачи внутри командного взаимодействия установка задач оповещения об изменениях после этого он начал прототипировать и ставить какие-то эксперименты с целью поиска каких-то интересных продуктовых идей ну и кроме всего прочего мы занимаемся разработкой своих собственных систем и вижу и давно на самом деле думала о том что возможно воспользоваться как раз таки предложения моделей темпа встраиванию их решения в свой собственный продукт mb да то есть там такой вариант инбридинга не те нам в свои какие-то наработки ну мы пока полноценный базированием не производили но это интересно то есть планируя что в скором времени наверное попробуем это сделать посмотрим что выйдет понятно поделишься какие-нибудь типовыми приемами применение найти но вот у меня например н ловит сигнал it online косы что пользователь приобрел курс или курсы идет в движок моего сайта меняет роли этому пользователю на обладатели этих курсов и затем закрывает заказ после чего пользователь приходит письмо о в успешном завершении заказа и тем что он может начинать учиться несколько приведу в пример мы используем в работе такие системы я думать о знакомый как раз моушен еглик об и с помощью и на этом я автоматизирует некоторые процессы для того чтобы в целом упростить workflow при выполнении каких-то задач таких типовых которые повторяются из раза в раз например создания документов мы ведем проектные карточки в нарушения и наборы задачи нам проекты в кликать вот в случае с проектами в на ушами то мы туда в основном попадают сделки какие-то коммерческие по которым регулярно нужно генерировать документы договор и акт и презентации коммерческие предложения и все прочее ну и вот в какой-то момент мы решили что нужно бы это все упростить до состояния когда менеджер заполнил карточку в но уж не нажал кнопку и на выходе получил готовая готовую презентацию с коммерческим предложением смету готовы ну и при заполненная уже договор это один сценарий второй сценарий который достаточно сильную правда упрощает жизнь от telegram. bot для групповых чатов для рабочих которые с одной стороны оповещают о всех изменениях в клик api в проектном пока о какой-то конкретной тематике например это предположим это рабочий чат по теме финансов или по теме продаж соответственно такой вот он мониторит все события в проектном чате по продажам или по финансам присылает все уведомления в рабочую группу и обратный процесс когда менеджером который большую часть времени проводят в телеграме и для того чтобы его не отвлекать не заставлять его там большое количество форм заполнять такой вот может прям в рабочем чате принять от него новую задачу и сам в ней просто вид теги просто вид исполнителей ну и также пусть это же по цепочке куда-то и для себя для своего личного такого профита и как сам себя облегчая жизнь я много работаю с и мероприятиями с какими-то событиями краткосрочными которые проходят за один за два дня и в период таких мероприятий требуется работа с большим количеством с большим объемом данных это в основном пользовательские данные причем они как правило разрозненные хранятся в разных базах где-то это пользовательская база где-то это данные о транзакциях где то эта статистика использования от одного инструмента конкретного или статистика заходов и их все нужно агрегировать их все нужно укладывать дальше в какую-то общую аналитическую базу например там простейших google шип и вот такие мероприятия я собираю единый большой сценарий canvas вот такое на котором много разных кусочков которые каждый делает что-то свое и я их в нужный момент просто руками запускаю например сейчас мне нужно перегнать данные отсюда туда я запускаю этот кусочек и вот под конец мероприятия у меня этот карлос разрастается до огромных размеров и там у меня просто такой менеджерские набор инструментов для работы с данными очень круто потому что сжатые сроки постоянно меняется меняются требования постоянно меняется ситуация на проекте то есть один два дня всего и нету возможности на самом деле бегать постоянно дергает разработчиков потому что разработчики в этот момент тоже чем-то важным зовет заняты они поддерживают систему они возможно вносит какие-то экстренно этом изменения которые требуются на проекте такого рода задачи в итоге могу выполнять сам это конечно круто да звучит вообще впечатляющий потому что вносить изменения прям нами туго найти но если большой canvas это может быть сложно но все равно легче чем как-то собирать это из всех разные там google табличек все вот следить тому кого что поменялось какое расписание новые кто куда не успел где новый спикер там если что наверное это прикольно так ну отлично тогда можем перейти ко второй части нашей встречи где ты покажешь нам что мы можем сделать с нны телеграм бота для тех кто видят и слышат эти слова первый раз не пугайтесь не выключайте видео мы специально сделан так чтобы вам было легко начать не имеет совершенно никаких навыков не в программировании не в создании telegram. bot of не в работе с и найти попробуем пояснить все эти этапы детальных разбирая чтобы вам все было предельно понятно так как мы поступим давая пошире свой кран да ты пашешь свой экран мы начнем прям создание telegram. bot а вот так

Что мы будем делать?

сейчас я так понимаю мы видел куда готовую конструкцию до который будем стремиться типа того на самом деле их 2 даже наверное 3 давай мы посмотрим на то как это в принципе работает я не могу сказать что это какой-то готовый то есть я достаточно быстро его собирал чтобы показать пример и работает он следующим образом здесь удалю мы приходим в бота запускаем команду старт он нам дает какое-то приветственное сообщение дальше у меня внутри есть несколько кнопок при нажатии на кнопку я как бы перехожу внутрь путешествую по меню я перепал перешел в profile увидел какое-то описание вернулся назад в главное меню дальше я могу перейти в другой раздел описания провалиться еще дальше в какую-то категорию и внутри этой категории провалиться еще в под категорию данном случае на примере портфолио то есть вот у меня в портфолио есть низации чат-боты внутри автоматизации я привожу еще какое-то количество кейсов и в каждом из кейсов еще какое-то описание но здесь за готов и заготовка описание то есть некое такое вот меню навигации условно то же самое что как это реализовано в бат фазере то есть когда вы сбор тв азарова говорить и соответственно вы также по меню внутри ходите оставаясь при этом в одном только сообщения я поясню год fazer это специальный системный бот в телеграме доступен всем и каждому для создания как раз ботов и управлениями мы покажем как им пользоваться как заводить нового бота через год fazer а и вы увидите что здесь нет ничего сложного вот еще у нас есть какая-то кнопка внизу она наверное тоже до свою роль играют но это новая фишка до которую выкатили telegram эту возможность встроить в publications вашего бота его можно вызывать по кнопке пой онлайн кнопки по кнопки клавиатуры которые может появляться здесь или по специальной кнопки вынесены вот здесь отдельно в данном случае это простейшая страничка которую я собрал которые здесь конкретно демонстрирует то что вы здесь можете показать какую то информацию при этом эта страничка она получает из телеграма данные о вашем аккаунте и о ваших настройках ну и соответственно 1 визуально она подстраивается под цвет темы которые сейчас выбран у вас в телеграме такая страничка при этом также и сам вот и страничка они полностью размещены в на это реализовано я поясню что это действительно очень крутая фича с в приложении потому что вот это может и зашивать логику навигацию отправку каких-то команд опять тот же int n продажу там товаров можете устраивать сам тебе грантом показывал на примере всякого фастфуда но возможности совершенно не ограничено и конечно это очень круто и с помощью александра мы увидим как можно это все дело построить возможностям может быть и ограниченной фонда смысле но их он их много да явно я наверно покажу просто направление в котором можно копать с помощью на это супер давай посмотрим поехали десна я не знаю наверное может быть имеет смысл показать еще какой-то схему с как которую мы набрасывали с тобой найдём каким образом мы пойдем по этапам сначала смотрим первую часть что нам нужно будет сделать нам нужно будет telegram подключить вообще создать бота подключите его к ней там дальше создать базовую алгоритм создать меню в боте и мы хотели еще сделать сохранение внушен не знаю ну посмотрим может быть будем сделать может быть нибудь начинаем создание ботов вторая часть да вторая часть это же это уже про веб об здесь мы добавим кнопку обод фазеры и сделаем сценарий своим хуком и дадим тестовые аж тема ли ответ потом сделаем презентационной у страничку какую-то простейшую и добавим в нее стиле и пользовательские данные круто поехали посмотрим

Заводим бота в Телеграме, используя Botfather

с чего начнем достичь вот начнем наверное нам нужно создать новую работу да давай покажем просто как вообще находится под фаза все очень просто вы идете вводно там в поиск и набирайте там набирайте bat-файл всплывает вот такой вот вы его выбирайте и все дальше у вас есть внизу меню где вы можете выбрать например a new бот больше нужно придумать какое-то имя этому болоту это просто обычное имя которое вы будете видеть она не системная может содержать пробелы такой человеко читаемое допустим около developer после этого нужно сделать системное по которому к этому боту можно будет через собачка обратиться к developer такое системное мен всегда должна заканчиваться на слово бот так или иначе как только мы задали ему имя и системное имя вот phaser нам дает вот такой вот таким ключ его нам нужно будет добавить в нмт монет н это можно сделать следующим способом так ну здесь я наверное создам новый сценарий чтобы было наглядней но можно на отдельной вкладке если там потребуется перепрыгивать быстро ну или так называем ваш сценарий как-нибудь и мы можем либо добавить вот здесь вот кредит шел найти здесь telegram придерживался это учетные данные еще пару слов перед тем как александр пойдет дальше вы видите здесь интерфейсы night in мы не сказали как он вообще появился то есть сейчас он установлен на сервере у александра то есть его арендованный vps сервер звучит страшно но на самом деле если вы посмотрите моё первое видео про иной танк который я залил зимой то вы увидите что в этом нет ничего сложного и если вы хотите максимально быстро впрыгнуть в иной then вообще ничего там и не устанавливать так далее просто зайдите к ним на сайт и скачайте настольную версию и можете прям попробовать то что делаем мы ну кстати с настольной версии можно даже и telegram. bot в тоже хочет так как придется при этом держать всегда компьютер включенным 24 на 7 ну или когда вы его собираетесь использовать а кто есть можно добавить просто через меню кр 16 либо добавить узел телеграма

Начинаем строить логику в Телеграме

начать мы хотим с триггера триггер это такой узел при котором который будет срабатывать когда кто-то что-то пишет этому боту или отправлять нужно все как-то взаимодействует потому что там способов взаимодействия с ботом их может быть много родов соответственно когда мы только добавили триггер нужно указать как раз cardin шел с которыми он будет работать и здесь будет пункт в меню create new создать новый вот как раз сюда нужно вставить talking который прислал нам вот fazer после того как вставили сохранили появится зеленая надпись что все прошло успешно подключение на теперь мы можем указать на какие события должен реагировать этот триггер такие события должен слушать ребята у нас тут произошла накладка и нам пришлось прервать нашу сессию после чего мы вернулись поэтому у нас немножко сейчас по-другому выглядит экран и спикер немножко в другой обстановке так что не удивляйтесь мы продолжим с того же самого момента на котором остановились то есть тестируя сигнал от нашего бота да собственно мы хотели получить первое сообщение для того чтобы его отследить стартуем мы по сути вот из такого состояния мы добавили просто триггер телеграм и теперь мы хотим получить первое сообщение для того чтобы строить каким-то образом дальше наш workflow вот этот бот которому я собираюсь отправить первое сообщение фактически я с ним просто здорово из говорю старт и триггер поймал это событие открываем сам модуль триггер и видим внутри что мы получили какое-то сообщение дальше с этими данными мы можем что-то делать внутри нашего сценария и в первую очередь по тому плану которые мы обсуждали мы хотим значит создали кредит шел создали триггер получили тестовые данные первый блок мы таким образом прошли n8 он мы подключили нашего бота теперь дальше мы делаем базовый алгоритм мы хотим чтобы бот умел что-то отвечать на команды сейчас мы просто им отправили старт вам ничего не ответил но при этом он услышал эту команду мы хотим чтобы он умел что-то отвечать автоматически выходить из групп вот такая вот есть хотела к потому что это бот исключительно для нашего внутреннего пользования и он только в наших группах которые мы его добавим должен уметь что-то делать поэтому хотим научить его автоматически выходить из групп и мы хотим логировать ошибки для того чтобы нам понимать в какой момент что то не так пошло с ботом и видеть текст непосредственно этой ошибки вот второй болт который я предлагаю попробовать реализовать что нам для этого нужно мы поймали сообщения от ловили дальше мы хотим понять является ли это сообщение событием пример ну то есть прежде всего я хочу как раз реализовать возможность невозможности функцию автоматического выхода так вот для того чтобы это сделать вам фактически нужно понять отделить простые какие-то сообщения когда пользователю нам пишет от события добавления непосредственно в группу вот для этого нужна такое событие по сути сгенерировать видели чему чем она отличается запускаем снова в таком режиме сценарий ждем какой нибудь сообщение в бот и для этого я создал просто группу в которой мы можем бота добавить ну и увидеть что при этом произойдет так нет здесь он у меня уже добавлен я сейчас временно остановлю это все удалю его чтобы его не было сейчас наверное если я запущу да ничего не произойдет слушаем при этом мы все события у нас звездочка установлена то есть не только сообщения в принципе все и теперь я снова добавлю вот в эту же группу таково на добавлен я вроде его удалил может из другой его группа ударил так этот себя еще проверю первых выключу себя показатель мышки всем выключен тут их да в общем я удалил бота сейчас мы получили события об удалении и теперь я запустил сценарий и сейчас буду добавлять бота для того чтобы как раз отследить это события добавляю пришло какое-то сообщение смотрим на это сообщение какие у него есть учительные признаки у него есть такое поле урчат member ключ от мимбар айдишник этого минера какого-то пользователя и соответственно статусе какие-то какой раньше была статус и какой сейчас статус если бы мы первый раз добавляли ну наверное здесь тоже был какой-то вт или может еще какой-то статус я сейчас не помню ну и при этом мы видим в общем наверное этого нам достаточно для того чтобы отделить такие события дальше добавляем модуль iv просто в поиске находим убавляем называем как нам его нужно и соответственно вот это событие пытаемся отловить точнее пытаемся настроить правильный фильтр для того чтобы такие события и отделять я поступил следующим образом я добавил сюда три условия с для тип переменных булин технологические перемены да и здесь задал следующее условие внутри я сделал expression через кнопочку то есть в данном случае это проверка у нас есть биг джейсон переменная которой мы можем обратиться и здесь я добавил свойства проверку на то есть ли у него такой property matched member я здесь мы его можем увидеть на самом деле да я поясню немножко для тех кто не знаком с языками программирования а там такая проверка которая приходит к нам из языка java script который здесь немножко используется но вы в принципе можете многие вещи делают вообще не знаю о том как работает java script но от конкретно эта вещь проверяет если во входящих данных такое поле как какой как она называется матч от member матч отменен в общем если такое поле есть то мы пойдем по одному пути если такого поля во входящем сообщении нет то значит сообщение был кот другого рода с ними надо работать по-другому как это можно воспроизвести на самом деле руками здесь в дереве входящих данных мы находим input дейта джейсон и вот он мальчик member мы можем выбрать роу вылью он нам сразу его сюда же добавить здесь дописать руками ну в общем да руками придется написать вот такую конструкцию и квадратные скобки заменить на круглое потому что в данном случае матча получается то аргумент вот этой функции круп не так это выглядит мальчик member да разуму пробуйте и если условие соблюдается здесь мы получим true из этим же и с true мы хотим сравнивать на самом деле когда мы добавляем новую переменную будут у нас вот есть два switch-а можно выставить true или false у них всего лишь два значения здесь мы добавляем express и тогда один из этих свечей становится выражением которое может писали некоторые надо проверить либо на истину либо на ложка зависеть от того как мы включим или выключим переключатель первое что мы проверяем это моча от member есть где-то у нас здесь было неважно в общем дальше что мы проверяем вложенное поле вложенный ключ который находится вот здесь внутри мальчик member у нас есть не учат member юзер и айди мы пишем здесь выражение логическая вот по сути если мы уберем вот эту часть то мы получим самая технику здесь вот результат для выражения то есть мы обратились сейчас вот к этому поле можем записать сюда логические выражения для того чтобы получить логическое значение точнее нет у нас она же здесь было dish ник соответственно вот этот айди мы просто копируем запишем вот таким вот образом мы проверяем то есть проверку уже произошла вот здесь сначала если бы здесь стоял какой-то другой айдишник то он выдал бы falls down это айди непосредственно самого бота а ты почему выбрал так зашивать иди прямо внутрь выражения не сравнивать его прямо через сравнение вот одно из таких не знаю мне ну то есть мне просто было удобно сделать вот на всех булевыми на типами и следующая проверка это аналогичная проверка только мы проверяем не не айди статус новый статус который был присвоен этого пользователю и в данном случае это статус member то есть из статуса не участника чье то перешел в статус участника таким образом проверка что вообще есть событие матча от member точнее поле и внутреннего айдишник соответствует айди бота и новый статус соответствует члены этой группы понял можем попробовать ее выполнить поскольку данные внутри сценария уже есть и поскольку в данном случае вот действительно был добавлен в группу результатом работает в модуле iv является то что он отдает данная в труп branch of branch то есть это вот ветка таким образом из истру у нас пойдет дальше какой-то сценарий который предполагает что этого бота действительно добавили в группу но в данном случае нам нужно всего лишь один модуль дополнительно который будет обрабатывать это события это так что модуль телеграма его также можно найти просто через браузер модулей через навигатор модулей это не триггер это просто обычно модуль telegram здесь внутри мы выбираем ресурс с которым работать не сообщения как обычно учат и выбираем operational лифта есть покинуть группу покинуть чат и как аргумент для айди чита мы находим также через входящие данные через джейсон матч от member и чат в котором произошло любите указываем здесь айди вот она есть вот есть да если мы ещё раз сюда нажмем то получит красиво это все я не писал руками разумеется просто нашел и ты дереве нажал один раз и все заполняется вот в принципе этого достаточно уже это по идее поидее вот мы добавили сюда этого бота проверка прошла она ушла в ветку true значит если я сейчас запущу этот модуль the boat должен автоматически выйти из вот он escuteon он вышел из группы покинуть set то есть теперь мы можем попробовать даже сохранить и активировать этого бота еще раз попробовать его добавить я уточнил то есть сейчас у нас были тестовые такие прогоны чтобы он сработал мы нажимаем кнопочку ок секрет workflow такой принцип принудительный запуск но после того как будет протестирована в рабочем состоянии его можно активировать уже на автоматическую работу для этого щелкаем по этому верхнему правому переключателю актив и от которых он становится exif он уже а реагирует на те команды на который должен реагировать для этого кнопочку нажимать не надо будет да в общем то я его активировал и только что его добавил он вышел то есть вот это сейчас наш бот по сути вся логика которая внутри него есть я добавляю сюда такой ноут ну на самом деле просто для может быть визуального удобства какого-то для того чтобы помнить за что этот модуль отличает но по факту я конечно же и так называю сами узлы таким образом для того чтобы мне просто наверняка знать что конкретно делает этот узел без захода в него для того чтобы проще было читать весь алгоритм дальше хочу под названием выходить автомате из групп в которой тебя добавили можно считать реализованы клочок готов нам нужно чтобы бот умел отвечать на команды и чтобы мы умели логировать ошибки вообще чтобы все ошибки автоматически лагера вались значит делаем ответы на команды у меня здесь есть заготовки сначала нам нужно реализовать набор базовых проверок что такое базовые проверки мы должны точно понимать что пользователь что нам прислал пользователь что он написал он прислал текста он прислал может быть не текста фото или он каким-то образом еще по vsa и про взаимодействовал с ботом может быть он нажал кнопку вот для этого всего я добавляю скажем так такой вот набор и fav каждый из которых отвечает за какую-то определенную проверку значит сюда что важно в 1 и впервые у нас будет про проверку сообщения или нам прислал пользователь и или это что-то другое следующая проверка если это не событие добавления в группу я хочу убедиться ну вообще понятие это сообщение мне пришло или сообщение или может быть нажатии на кнопку давай запустим еще раз боты отправил ему команду старт можно на нее еще раз нажать вот у нас команда прошла мы ее поймали и ушло в ветку falls значит дальше весь сценарий у нас из ветки фолз идет мы добавляем еще один iv в этом efi что я делаю я аналогично тому как мы в прошлый раз делали проверку на мая на наличие более матч от member также здесь я ищу свойствам с если она у объекта джейсон которые приходят в данном случае она есть она содержит себе вот здесь вот прям мы можем увидеть что сюда приходят есть свойствам с синим внутри есть еще какие-то поля вложенности но у нас просто интересует если само по себе и если есть то значит это какое-то текстовое сообщение и мы его отдельно обрабатываем а кроме этого еще и может приходить не текстовое сообщение например callback вере так вот да технически это может быть сообщения но виде фото вот и у него тоже не будет поле message него будет поле капсюль то есть подписал но в данном случае мы хотим научить нас задача сейчас промежуточная какая мы хотим бота научить отвечать на команды дети те которые начинаются со слыша какие бы у него команды не были мы делаем для такую для него функцию где даже не функцию наверное логическую часть где он сможет отделить такие сообщения и что-то на них отвечать вот мы произвели первую проверку и это проверка на то что это вообще в целом сообщение все эти связи пока лишь не удалю дальше ну и попробуем соответственно выполнить прогнать дальше данные по сценарию вот они прошли они ушли из фоллз branch предыдущего iv а теперь в трубу ranch текущего и здесь они в трюм раньше попали ветку true и дальше я проверяю нато является ли это текстом есть ли у message внутри на черное поле текст выглядит это следующим образом то есть вот есть а внутри у него какой-то текст вложенный здесь как раз я проверяю через точку есть ли у него такое поле и если есть то я сразу понимаю что это какой-то текст дальше запускаем смотрим действительно тоже сработало ветка true и отсюда и дальше мы можем уже с этим работать как с каким-то текстом и например отделить просто текст который мне написал пользователь от команд то есть насколько тебя понял кнопки которые вот сейчас типа вот это оценишь старт это распознается как текстами просто кнопка это не помнит и там в своем пути и добавил эту кнопку или нет но смотри на самом деле вот которая была первая кнопка когда ты первый раз заходишь в бота она делает исключительно во что она отправляет боту вот эту команду прямо непосредственно текстом когда ты нажимаешь на такой текст диалоге с ботом ты просто дублируем прогоняем дальше по сценарию данные они уходят в true и попадают в еще один iv что я в этом efi пытаюсь проверить я указываю здесь просто нахожу массаж нахожу непосредственно сам текст ставлю его сюда кликам и дальше я выбираю операцию проверки начиная целей этот текст с какого-то символа в данном случае это слэш все произвожу проверку он будет дел что старт начинается со слыша значит дальше я могу что-то буду ответить уже ответить на команду я могу в принципе сразу вот как только я понял если у меня есть только одна команда вообще старт не могу прям сюда поставить ответ бота но я хочу сделать некий задел когда внутри бота есть но может быть две или три команды в данном случае 2 поэтому дальше я в том числе еще и распознаю после того как я понял что текст начинается со слыша значит эта команда после этого я распознаю какая эта команда выбираю модуль для этого switch поскольку вариантов будет больше чем два называю команд просто переименовываю для удобства дальше вы выбирая режим rus он здесь стоит по умолчанию да это type тип данных которые сюда приходят это строка и здесь я также указываю то же самое свойство нагрев лишь прошлой проверки указывал ну а дальше я выбираю две проверки соответственно чему с чего начинается хотя можно просто добавить здесь метод сравнения и эквол то есть равняется я для удобства начну называю стартует может быть в будущем это можно использовать следующим образом мне нужно отделить команды таким образом мне пользователи могут присылать команды плюс какой-то текст к этой команде но мне нужно однозначно все равно понимать что эта команда и поэтому я хочу узнать с чего начинается текст от пользователя поэтому старт speed добавляю 2 старт это как раз начало диалога с пользователем и командой факел какой-нибудь набор вопросов и ответов и указываю для всех случаев которые не подпадают под эти проверки указываю путь пока для каждого из тех которые уже указал я указываю путь куда эти данные должны выходить здесь их всего четыре напомню то есть первый начинается 1 это 0 ну и так далее последние 3 для этих двух вариантов я указал 0 выход и первый выход а для всех случаев которые не подпадают под них указывают 3 чтобы если пользователя мне прислал что-то начинающаяся слыша но не такую команду я бы все равно ему что-то ответил здесь ну можно сразу же проверить работает ли этот switch мы увидели что он распознал что действительно это строка начинается со старт и поэтому он пустил ее в 0 в любой дальше сюда мы добавляем тоже модуль telegram в качестве ресурса уже указываем сообщения операцию выбираем отправить сообщение в чат айди мы подставляем также находим джейсон в внутри чат мы находим о еде и нажимаем она здесь появляется таким образом мы указываем кому ответить в поле текст мы добавляем какой-то текст который мы хотим отправить здесь что я делаю сейчас попробую объяснить я хочу обратиться по к этому пользователю по имени и фамилии да я внутри чат это можно и внутри поле from найти поскольку у нас данном случае это чат с мотом использовать это не публичный чат где содержимое чат и from могут отличаться это чат с пользователем внутри чет я указываю first name пробел здесь ставлю дополнительно и last name то есть таким образом я могу поприветствовать попробуем сейчас это сделать здесь я добавляю какой-то текст могу отдельные места обрамлять в html теги для того чтобы они работали при отправке от пользователя от бота в настройках бота нужно выбрать добавить поле парс молд вот такой вот то есть обычно его нету по умолчанию сейчас покажу как это выглядит то есть обычно его нет по умолчанию вот нам его нужно добавить через it felt и указать html дополнительно я выставляю настройку disable cache превью для того чтобы при отправке каких-то ссылок пользователю у него не появлялась превью все в принципе готового мы набрали какой-то текст сделали заголовок маленький который будет бал дом попробуем его отправить да и дополнительная еще добавил сюда inline кнопки там вот лучше не маленький бар да вот триплой рэпа и мардан я сейчас к ним еще вернусь и расскажу что каждый из них делает и как с ними работать пока я просто хочу проверить что я указал chateau de кому ответить добавил какой-то текст и хочу ответить для того чтобы увидеть что все сработало да вот мне сообщение пришло здесь уже сразу у меня добавлены кнопки но по сути даже сейчас мы уже можем проверить аналогичную операцию я делаю для команды африке поскольку здесь я проверяю на две команды и для старт будет выход 0 а для африки 1 я из первого выхода также делаю но практически там клон вот этого сообщения на старте то есть я делаю такую же операцию я отправляю сообщения в какой-то чат и добавляю какой-то текст в данном случае я просто общество клонировал вот и пока в принципе этого достаточно мы можем запустить опять бота и проверить что он работает там проблем проверить что этот бот работает я просто нажимаю старт он не отвечает ну то есть в принципе он в этом смысле готов можно проверить и факел будет ли отличаться ответ да вот здесь вот я сделала небольшую заготовку как будто бы здесь условно там секция вопросов и ответов и он различает эти две команды живо может можно наглядно это увидеть следующим образом мы запускаем warhol нажимаем команду старт вот исполнилось именно команда старт какое-то велкам запускаем еще раз нажимаем команду африке и теперь исполнилось вторая ветка и для всех случаев которые не проходят это проверка то есть это какие-то команды которые мы не умеем обрабатывать мы не знаем что пользователю на это ответить я добавляю тоже какой-то ответ какой-то заготовку пишу словно мне не знакома такая команда и какие есть варианты для того чтобы дальше продолжить диалог например нажать еще раз какие-то то есть по сути указываю просто так же айди жку и какой-то текст отдаю да таким образом если пользователем не пришлет какую-то неизвестную команду например info я такое не знаю у меня есть уже 3 типа ответов это когда мы пользователю говорим с этим мы сделать ничего не можем нажми что-нибудь еще а я правильно понял что когда ты ставишь слышь в начале слова он программ автоматически как ссылку ну как команду распознает я не уверен что с русским шрифтом это работает поломал ну я иду вот в текст и даже вот те в сообщении в тексте в сообщении да вот теперь у нас есть три типа ответов на разные команды но я пока не знаю что отвечать пользователю если он мне просто написал мне команду которая начинается со слыша вот здесь вот мы проверяли на то что команда начинается слыша может быть пользователь просто написал какой то текст я не знаю что ему отвечать соответственно я отсюда также могу протянуть ветку путь к тому же самому ответу который мы отвечаем пользователю которые прислали неизвестную команду в обоих случаях пользователь будет получать одно и то же сообщение можно сейчас проверить если пользователь просто написал что не надо запустить буркнул он он и тогда сейчас работал просто на предыдущее сообщение на этом на старт если мы присылаем пользователю не команду праздником в этот текст дата он срабатывает также но как ты видишь вон сюда даже не попадает проходит здесь конечно надо будет иметь ввиду что если ваш был в какие-то моменты после каких-то команд будет ожидать эту вас текстовый вот чтобы соответственно этот момент отлавливать потому что сейчас будет безусловно реагирует я вижу на любые текстовые команды и аналогично на самом деле для всех команд в которых есть текст но которые точнее которые не являются текстом я на самом деле пока на этом этапе хочу типа ординаты там все в принципе эта часть готова

Добавляем отдельный процесс для отлова ошибок

что нам ещё нужно сделать здесь мы добавили кнопки смотрел на наш план что мы хотели сделать он имеет ответ отвечать на команды он автоматически выходит из групп нужно логировать ошибки могут быть неизвестно по какой причине не если честно сложно сказать как вот сейчас сгенерировать нам с тобой ошибка да вроде все так отворили но одна бываешь то сервер каком-то пахнуть стоит отдала отдалась мудрее вот он поступим следующим образом мы вот здесь вот удалим chateau de там где он должен отправить нам какое-то сообщение здесь в африке и попробуем сейчас пройти в африке мотивов реки что то должно произойти мы увидели что вот здесь вот у нас возникло что с этим делать то есть это на самом деле может происходить в любой момент для этого внутри сценариев есть настройка указать какой-то р workflow который что-то делает случае возникновения таких ошибок для такой вард фол создал не делать делает он только одно где мы сейчас находимся вот мы создали workflow под названием error этот ворох мы указываем в качестве в настройках нашего основного сценария вот здесь мы указываем в качестве сценария который будет воспроизводиться при возникновении ошибок возвращаемся в него здесь основной ключевой узел это r trigger он срабатывает каждый раз нам не нужно активировать этот workflow здесь наживать нажимать актив если мы его указали как сценарий для воспроизведения ошибок в нашем основном то он автоматически будет зарабатывать активировать его не нужно когда произойдет какая-то ошибка здесь появятся данные в этом узле описывающее эту ошибку с айди сценария где она возникла с описанием самой ошибки с текстом s айди номер с номером исполнения и после этого я хочу передать ее в telegram чтобы вот прислал мне сообщение об этой ошибке для этого я создала еще одного бота вот наш основной бот с которым который мы настраиваем с которым мы работаем я создал еще одного бота чтобы он отдельно мне прислал сообщение об ошибках сейчас никакой ошибки не происходит но я хочу протестировать как этот сценарий будет работать и в целом я хочу его настроить для этого этот r trigger можно запустить и он автоматически сгенерирует шаблонное сообщение об ошибке вот она у нас появилась дальше мы можем уже с этими данными что-то сделать например отправить как раз с помощью бота здесь я уже подключил cry держал этого нового бота и указал едешь свой собственный айдишник чтобы он именно мне его отправил и указал настроил некий шаблон сообщения что я хочу чтобы он не писал опять же здесь также с использованием html тегов выделяю заголовок жирным дальше подзаголовки тоже бал дом выделяю вставляю ссылочки ну то есть по сути что здесь я здесь пишу я пишу workflow и название workflow все эти данные я достаю как раз is carried out in the это джейсон то есть по сути вот из этого как раз r trigger обращаюсь к входящим данным таким образом то есть вот здесь например название workflow я хочу подставиться открываю карл норден это джейсон workflow на им нажимаю у меня он появляется тоже самое делаю с экзо киршин здесь я хочу сформировать ссылку с номером исполнения чтобы при нажатии на неё и у меня тут же в браузере открывался бы лог исполнение и я видел сразу где возникла ошибка и мог бы тут же разобраться фактически я здесь делаю с помощью html тега указываю ссылку также достаю из экзотичным url и здесь подставляю айди жку то есть будет выглядеть так что здесь просто номер по сути исполнения и при нажатии на него я буду по этому углу переходить режим исполнение в данном случае это может быть режим либо триггер либо mcneal минерал это когда я вручную запускаю сценарий и у меня возникает какая-то ошибка ну и описание самой ошибки в самом конце ошибка и какой-то мэсседж который вместе с этой ошибкой приходит сейчас у меня данные внутри уже какие то есть в r trigger и здесь все построено просмотр hdmi ли я включил для того чтобы он воспринимал html-теги все пробую просто исполнить для того чтобы получить себе тестовое сообщение об ошибке вот он мне прислал мы теперь всегда когда будет возникать какая-то ошибка в основном нашем сценарии так ты завис не думаю что нужно как-то дальше там заострять на этом внимание ты там немножко но товар наверное а ну хорошо я вернулся на каком моменте пропал от когда показывал своего суббота с ошибками уже в телеграме что-то там говорил еще раз сейчас по сути это был это было тестовая ошибка которую я сгенерировал просто вот здесь вот вариант то есть наши ошибки по факту никакой не произошло я сгенерировал шаблонное сообщение об ошибке и дальше отправил его себе в telegram ну и в общем-то сценарий для ошибок он готов его можно в таком виде и оставить мне этого на данный момент достаточно дальше мне остается только его сохранить активировать его не нужно насколько понимаю этот сценарий и этот бот а он годится и для других каких-то твоих ботов то есть это такой общий бот и сценарий для ошибок по большому счету да ну использовать я его буду вот исключительно для этого бота мы можем на самом деле можем проверить вот здесь в нашем основном сценарии сработает она или не сработает как это можно сделать можно какую-то типовую ошибку придумать вот допустим у нас есть велкам с какой-то и мы можем просто удалить здесь чат айди вообще я control x сейчас нажал чтобы потом быстро вернуть вот сохраняю и в нашем основном boker нажимаю старт он мне ничего не ответил но боты с ошибками прислал мне сообщение об ошибке тут же прислал ссылку на само исполнение на execution я могу его открыть и я тут же как раз попаду в сценарий в лог того исполнения где произошла ошибка и увижу это не лог нет он меня влог как раз перекинул то есть я вижу как раз лог исполнения изменить я здесь ничего не могу я могу отсюда только скопировать если что но пред но при этом я вижу что ошибка возникла именно вот здесь могу изучить и открыть посмотреть что с ней произошло и здесь у меня в явном пишет явном виде говорит что чьи-то идеи отсутствует возвращаю что-то идеи теперь все работало ну в общем да таким образом получается мы проверили что действительно сценарий для ошибок работает и все ошибки таким образом обо всех ошибках мы будем узнавать через этого дополнительного бота возвращаю чат айди сейчас сюда ссылку на chateau de вот ошибками мы закончили давай посмотрим что мы хотели дальше делать мы хотели создать меню в боте чтобы он отправлял онлайн кнопки реагировал нажатие и дальше каким-то образом происходило навигации с помощью этих кнопок

Другие видео автора — School of Practical Skills

Ctrl+V

Экстракт Знаний в Telegram

Экстракты и дистилляты из лучших YouTube-каналов — сразу после публикации.

Подписаться

Дайджест Экстрактов

Лучшие методички за неделю — каждый понедельник