Telegram-ботами уже никого не удивить. Недавно Telegram отметил 10-летие, и я решил сделать текстовую версию своего ролика. Идея простая — иногда возникают сложности с тем, чтобы придумать о чем писать Telegram бота, и я решил поделиться подборкой ботов, которых разработал и использую в своей жизни я. Причем это будут не прям боты, а скорее способы использования telegram-bot-api для решения разных задач. Первый самый простой пример использования Telegram - это отправка уведомлений. Можно отправлять уведомления, когда сайт упал, а также получать уведомления о новых заявках. Например, если у нас есть сайт компании, то когда приходит новая заявка, можно получать уведомление через Telegram. Это очень-очень базовый способ использования Telegram. Не знаю как у вас, но у меня регулярно возникает необходимость выкачать чего-нибудь с сервера, на который я зашел через SSH. Например, я сгенерил какой-нибудь отчет скриптом и хочу себе закачать. Подключаться через sftp и идти снова в эту папку достаточно лень да и все равно потом этот файл будет отправляться, скорее всего, кому-то в телеграм. Я написал небольшой bash-скрипт, который позволяет мне запустить команду и указать путь до файла. В итоге этот файл прилетает мне в личку, и дальше я уже делаю с ним чего хочу. Когда писал этот скрипт я и не думал, что буду пользоваться им так часто. В итоге этот файл лежит почти на каждом сервере, которым я пользуюсь. Важно: учитывая, что этот скрипт прямо в себе хранит bot-token, то рекомендуется создать для этой цели отдельного бота, чтобы не переживать о том, что кто-то другой может слить этот токен. Ещё один пример, который связан с предыдущим — отправка автоматических бэкапов. Я понимаю, что не всегда хорошо использовать телеграм в формате файлового хранилища, но у нас был проект, где клиент не готов был платить за поддержку бэкапов и говорил что-то вроде “ну мне бэкапы не нужны, проект не критичный”. Но мы ребята ученые и все равно его бэкапили. Механика резервного копирования простая — есть bash-скрипт который создает tar.gz из нужной папки, разбивает архив по 40мб и просто скидывает их в чат. Сам скрипт закинут в крон на 5 утра на каждый день. Система работает уже несколько лет и пару раз конкретно спасла клиенту жопу ситуацию. Конечно, это не так удобно, как нормальная система бэкапов — файлы надо собирать в один, переносить на сервер. Но оно того действительно стоит! У меня в галере есть куча разных проектов и под каждый проект у нас свой telegram чат. Некоторые проекты сделаны на микросервисной архитектуре. Работаем по флоу фича ветки, которая вливается в stage (с автодеплоем на тестовый стенд) и последующим вливанием в release. После разработки какой-то большой фичи на 5 сервисов, возникает необходимость сделать сразу несколько MR (Merge Request) со стейджа на релиз. И это, обычно, делаю я. Мне это надоело достаточно быстро, и мы сделали небольшого бота, который по чату понимает о каком проекте идет речь и создает эти MR-ки сам. Мелочь, а приятно. С этой автоматизации у меня зародилась мысль, что можно многие рутинные операции переложить на бота-помощника и с тех пор началась разработка этого бота фоном и он расширяется в разных направлениях. Про этого бота я делал отдельный ролик. Но кратко опишу его в текущей подборке. Суть такая: я веду свои задачи в Notion и создавать задачи через их интерфейс — дело неудобное. Сам по себе Notion прекрасен, но загружается очень долго, потом пока дойдешь до нужной страницы и тд — проще забить и не записывать задачу. Плюс еще я бы хотел, чтобы мне могли ставить задачи другие люди, при этом не видя остальные задачи. Немного кода и теперь ограниченный круг лиц может писать моему боту с задачей для меня, а дальше уже я сам займусь ее реализацией. Если бы у Notion была бы нормальная система вебхуков, то я бы сделал и оповещение пользователя о выполненной задачи. Но, пока что, сойдет и так. Таким образом, получается, что люди не имеют доступ к моему Notion, но при этом могут в Notion сваливать задачи, которые мне потом нужно будет разобрать. Разумеется, никто этим не злоупотребляет, и пользуются только в том случае, когда они могут напрямую добиться того, чтобы я что-то сделал или когда у них уже делается что-то несрочное. Раз я делюсь подборкой ботов, то грех не поделиться этим. Он не связан с работой и продуктивностью. Я играю в Fortnite и, обычно, играю прямо в рабочее время — потратил 30-40 минут и обратно впрыгиваешь в работу. Но проблема в том, что Fortnite любит уходить на обслуживание ночью по американскому времени, что приводит к тому, что у нас он не работает в 12-13 часов. Очень неприятно об этом узнавать, собрав ребят поиграть. Поэтому я написал бота, который регулярно заходит на status.epicgames.com и пишет мне об изменениях статуса сервера. В итоге я всегда знаю о том, что сервер прилег на обслуживание и можно работать спокойно, не планируя прекрасный перерыв. Однажды у меня появился ребенок, а потом и еще один! И быть отцом = получать много разных фотографий своих детей от разных людей и, обычно, через Telegram. Я бы очень хотел сохранять эти фотографии в облако (я пользуюсь яндекс диском), но руками переносить это слишком сложно для такого лентяя, как я. В итоге, решение оказалось очень простым — я сделал бота, которому пересылаю фотки от других людей, а бот перекладывает эти фотографии по папкам в каждый месяц. У меня была мысль еще добавить распознавание лиц, чтобы помечать кто есть на фотке, но я пока ее отложил в долгий ящик. Мне достаточно того, что фотки сохраняются в удобное для меня место после минимальных действий с моей стороны. Мой бот @amorevbot, по-умолчанию, выступает в роли моего секретаря. Любой человек может ему написать и, в отдельном чате, создастся тред, в котором я уже буду общаться со своей стороны, а мои сообщения будут отправляться уже, от имени бота, этому человеку. Этот бот нужен для тех, кто хочет связаться со мной после моего контента на моем youtube или telegram канале. В итоге получается единая точка входа для общения со мной, но при этом не отправляя мне сообщения напрямую. Также, я отделяю личное общение знакомых мне людей от, однозначно, незнакомых. В сети куча готовых решений для этих задач, но мне они все не понравились тем, что нельзя научить бота создавать изолированные треды для общения с людьми. В итоге, это всё превращается в свалку сообщений, среди которых мне нужно отыскать именно то, что относится к определенному человеку. Следующий способ использовать Telegram-бота – это отслеживание курсов валют. Я совсем не инвестор и, более того, имею огромный опыт в торговле на фондовых рынках в прошлом и всем всегда рекомендую держаться от всего этого подальше. Но курс доллара достаточно важная метрика для меня — иногда я заказываю с алиэкпресса разные товары и курс доллара напрямую влияет на конечную стоимость для меня. Я добавил в своего бота механику отслеживания курсов валют, и теперь бот пишет мне актуальный курс. Важно — он не пишет нового сообщения, а обновляет одно-единственное сообщение в канале. Детально о механике этого бота я писал здесь. Ещё один интересный случай, который тоже связан с моей личной жизнью. Я купил себе парочку китайских GPS трекеров. Они работают как надо, но очень неудобно. Их официальное приложение — издевательство над пользователем. Эти трекеры бывают удобны в некоторых случаях — закинуть в машину, когда оставляешь ее в незнакомом месте на долгое время, положить в карман ребенку перед поездкой в какой-нибудь зоопарк и тд. Сами трекеры покупал за 800р (доллар был 55 тогда). В итоге, я, достаточно костыльно, подключился к личному кабинету и сделал так, что можно включить бота, который отправит мне сообщение с координатами и местоположение через саму телегу. Дальше, пока включен бот, он будет обновлять его каждые 5 минут. Мне не надо заходить в отдельное приложение, а я просто захожу в отдельный чат с ботом и вижу актуальное местоположение моего трекера. Также можно добавить в этот чат, временно, людей, с кем хотел бы делиться местоположением трекера — добавляю в чат с трекером людей, которые поехали со мной и моим ребенком в поездку, а ребенок ходит с трекером в кармане. Тут примерно та же самая механика, как в случае с Notion. Я пишу сообщение боту и автоматически создается строчка в гугл-таблице. В итоге, добавить что-то в таблицу стало сильно быстрее и, в некоторых случаях, это помогает в моей борьбе с ленью. Получается некая односторонняя связь от Telegram бота в Google таблицу – прикольно, хорошо и легко. Летом 2022 года я отдыхал в Сочи и поехал туда на машине. Дорога от Москвы до Сочи просто прекрасна и идёт на одном дыхании… кроме серпантина в конце. Я не ожидал, что это может меня настолько выбить из колеи. Основная проблема там в пробках — стоять в пробке на серпантине на механике очень больно. Особенно в жару! Пока я сидел в Сочи, я думал как мне оптимизировать дорогу домой. Мне в голову пришла мысль отслеживать состояние пробок на серпантине в разные дни и выбрать оптимальный момент. Для этого я написал бота, который заходит в Яндекс карты, скринит состояние и отправляет результат мне. Каждые 10 минут сообщение обновлялось с новым скрином, что было крайне удобно! Я поглядывал как обстоят дела и выбрал самое оптимальное время для старта (чтобы проехать быстро, но чтобы не выезжать ночью). В день выезда я этим ботом также воспользовался — я включил его сильно заранее и просто наблюдал, когда картина на дороге станет приемлемой и двинулся в путь в подходящий момент. Сейчас этим ботом пользуюсь иногда, т.к. езжу на машине в Москву редко. У меня есть своя компания-галера, где мы пишем разные проекты (в том числе ботов) на аутсорсе (сразу оговорю важный дисклеймер - идти к нам чего-то заказывать не надо, т.к. будем делать долго дорого и плохо, но сделаем). И в моем случае оказалось реальной проблемой в конце месяца собрать все работы, которые мы сделали и выставить клиенту. Какое-то время я полагался на свою голову, потом полагался на головы разрабов и что они вспомнят в конце месяца, что они делали. Но в один момент я понял, что рассчитывать на это бессмысленно, а осознание что “деньги проходят сквозь пальцы” не давало покоя. Тогда мы, для своего трекера задач, написали простого бота который каждые 2ч спрашивает разраба “что делал последние 2 часа” и в интерактивном режиме позволяет быстро трекнуть время в копилку. По итогам месяца бот собирает отчеты в гугл-таблицы по каждому разрабу и дальше уже мы формируем счета для наших клиентов. После внедрения мы заметили рост выручки и, по-началу, я был удивлен как мы много делаем для клиентов — счета стали внушаемы и сбор данных стал категорически простым. Я остался доволен! Это не все боты, которых мне доводилось писать. Это лишь боты, о которых я вспомнил, готовя этот материал. Я регулярно расширяю возможности своего личного бота-помощника (подключаю парсер команд, подключаю его к кондиционерам по голосу, подключаю к камерам в офисе для безопасности) и регулярно сталкиваюсь с новыми идеями, которые можно сделать в виде телеграм-бота. Буду рад, если вы поделитесь своими ботами в комментах и также буду рад подписке на мой тг-канал @gmoreva и YouTube канал @amorev. Благодарю за внимание!  CTO