Telegram-ботами уже никого не удивить. Недавно Telegram отметил 10-летие, и я решил сделать текстовую версию своего ролика. Идея простая — иногда возникают сложности с тем, чтобы придумать о чем писать Telegram бота, и я решил поделиться подборкой ботов, которых разработал и использую в своей жизни я.
Причем это будут не прям боты, а скорее способы использования telegram-bot-api для решения разных задач.
Отправка уведомлений
Первый самый простой пример использования Telegram - это отправка уведомлений. Можно отправлять уведомления, когда сайт упал, а также получать уведомления о новых заявках. Например, если у нас есть сайт компании, то когда приходит новая заявка, можно получать уведомление через Telegram. Это очень-очень базовый способ использования Telegram.
Выкачивание файла с сервера
Не знаю как у вас, но у меня регулярно возникает необходимость выкачать чего-нибудь с сервера, на который я зашел через SSH. Например, я сгенерил какой-нибудь отчет скриптом и хочу себе закачать.
Подключаться через sftp и идти снова в эту папку достаточно лень да и все равно потом этот файл будет отправляться, скорее всего, кому-то в телеграм. Я написал небольшой bash-скрипт, который позволяет мне запустить команду и указать путь до файла. В итоге этот файл прилетает мне в личку, и дальше я уже делаю с ним чего хочу. Когда писал этот скрипт я и не думал, что буду пользоваться им так часто. В итоге этот файл лежит почти на каждом сервере, которым я пользуюсь.
Важно: учитывая, что этот скрипт прямо в себе хранит bot-token, то рекомендуется создать для этой цели отдельного бота, чтобы не переживать о том, что кто-то другой может слить этот токен.
Автоматические бекапы на сервере
Ещё один пример, который связан с предыдущим — отправка автоматических бэкапов. Я понимаю, что не всегда хорошо использовать телеграм в формате файлового хранилища, но у нас был проект, где клиент не готов был платить за поддержку бэкапов и говорил что-то вроде “ну мне бэкапы не нужны, проект не критичный”. Но мы ребята ученые и все равно его бэкапили.
Механика резервного копирования простая — есть bash-скрипт который создает tar.gz из нужной папки, разбивает архив по 40мб и просто скидывает их в чат.
Сам скрипт закинут в крон на 5 утра на каждый день. Система работает уже несколько лет и пару раз конкретно спасла клиенту жопу ситуацию. Конечно, это не так удобно, как нормальная система бэкапов — файлы надо собирать в один, переносить на сервер. Но оно того действительно стоит!
Создание MR через бота
У меня в галере есть куча разных проектов и под каждый проект у нас свой telegram чат. Некоторые проекты сделаны на микросервисной архитектуре. Работаем по флоу фича ветки, которая вливается в stage
(с автодеплоем на тестовый стенд) и последующим вливанием в release
.
После разработки какой-то большой фичи на 5 сервисов, возникает необходимость сделать сразу несколько MR (Merge Request) со стейджа на релиз. И это, обычно, делаю я. Мне это надоело достаточно быстро, и мы сделали небольшого бота, который по чату понимает о каком проекте идет речь и создает эти MR-ки сам. Мелочь, а приятно.
С этой автоматизации у меня зародилась мысль, что можно многие рутинные операции переложить на бота-помощника и с тех пор началась разработка этого бота фоном и он расширяется в разных направлениях.
Интеграция с системой задач в Notion
Про этого бота я делал отдельный ролик. Но кратко опишу его в текущей подборке. Суть такая: я веду свои задачи в Notion и создавать задачи через их интерфейс — дело неудобное.
Сам по себе Notion прекрасен, но загружается очень долго, потом пока дойдешь до нужной страницы и тд — проще забить и не записывать задачу. Плюс еще я бы хотел, чтобы мне могли ставить задачи другие люди, при этом не видя остальные задачи.
Немного кода и теперь ограниченный круг лиц может писать моему боту с задачей для меня, а дальше уже я сам займусь ее реализацией.
Если бы у Notion была бы нормальная система вебхуков, то я бы сделал и оповещение пользователя о выполненной задачи. Но, пока что, сойдет и так.
Таким образом, получается, что люди не имеют доступ к моему Notion, но при этом могут в Notion сваливать задачи, которые мне потом нужно будет разобрать. Разумеется, никто этим не злоупотребляет, и пользуются только в том случае, когда они могут напрямую добиться того, чтобы я что-то сделал или когда у них уже делается что-то несрочное.
Отслеживание статуса серверов Fortnite
Раз я делюсь подборкой ботов, то грех не поделиться этим. Он не связан с работой и продуктивностью. Я играю в Fortnite и, обычно, играю прямо в рабочее время — потратил 30-40 минут и обратно впрыгиваешь в работу. Но проблема в том, что Fortnite любит уходить на обслуживание ночью по американскому времени, что приводит к тому, что у нас он не работает в 12-13 часов.
Очень неприятно об этом узнавать, собрав ребят поиграть. Поэтому я написал бота, который регулярно заходит на status.epicgames.com и пишет мне об изменениях статуса сервера.
В итоге я всегда знаю о том, что сервер прилег на обслуживание и можно работать спокойно, не планируя прекрасный перерыв.
Сохранение изображений в Яндекс.Диск
Однажды у меня появился ребенок, а потом и еще один! И быть отцом = получать много разных фотографий своих детей от разных людей и, обычно, через Telegram. Я бы очень хотел сохранять эти фотографии в облако (я пользуюсь яндекс диском), но руками переносить это слишком сложно для такого лентяя, как я.
В итоге, решение оказалось очень простым — я сделал бота, которому пересылаю фотки от других людей, а бот перекладывает эти фотографии по папкам в каждый месяц. У меня была мысль еще добавить распознавание лиц, чтобы помечать кто есть на фотке, но я пока ее отложил в долгий ящик. Мне достаточно того, что фотки сохраняются в удобное для меня место после минимальных действий с моей стороны.
Личный секретарь
Мой бот @amorevbot, по-умолчанию, выступает в роли моего секретаря. Любой человек может ему написать и, в отдельном чате, создастся тред, в котором я уже буду общаться со своей стороны, а мои сообщения будут отправляться уже, от имени бота, этому человеку.
Этот бот нужен для тех, кто хочет связаться со мной после моего контента на моем youtube или telegram канале. В итоге получается единая точка входа для общения со мной, но при этом не отправляя мне сообщения напрямую. Также, я отделяю личное общение знакомых мне людей от, однозначно, незнакомых.
В сети куча готовых решений для этих задач, но мне они все не понравились тем, что нельзя научить бота создавать изолированные треды для общения с людьми. В итоге, это всё превращается в свалку сообщений, среди которых мне нужно отыскать именно то, что относится к определенному человеку.
Отслеживание курсов валют
Следующий способ использовать Telegram-бота – это отслеживание курсов валют. Я совсем не инвестор и, более того, имею огромный опыт в торговле на фондовых рынках в прошлом и всем всегда рекомендую держаться от всего этого подальше.
Но курс доллара достаточно важная метрика для меня — иногда я заказываю с алиэкпресса разные товары и курс доллара напрямую влияет на конечную стоимость для меня. Я добавил в своего бота механику отслеживания курсов валют, и теперь бот пишет мне актуальный курс.
Важно — он не пишет нового сообщения, а обновляет одно-единственное сообщение в канале. Детально о механике этого бота я писал здесь.
Подключение к GPS трекеру
Ещё один интересный случай, который тоже связан с моей личной жизнью. Я купил себе парочку китайских GPS трекеров. Они работают как надо, но очень неудобно. Их официальное приложение — издевательство над пользователем.
Эти трекеры бывают удобны в некоторых случаях — закинуть в машину, когда оставляешь ее в незнакомом месте на долгое время, положить в карман ребенку перед поездкой в какой-нибудь зоопарк и тд. Сами трекеры покупал за 800р (доллар был 55 тогда).
В итоге, я, достаточно костыльно, подключился к личному кабинету и сделал так, что можно включить бота, который отправит мне сообщение с координатами и местоположение через саму телегу. Дальше, пока включен бот, он будет обновлять его каждые 5 минут.
Мне не надо заходить в отдельное приложение, а я просто захожу в отдельный чат с ботом и вижу актуальное местоположение моего трекера. Также можно добавить в этот чат, временно, людей, с кем хотел бы делиться местоположением трекера — добавляю в чат с трекером людей, которые поехали со мной и моим ребенком в поездку, а ребенок ходит с трекером в кармане.
Отправка данных в Google-таблицу
Тут примерно та же самая механика, как в случае с Notion. Я пишу сообщение боту и автоматически создается строчка в гугл-таблице. В итоге, добавить что-то в таблицу стало сильно быстрее и, в некоторых случаях, это помогает в моей борьбе с ленью.
Получается некая односторонняя связь от Telegram бота в Google таблицу – прикольно, хорошо и легко.
Бот для отслеживания пробок
Летом 2022 года я отдыхал в Сочи и поехал туда на машине. Дорога от Москвы до Сочи просто прекрасна и идёт на одном дыхании… кроме серпантина в конце. Я не ожидал, что это может меня настолько выбить из колеи. Основная проблема там в пробках — стоять в пробке на серпантине на механике очень больно. Особенно в жару!
Пока я сидел в Сочи, я думал как мне оптимизировать дорогу домой. Мне в голову пришла мысль отслеживать состояние пробок на серпантине в разные дни и выбрать оптимальный момент. Для этого я написал бота, который заходит в Яндекс карты, скринит состояние и отправляет результат мне.
Каждые 10 минут сообщение обновлялось с новым скрином, что было крайне удобно! Я поглядывал как обстоят дела и выбрал самое оптимальное время для старта (чтобы проехать быстро, но чтобы не выезжать ночью).
В день выезда я этим ботом также воспользовался — я включил его сильно заранее и просто наблюдал, когда картина на дороге станет приемлемой и двинулся в путь в подходящий момент.
Сейчас этим ботом пользуюсь иногда, т.к. езжу на машине в Москву редко.
Бот-трекер для галеры
У меня есть своя компания-галера, где мы пишем разные проекты (в том числе ботов) на аутсорсе. И в моем случае оказалось реальной проблемой в конце месяца собрать все работы, которые мы сделали и выставить клиенту.
Какое-то время я полагался на свою голову, потом полагался на головы разрабов и что они вспомнят в конце месяца, что они делали. Но в один момент я понял, что рассчитывать на это бессмысленно, а осознание что “деньги проходят сквозь пальцы” не давало покоя.
Тогда мы, для своего трекера задач, написали простого бота который каждые 2ч спрашивает разраба “что делал последние 2 часа” и в интерактивном режиме позволяет быстро трекнуть время в копилку. По итогам месяца бот собирает отчеты в гугл-таблицы по каждому разрабу и дальше уже мы формируем счета для наших клиентов.
После внедрения мы заметили рост выручки и, по-началу, я был удивлен как мы много делаем для клиентов — счета стали внушаемы и сбор данных стал категорически простым. Я остался доволен!
Заключение
Это не все боты, которых мне доводилось писать. Это лишь боты, о которых я вспомнил, готовя этот материал. Я регулярно расширяю возможности своего личного бота-помощника (подключаю парсер команд, подключаю его к кондиционерам по голосу, подключаю к камерам в офисе для безопасности) и регулярно сталкиваюсь с новыми идеями, которые можно сделать в виде телеграм-бота.
Буду рад, если вы поделитесь своими ботами в комментах и также буду рад подписке на мой тг-канал @gmoreva и YouTube канал @amorev.
Благодарю за внимание!
Комментарии (63)
anagromy13
28.08.2023 15:59Ещё интересная идея – сделать бота-мультимессенджер, который будет собирать сообщения из ВКонтакте, WhatsApp, Jabber, Telegram и всего чего только пожелаешь. Отвечать на них можно будет в тех же тредах.
amorev Автор
28.08.2023 15:59Ой не. Перебор для меня) радует что в остальные источники кроме телеги мне пишут очень мало
green_fenix
28.08.2023 15:59+3По первому пункту - если без пересылки в телеграм, для скачивания файлов с сервера есть такая замечательная штука как scp )
amorev Автор
28.08.2023 15:59Ну вот мне неудобно показалось запоминать путь, потом в отдельной вкладке вставлять его в команду scp.
Или есть другой способ?
green_fenix
28.08.2023 15:59Нет, но в вашем способе тоже нужно вводить путь, разве нет?
amorev Автор
28.08.2023 15:59ну в моем способе я уже нахожусь в папке через ssh и уже прям в этой папке через TAB файл автокомпличу
venanen
28.08.2023 15:59Я себе сделал бота, который собирает мемы из групп в ВК, которые я смотрел, и постит мне в ТГ (т.к. из вк ушел). Тоже удобная штука, все в одном месте и в больших количествах.
Если интересно, то вот - https://t.me/nueraul, но юмор у меня специфический :)amorev Автор
28.08.2023 15:59То есть что угодно, что посмотрели, сразу идет в телегу или только лайкнутое?
venanen
28.08.2023 15:59+1Нет, просто я выбрал группы в ВК, которые смотрел. Дальше просто утром бот проходится по всем группам из списка, сохраняет мемы, дальше считает отношение лайков к просмотрам, выкидывает 20% худших, остальное постит в телеграмм
bpGusar
28.08.2023 15:59+1я такое делал себе когда из вк ливнул. думал в тг нету норм мемов. оказалось это в вк нет норм мемов )
AirLight
28.08.2023 15:59+1Здравствуйте, а как вы решаете проблему, что ботов можно создать на один профиль всего до 10 штук?
censor2005
28.08.2023 15:59Разве не 20?
AirLight
28.08.2023 15:59Может увеличили, но все-равно очень мало, если пробовать постоянно экспериментировать.
amorev Автор
28.08.2023 15:59Создаю с отдельных аккаунтов, если упираюсь в лимит. Но, обычно, удается потом от каких-то токенов отказаться и разные механики оставлять в рамках одного токена
TZPrototype
28.08.2023 15:59Почему бы не использовать некого "прокси" бота для личных ботов дабы не так быстро расходовать лимит на них и не засорять список чатов? Да, нужно будет обдумать как сделать более удобную навигацию и переключение контекста в некоторых случаях, но у bot API полно методов позволяющих сделать это без вреда для опыта использования.
amorev Автор
28.08.2023 15:59пока с проблемой "много ботов" не столкнулся. У меня половина из функций, описанных здесь, как раз делаются одним бот
Veter44k
28.08.2023 15:59Ради эксперемента написал бота который рассказывает каждый час анекдоты и выдает умную цитату из книги)
theurus
28.08.2023 15:59https://t.me/chats_translator_bot - переводчик для чатов, говоришь боту с кем говорить будешь, и он пересылает все сообщения с переводом на язык получателя и обратно
mihmig
28.08.2023 15:59Я тоже погоду/пробки "мониторил" через бота (так было быстрее, чем открывать на телефоне страничку яндекса).
Только я заморочился - специально вырезал рекламу и ненужные элементы странички:amorev Автор
28.08.2023 15:59ого! я забил на рекламу
QDeathNick
28.08.2023 15:59А можно чуть подробнее как именно вы скриншот формировали?
amorev Автор
28.08.2023 15:59+1const browser = await puppeteer.launch(launchOptions) const page = await browser.newPage() // set viewport and user agent (just in case for nice viewing) await page.setViewport({ width: 1400, height: 700 }) await page.setUserAgent('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36') // go to the target web let url = 'ссылка с уже настроенным маршрутом в яндекс картах' await page.goto(url) const path = './route.jpg' await page.screenshot({ path }) if (!messageId) { const message = await bot.telegram.sendPhoto(userId, { source: res.path }, { caption: res.timeStr }) messageId = message.message_id return message } else { // const message1 = await bot.telegram.editMessageCaption(userId, messageId, null, res.timeStr) const message2 = await bot.telegram.editMessageMedia(userId, messageId, null, { type: 'photo', media: { source: res.path }, caption: res.timeStr + '\n\n' + (new Date().toISOString()) }) console.log('edited', message2) }
Вот так
QDeathNick
28.08.2023 15:59Puppeteer под NodeJS. Заюзаю, как раз в одной задачке надо рендерить картинку, думаю так будет проще всего.
Спасибо большое, подписан везде, удачи.
hiimluck3r
28.08.2023 15:59+4Телеграм-боты прекрасны тем, что позволяют забыть(и)ть про базовый фронт и углубиться в то, что ты хочешь. Очень много времени экономишь и получаешь вполне себе приемлемый результат
А ещё кроссплатформенность! Вообще тема!
anagromy13
28.08.2023 15:59+2О да. Я думал, что один из немногих, кто любит писать функционал, но ненавидит фронт =)
spaceatmoon
28.08.2023 15:59Фронт просто не имеет типовых решений которые можно накидать на коленке. Даже готовые либы фронтовые это монстры. Нет этой декларативности, одна императивщина.
Annndruha
28.08.2023 15:59Дополню список своим ботом: Позволяет создавать issue в репозиториях GitHub-организации и назначать исполнителя: https://github.com/annndruha/issue-github-telegram-bot
Очень удобно, когда вы заметили проблему с чем-то и вам лень открывать гитхаб для создания issue.
ZeroMatrix
28.08.2023 15:59Заинтересовал amorevbot (личный секретарь). Каким образом создаются изолированные треды? Каждый тред = диалог с отдельным ботом?
theurus
28.08.2023 15:59Надо создать группу в которой будешь только ты и бот, разрешить в этой группе темы. Боту дать права на управления темами. Он будет создавать новую тему (подгруппа, комната) для каждого кто напишет.
У меня в боте так логи сделаны Ж)
amorev Автор
28.08.2023 15:59Я сейчас в расширении функционала, чтобы он темы создавал. Как раз 5 минут назад гуглил ест ли лимит на темы. Если лимита нет, то было бы очень удобно
vtal007
28.08.2023 15:59+1По заголовку ожидал, чтоб будет код ботов, а не просто "идеи"
pankor
28.08.2023 15:59+1У меня есть своя компания-галера, где мы пишем разные проекты (в том числе ботов) на аутсорсе.
=)
amorev Автор
28.08.2023 15:59По некоторым ботам я поделился кодом на гитхабе) По тем, которыми не делился, мне уже написали многие в комментах в телеге и в личку. По тем, которые интересны аудитории, буду описывать в ближайшее время
vb64
28.08.2023 15:59Если про "отправку уведомлений", то большинство сервисов и crm имеет встроенный функционал отправки оповещений на почту. Их можно перекидывать в телегу вот этим ботом:
https://vb64.github.io/telegram.email.notify/docs/ru/guide.html
Homyakin
28.08.2023 15:59+1Я написал себе довольно специфичного телеграм-бота - справочник биологических добавок. Кидаешь в бота список добавок, а он говорит, описание, какие побочки, что безопасно.
Застрял в итоге на сборе данных, потому что хотелось краткую выжимку по каждому элементу а не целиком страницы из инета. Наверное теперь это можно автоматизировать через chatgpt какой-нибудь, но руки не доходят, да и имеющейся базы хватает в целом.
amorev Автор
28.08.2023 15:59О круто! Я думал себе бота написать, который будет считать КБЖу по фото еды. Голосом наговариваю что я сьел, chatGPT считает кбжу, Yargy parser выдергивает значения и сохраняет:)
Но чет пока дальше "думал написать" не ушел
PanDubls
28.08.2023 15:59Я написал бота для разметки текстовых датасетов. Заливаю туда неразмеченные данные (список из текстов) и указываю варианты таргета, запускаю, он мне присылает сообщение с текстом и кнопки для каждого из вариантов, на которые размечаю датасет. Не то чтобы сильно много автоматизации, но зато можно размечать датасет лёжа на кровати или прогуливаясь, ч с что с табличкой в экселе уже существенно менее удобно. Да и банально движений пальцем больше становится, что при такой монотонной работе с множеством повторений ускоряет процесс.
amorev Автор
28.08.2023 15:59Я немного не в теме. Что значит "разметить датасет"? Спасибо что поделились идеей бота
Didimus
28.08.2023 15:59Для сохранения фото достаточно поставить в телеграмме галочку сохранять фото в галерею, а Яндекс диску разрешить забирать фото из галереи. Две галочки и никаких ботов. Все отсортировано по датам, людям.
amorev Автор
28.08.2023 15:59Не думал о таком способе) Но вопрос — можно ли настроить чтобы определенный чат только сохранялся в телефон в галерею отдельную? Я нашел только так, чтобы прям все закачивалось, а мне такое не надо)
viper1104
28.08.2023 15:59+1Я для семьи завел бота который работает через home assistant. Когда дома никого нет, бот шлёт замеченное движение с камер. В обычной ситуации получаю уведомления о превышении уровня CO2, температуры и другие. Боту можно писать сообщения, они пересылаются Алисе, можно управлять устройствами, но есть некоторые команды, которые обрабатываются отдельно. Например могу кинуть магнет ссылку на торрент фильма, и бот поставит его на загрузку через transmission. После скачивания оповестит, можно смотреть через plex.
amorev Автор
28.08.2023 15:59У меня в разработке подобный бот с камерами для офиса и дома.
А как понимаете, что дома никого нет? по wifi? или руками в режим охраны переводите?И еще вопрос как регаете движение? onvif или motion и подобное?
Chupakabra303
Я написал себе домашнего бота для скачивания видео с ютуба в папку на nas. Откуда старенький tv (ютуба на нем нет вменяемого) по dlna проигрывает. Оказалось довольно удобно, со смартфона или планшета ссылку просто боту кидаешь и он выкачивает и сообщает о действиях.
amorev Автор
А долго выкачивает? Вообще крутое решение проблемы отсутствия ютуба на тв)
achekalin
Вообще, приложение YT на конкретном ТВ достаточно отвратно работает во многих случаях. Если ролик для просмотра больше десятка минут, очень хочется иметь мух отдельно - котлеты отдельно, т.е. - иметь ролик отдельно от приложения, от YT, от их идиотских рекомендаций, от рекламы...
Так что бот для роликов кажется отличной идеей.
amorev Автор
я уже забыл что такое реклама в YT, поскольку в РФ ее отключили. Но смотрю его, правда, на телефоне, а не телеке
Chupakabra303
В среднем меньше минуты. Глянул, 750Мб ролик около 1 минуты. (yt_dlp.YoutubeDL({'format': 'best', 'paths':...) Написано на Python, используется модуль yt_dlp, обмен с telegram bot api на requests без сложностей. Скрипт как демон просто запущен.
amorev Автор
Правда быстро! Очень интересный способ. Спасибо, что поделились!
Didimus
Крутое решение это подключить тв как монитор.