Если вам нужен простенький Telegram bot, способный выполнять скрипты (написанные на любом языке) и отвечать текстом и картинками, то вам под кат. Там вы найдёте рассказ о бот-движке, который делает то, что вам надо.
Краткий список возможностей движка:
- Движок может обслуживать сразу несколько ботов
- Бот выполняет скрипты (написанные на любом языке)
- Сообщение попадает на вход скрипту в виде аргументов и переменных окружения
- Вывод скрипта может быть текстом, форматированным текстом или изображением (распознаётся автоматически)
- Движок гарантирует поочерёдный запуск скриптов (при написании скриптов можно не думать про локи и конкурентный доступ к ресурсам)
- Бота можно дёргать по HTTP, чтобы отправлять сообщен не в ответ на запрос, а «асинхронно» (например по cron-у)
Движок максимально неприхотлив: ему не нужны базы данных, публичные IP-шники, SSL-сертификаты… Можно просто запустить на лаптопе, сидя за НАТом с наглухо закрытыми портами. В общем, начать экспериментировать вы можете прямо не сейчас, не отрываясь от чтения.
Сейчас я покажу, как это всё запустить и оживить.
Сборка
Вам понадобится язык Go. Чтобы его поставить, не нужны даже root-права. Но, для простоты, далее, я буду предполагать, что он у вас стоит в системе.
Скачиваем и собираем проект:
cd tmp git clone https://github.com/michurin/cnbot.git cd cnbot go build ./cmd/. ./cnbot
При запуске без параметров (последняя команда) вы получите ошибку, что не указан конфигурационный файл. Это значит, что всё собралось правильно.
Начинаем разговор
Первым делом, вам надо зарегистрировать бота и получить для него токен. Это совсем не сложно: инструкция на сайте Telegram.
Создаём минимальный кофигурационный файл ( config.yaml ):
bots: firstBot: token: «22222222:AAAAAAAAAAAAAA» script: «/usr/bin/true»
Тут должен быть правильный токен и любой исполняемый файл в качестве скрипта (рекомендую выбить что-нибудь побезопасней, чем /bin/rm ). Проверяем настройки ( -i ):
./cnbot -i -c config.yaml
Если токен правильный, вы получите отчёт о состоянии бота.
Запускаем бота (без -i )
./cnbot -c config.yaml
Пытаемся добавить его в Telegram-клиенте. В логах бота видим ошибку
user 500050880 is not allowed
Это ваш user_id (у вас он будет другой), добавляем его в конфиг
bots: firstBot: token: «22222222:AAAAAAAAAAAAAA» script: «/bin/echo» allowed_users: [500050880]
Обратите внимание, я прописал echo в параметр script . Это быстрый (хоть и кривоватый) способ сделать echo-бота. Вы уже можете поговорить с ним. Попробуйте сказать hi , Hi! , -n hi .
Из подобного разговора сразу видно как легко получить уязвимость ( -n было интерпретировано как параметр echo ). Так же видно как формируются аргументы скрипта: сообщение приводится к нижнему регистру; допустимыми символами считаются буквы, цифры, минус, точка и подчёркивание; все недопустимые символы считаются разделителями.
Полное сообщение тоже доступно. Давайте заменим /bin/echo на простой скрипт и посмотрим переменные окружения:
#!/bin/sh env
Если сказать этому боту Hello! Он покажет переменные окружения
BOT_TEXT=Hello! BOT_FROM_FIRSTNAME=Alexey BOT_NAME=firstBot BOT_CHAT=500050880 BOT_FROM=500050880
Видно, что доступно оригинальное сообщение, имя и ID пользователя, который отправил сообщение, название бота (согласно конфигу; напомню, что движок может обслуживать сразу несколько ботов).
Если бот получает контакт или пересылку сообщения, то к переменным окружения добавляется информация о контакте или авторе оригинального сообщения. Это удобно, когда вы хотите добавить в white list нового пользователя. Чтобы узнать его ID — просто перешлите его контакт или любое его сообщение боту. См. пример в demo.sh.
Обратите внимание, что переменной PATH не видно. Если вам нужны экзотические пути, пропишите их явно в начале скрипта или используйте полные пути.
Скрипт можно чуть усовершенствовать
#!/bin/sh echo ‘%!PRE’ env | sort
Теперь вывод будет преформатированный. Можно использовать и markdown, см. всё тот же demo.sh.
Чтобы ответить картинкой, её достаточно просто вывалить на stdout :
#!/bin/sh curl -qfs https://golang.org/lib/godoc/images/footer-gopher.jpg
Если скрипт не выдаст ничего, то бот отправит сообщение «empty», чтобы бот действительно ничего не ответил, скрипт должен ответить одним единственным символом «точка».
Все примеры можно найти в demo-скрипте, а я бы чуть подробнее остановился бы на асинхронной нотификации.
Бот говорит сам
В боте можно включить HTTP сервер добавлением одной строки bind_address в конфиг:
bots: firstBot: token: «22222222:AAAAAAAAAAAAAA» script: «/bin/echo» allowed_users: [500050880] bind_address: «:9091»
Теперь вы можете отправить асинхронное сообщение:
То есть, пользователь получит его не в ответ на своё сообщение, а просто как нотификацию. Тело сообщения обрабатывается по тем же правилам, что и output скрипта. То есть, вы можете отправлять форматированный текст и картинки.
Можно использовать и multipart/form-data :
curl -qfsX POST -F to=500050880 -F msg=ok «http://:9091»
Думаю, нет смысла обсасывать каждую деталь работы бота. У вас уже есть достаточно информации, чтобы понять, нужно оно вам или нет. Полный спектр возможностей можно посмотреть, поговорив с demo-сриптом. В конфиге можно указать таймауты для http-клиента и выполнения скрипта. Все опции есть в readme проекта, хотя, думаю, большинству будет комфортно жить и с дефолтами.
Любые вопросы, пожелания, предложения — приветствуются.
Если вы всё ещё читаете.
. то могу рассказать, как я дошел до жизни такой.
Как сделать гиф в Телеграмме: пошаговая инструкция по созданию GIF-анимации в Telegram на телефоне Андроид и Айфоне
Приветствуем. Хотите сделать сделать гифку в Телеграмме? Предлагаем прочитать нашу простую пошаговую инструкцию, которая покажет, как сделать из видео гифку в Телеграмме.
Наша статья подойдёт пользователям телефонов Андроид, или Айфонов и Айпадов. В ПК версии мессенджера Telegram Desktop и онлайн версии для браузера Telegram Web, из видео сделать гиф не получится, – отсутствует нужный функционал.
Что понадобиться, чтобы делать гифки в Телеграмме?
GIF – это анимированная картинка, которая делается из кадров видео. Чтобы создать гиф в Телеграмме нужно всего два компонента:
- Установленное приложение Telegram на телефоне Android или на iPhone.
- Видео, из которого будем делать ГИФ. Короткое видео для гифки можно снять самостоятельно или же можно где-то скачать нужный видеоролик.
Чтобы сделать гиф, необходимо, чтобы видео находилось в «Галерее» телефона.
Пошаговая инструкция, как создать гифку в Телеграмме
Как сделать ГИФ в Телеграм на Андроид
Как мы говорили ранее, чтобы делать гифки в Телеграмме на Андроиде, у вас должно быть сохранённое видео в «Галерее».
- Откройте приложение Телеграмма и перейдите в «Избранное». Мы будем использовать папку «Избранное», поскольку в ней будет удобно хранить созданную гифку. Вы можете выбрать любой чат Телеграмма, в котором хотите опубликовать GIF.
- Нажмите на значок скрепки в «Избранном», который расположен в правом нижнем углу чата.
- Откройте «Галерею» и найдите видео для гифки.
- Нажмите на видео, чтобы открылся его просмотр.
- Вот на какие элементы нужно обратить внимание при создании GIF. Настройте продолжительность будущей гифки с помощью временной шкалы и отключите звук.
- После настройки длины гифки и отключения звука, остаётся только нажать кнопку отправки gif. Сразу после этого, анимированный ГИФ появится в чате «Избранное».
Как сделать гифку в Телеграм на Айфоне
- Откройте Телеграмм на iPhone, перейдите в «Настройки» и найдите папку «Избранное». Эта папка понадобиться, чтобы сохранить гиф. Конечно, сделать гифку можно и в любом другом чате.
- В «Избранном» найдите в левом нижнем углу значок скрепки и нажмите на него.
- Откройте «Галерею» Айфона, найдите видео, из которого будете делать GIF, и откройте его нажатием.
- Появится меню редактирования видео, в котором в первую очередь нужно отключить звук, нажав на соответствующую кнопку.
- Далее нужно настроить продолжительность gif-анимации. Для этого используйте ползунки по бокам временной шкалы.
- После редактирования видео, отправьте в чат «Избранное», нажав на кнопку отправки.
Приложения для создания GIF
Чтобы иметь более широкий функционал при создании гиф-анимации, рекомендуем обратиться к профессиональному программному обеспечению, которое нацелено именно на решение этой задачи. Такие приложения помогут сделать гиф проще и гораздо быстрее.
Приложение #1: GIPHY – GIF iOS
Анимированное сердце Telegram и другие функции — RBot
Копирование материалов сайта разрешено только при размещении обратной ссылки
Privacy https://smartronix.ru/kak-sdelat-gif-v-telegram» target=»_blank»]smartronix.ru[/mask_link]
Telegram-бот на Pyrogram (Python): Анимация message, режим эха, команда About
Сегодня разберем как можно сделать бота, который будет работать от клиента, то есть от нас. Для чего это может пригодиться? Мы сможем дополнять наши сообщения анимациями по команде, отвечать на какой-то текст от имени пользователей или даже создавать эффект эха (отправлять в ответ то же сообщение). Этот инструмент позволит нам использовать весь функционал Telegram.
Что нам потребуется:
- Компьютер или ноутбук
- Редактор кода (У меня PyCharm)
- Python версии 3.9 и выше
- Соединение с интернетом
Установка
Установка для windows:
pip install pyrogram tgcrypto
pip3 install pyrogram tgcrypto
Получаем ключи для аккаунта
Переходим по ссылке на сайт телеграмм https://my.telegram.org/auth и вводим свой телефон:
Нам приходит код, который нужно вставить и нажать зарегистрироваться:
Дальше выбираем API development tools и нажимаем продолжить:
После регистрации мы попадаем в окно с API_HASH и API_ID, которые нам надо скопировать для работы бота: