Привет! Сегодня мы расскажем про то, как мы устали искать информацию — и сделали так, чтобы она всегда была под рукой. Всегда, когда есть телефон с установленным Telegram в руках. Поехали!
Видео демонстрация работы Trigger bot
Проблематика
Вся проблематика, которую мы хотели закрыть ботом, — мы закрыли. И она видна на гифке выше. Если смотреть не хочется, то вкратце:
Едете, значит, вы в метроавтобусетакси — на работу. И тут новому клиентуподрядчикуколлеге срочно нужны наши реквизиты. Для чего угодно (думаю, вы меня понимаете). Где мне их найти быстро? В загруженных файлах на телефоне? Искать по рабочим чатам или в «Избранном»? Лезть с вопросами к юристам?
Все эти (и не только эти) пути исхожены уже до такой степени, что в какой-то момент стало настолько не смешно, что захотелось свежего решения.
Все то же самое, что применимо к реквизитам, можно применить и к другим вещам. Например, шаблон договора, ссылка на какой-то сайт, куда надо заходить раз в год, логотип «в линиях», смешная гифка и так далее.
Фишки Telegram / Видео в портретном режиме
Решение
К моменту создания бота мы занимались их разработкой уже как пару лет. И поэтому логичным решением показалось именно создание очередного бота. (Бот родился не вчера. Ему уже больше года. А нашему направлению по ботам уже четыре.)
Честно признаться — выход из ситуации не уникальный. Америку мы не открыли. Такая функциональность встречалась в разном виде в разных ботах, и, может быть, вы его даже видели. А может быть видели и не обращали внимания. Мы постарались «консолидировать опыт» других разработчиков, чтобы решить свои проблемы.
И сейчас пишем об этом вам.
Итак, что делает бот?
Функциональность Триггер бота
Все так просто, что многие не могут даже поверить.
Второе видео демонстрация работы Trigger bot
У нас есть чаты, где триггеров созданы сотни, и куча информации всегда под рукой. Достаточно зайти в чат, вбить нужное сочетание слов, и бот триггернется нужным сообщением. Просто и удобно.
Еще есть команда /del_trigger для удаления триггера, и /help. Это вроде очевидно.
Ну и он специально сделан чтобы отличать заглавные и строчные буквы. Триггеры «Реквизиты» и «реквизиты» — это разные триггеры, что тоже можно использовать интересным образом. Хотя, казалось бы, одна буква разница.
Это может и запутать, конечно. Но в этом случае достаточно завести на оба варианта одни и те же реквизиты 🙂
Применение Триггер бота
Как оказалось, такую функциональность можно применить в бесчисленное количество сценариев. В одном из чатов настроена цепочка так, что с ним можно петь (он продолжает слова песни). В другом он просто напоминает правила чата, когда добавляются новые люди (не тупо дублирует каждый раз, а по запросу админа, очевидно).
Самая прелесть в том, что больше он не делает НИ ЧЕ ГО. В личке молчит, в каналах молчит. Он просто триггерится когда надо — и все. Только в групповых чатах. Мы встречали, что другие разработчики добавляли такую функциональность «в довесок» к «основной» функциональности своего бота. Или зашивали какие-то триггеры свои «смешные».
А мы просто отрезали все лишнее, и остались довольны.
Боту, по сути, без разницы, что вы ему хотите засунуть в реплай. Он не скачивает это видео или документ себе . Он сохраняет лишь ссылку на сообщение (спасибо Дурову) . Потом обращается по этой ссылке и воспроизводит.
Что дальше?
Есть несколько мыслей, как сделать бота поинтереснее. Но есть опасение, что он утратит свой «шарм минималистичности». Например, чтобы сразу можно было создавать несколько триггеров одним сообщением. Или возможность установки триггеров сразу во все чаты, где есть и бот и пользователь, который устанавливает триггер. Что думаете об этом?
#телеграм #telegrambot #IT #триггербот #чатботы #автоматизация
Источник: dzen.ru
Создание триггеров
❗️ Обрати внимание, что команда !button написана в ответ на сообщение «Триггер такой-то сохранён», это магический текст в котором есть информация о триггере, кнопки можно добавлять только в ответ на это сообщение
Часто задаваемые вопросы
- Несколько триггеров можно сохранить на одно слово (не рекомендуется)
- Если в исходном сообщении были кнопки или разметка (жирный шрифт, курсив и тд), они сохраняются и в триггере
- Регистр (НаПрИмЕр ТаК) игнорируется (в примере видно), но можно изменить в настройке триггера
- Пинговать людей можно, но не больше 5 в 1 триггере (ограничения телеграма)
- Чтобы триггеры могли создавать только админы в чате, включите опцию Admin Only в !settings
Источник: telegra.ph
Конструктор триггеров в Telegram. Или как мы сделали простейшего, но полезного бота
Привет! Меня зовут Боровков Евгений и я предприниматель. В этой статье я расскажу про свой pet-проект. Или как я решил проблему вечного поиска информации прямо в уютном Телеграммчике.
Скажу сразу: я не программист. Я скорее менеджер, который работает в команде с программистами. Поэтому прошу меня простить, если технической глубины в статье не будет хватать.
Бизнесовая часть и проблематика
Идея не нова. Скорее всего вы или уже пользовались такими ботами, или пробовали написать такого своего. Но в поиске оптимального решения своей проблемы, мы пришли именно к такой конфигурации.
Суть бота очень проста и видна на видео ниже:
Если смотреть не хочется, то вкратце:
Еду, значит, я в метротаксиавтобусе на работу. И тут новому подрядчикуколлегеклиенту срочно потребовалось скинуть наши реквизиты. Для счетадоговораактачего угодно.
Где мне их найти быстро? В закладках? В автозамене? В загрузках в телефоне? В “Избранном”? Думаю вы уловили, или сталкивались с таким сами
У нас даже в какой то момент появилось специальное удобное хранилище таких файлов и информации. Но достаточно быстро оно все равно забилось и проблему не решило. Пример с реквизитами тут взят исключительно как пример. Ведь всем вокруг постоянно нужны кроме реквизитов еще и логотип в “линиях”, ссылки на какие-то сайты, или, в конце концов, смешные гифки.
В какой-то момент я пробовал подключить стороннего похожего бота. Но он то не работал, то как-то криво отвечал, то вообще слал рекламную рассылку. Пробовали других ботов: тоже самое. Некоторых неудобно настраивать, где-то нет списка всех триггеров, где-то нет русского языка.
В итоге решили писать своего. Чат-ботов мы делаем уже больше 4 лет, видение уже +- сформировалось, на серверах место для еще одного бота найдется. Поехали!
Бизнесовая логика работы бота
Второе видео как продолжение первого:
Бот работает на столько просто, что разберется даже ребенок:
Больше бот не делает НИ ЧЕ ГО. И тем самым соблюдает две основные заповеди ботостроения: имеет простой функционал и молчит когда его не спрашивают.
Количество чатов не ограничено, количество триггеров внутри чата не ограничено.
Как это работает под капотом
Основной ЯП, который мы используем, это Java. По нему у нас накоплена самая большая компетенция. Поэтому бот построен на Spring boot стеке:
org.telegram telegrambots-spring-boot-starter 5.7.1
База: MongoDB. Бот не хранит сами сообщения и не скачивает файлы. Ему достаточно хранить только ссылки на них.
Теперь по пунктам
- Пишем сообщение: гифкуфайлвидео — что угодно
- Делаем реплай нужного сообщения и пишем команду /set_trigger ключевое слово (или триггер) например «/set_trigger реквизиты».
После этого бот:
- Достает имя триггера из сообщения
String command = userText.replace(«/set_trigger», «»).trim();
2. Достает ссылку на само сообщение, которое должно быть сохранено
if (reply.hasText())
- Собирает триггер и сохраняет его в БД
Trigger trigger = Trigger.builder() .chatId(chatId) .commandName(command) .triggerMessage(triggerMessage) .triggerType(triggerType) .build(); triggerRepository.save(trigger);
4. Отправляет ответ, что все сделано
Bot.send(new SendMessage( chatId.toString(), EmojiParser.parseToUnicode(«:white_check_mark:») + createdInfo + «n + triggerMessage));
Другие технические тонкости
Собирается проект с помощью Maven. Просто так вышло, не спрашивайте почему. Другие проекты мы собираем, как правило, с помощью Gradle.
Собранный jar запущен на vps как unix-сервис. Для комфортной работы бота хватает 512 мб памяти. Не смотря даже на количество пользователей и количество заведенных триггеров, этого пока вполне достаточно.
Кому нужны исходники, можете написать, мы готовы ими поделиться. В общий доступ выкладывать не хочется. Хотя и секрета там особого нет. И да, сидим мы на гитлабе в приватных репозиториях, а не на гитхабе.
Бот не требует никакого обслуживания и внимания. Единственное, что недавний переход телеги на 64-битный идентификатор заставил перелопатить некоторых наших ботов. В том числе и этого.
В отличие от других ботов, тут мы не использовали свою State машину. Но в других проектах, где используется более 5 стейтев бота рекомендуем уже использовать либо спринговскую State машину либо самописную. Иначе с развитием проекта, код быстро превращается в набор спагетти методов.
Что еще
На данный момент, мы думаем как улучшить бота, не уничтожив его “шарм минималистичности”. Если есть идеи, пишите в комментарии.
Источник: habr.com