Напишем простой Telegram-бот на Python с использованием aiogram, Docker и AWS, предварительно ознакомившись с нужными инструментами.
Напишем простой диалоговый Telegram-бот на Python, который в дальнейшем можно дополнить различными функциями, и задеплоим его.
Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.
Настройка
- свой токен;
- адрес Telegram API (https://api.telegram.org/bot);
- ссылку на документацию.
Обязательно сохраните токен, так как это ключ для взаимодействия с ботом.
Примечание Хранение токена должно быть локальным: ни в коем случае не выгружайте его в общий доступ, например в GitHub-репозиторий .
Далее начните беседу. Введите в поисковой строке имя бота и нажмите /start . Отправьте любое сообщение: оно станет первым обновлением, которое получит Телеграм бот.
Установка Python
Для написания Telegram-бота на Python, нужно установить сам язык. Если вы пользуетесь Windows, скачать Python можно с официального сайта. Версия важна. Нам подойдет Python не ниже версии 3.7. Если же у вас Linux или macOS, то, скорее всего, у вас стоит Python 3.6. Как обновиться, можете почитать здесь.
Викторина в телеграм боте | Как провести тест в телеграм боте
Тем, кто только начал изучение этого языка, будет также полезна дорожная карта Python-разработчика.
Установка pip
Это менеджер пакетов. В версиях выше Python 2.7.9 и Python 3.4, а также на macOS/Linux он уже есть. Проверить это можно командой pip —version в терминале. Если же по каким-то причинам он отсутствует, установить его можно при помощи команды:
$ sudo apt-get install python-pip
Установка aiogram
Установить данный фреймворк для Telegram Bot API с помощью pip:
pip install aiogram
Hello, bot!
Давайте напишем простенькую программу приветствия. Для начала следует импортировать библиотеки и создать экземпляры Телеграм бота и диспетчера:
from aiogram import Bot, types from aiogram.dispatcher import Dispatcher from aiogram.utils import executor TOKEN = «ваш токен от бота здесь» bot = Bot(token=TOKEN) dp = Dispatcher(bot)
Теперь напишем обработчик текстовых сообщений, который будет обрабатывать входящие команды /start и /help :
Добавим ещё один обработчик для получения текстовых сообщений. Если бот получит «Привет», он также поздоровается. Все остальные сообщения будут определены, как нераспознанные:
Запускаем Telegram бота, написанного на Python, следующим образом:
if __name__ == ‘__main__’: executor.start_polling(dp)
Примечание Так мы задаём боту непрерывное отслеживание новых сообщений. Если бот упадёт, а сообщения продолжат поступать, они будут накапливаться в течение 24 часов на серверах Telegram, и в случае восстановления бота прилетят ему все сразу.
Ну вот и всё, простенький бот в Телеграмме на языке Python готов.
Docker
Сейчас мало кто не слышал про Docker, но если вдруг не слышали — вот хорошая статья. Для нашего проекта потребуется самый простой Dockerfile:
FROM python:3.8 # set work directory WORKDIR /usr/src/app/ # copy project COPY . /usr/src/app/ # install dependencies RUN pip install —user aiogram # run app CMD [«python», «bot.py»]
Каталог проекта должны при этом содержать следующие файлы:
Для локальных тестов достаточно установить Docker (linux, mac, windows), после чего в папке проекта собрать и запустить контейнер с помощью команд:
docker build -t my_app docker run -d my_app
my_app — это просто название нашего контейнера, вместо которого можно использовать другое имя.
-d — специальный флаг, который запускает контейнер в фоне и позволяет дальше работать в терминале. Это называется detached mode.
Деплой на AWS
Прежде всего нам понадобится аккаунт на Docker Hub. Это аналог GitHub, только не с исходниками кода, а с уже созданными контейнерами. Работа с Docker Hub выглядит достаточно просто:
- Локально или с помощью пайплайнов собрали контейнер.
- Загрузили его на докер хаб.
- В любом удобном месте скачали его. Это может быть локальная машина, VPS сервер или облачный провайдер по типу AWS.
- Запустили.
Пройдёмся по этим шагам. Везде, где указано , надо вставлять свой юзернейм, использованный при регистрации на докерхабе. Если это ваша первая публикация на докерхаб, для начала потребуется залогиниться с помощью docker login.
docker build -t /my_app
Загружаем его на докерхаб:
docker push /my_app
Для проверки успешности загрузки можете запустить контейнер из Docker Hub с помощью команды:
docker run -d /my_app
Далее загрузим наш контейнер в AWS Elastic Beanstalk. Для этого потребуется аккаунт на AWS. Если его нет, необходимо зарегистрироваться. Вас попросят ввести данные карты для верификации, но переживать не стоит, ведь мы воспользуемся бесплатным годовым триалом. Чтобы поиграться, этого более чем достаточно, а вот если вы захотите вывести проект в продакшен, следует перейти на VPS — это даст больше контроля и гибкости.
- Переходим в Elastic Beanstalk, на вкладку Applications, и создаём новое приложение:
- Называем приложение, теги оставляем пустыми:
- Создаём для приложения environment:
- Выбираем Worker environment:
- В качестве платформы выбираем Docker:
- В пункте Application code нужно загрузить JSON-файл с конфигурацией Docker-образа. Сам файл:
Dockerrun.aws.json < «AWSEBDockerrunVersion»: «1», «Image»: < «Name»: «/my_app», «Update»: «true» >, «Ports»: [ < «ContainerPort»: 5000, «HostPort»: 8000 >] >
- Создаём окружение:
- AWS начинает создавать окружение, просто ждём завершения процесса:
- Если всё прошло успешно, вы увидите индикатор успешного запуска приложения:
Проверяем работу нашего Telegram bot:
Заключение
Поздравляем! Теперь вы знаете, как писать роботов для Telegram на Python.
Бота можно дополнять другими функциями, например, добавить отправку файлов, опрос или клавиатуру.
Кстати, в телеграмме есть аж целых два типа клавиатур:
- Классическая RelpyKeyboardMarkup, у которой кнопки располагаются под полем ввода сообщения:
- Более современная InlineKeyboardMarkup, которая привязывается к конкретному сообщению:
Но и это полностью рабочий Телеграм-бот на Python: дополните словарём, и получите полноценную беседу. Также можете опробовать функциональность нашего Telegram-бота.
В «настоящих проектах» не обойтись без базы данных. Тут на помощь приходит docker-compose, который позволяет объединить несколько контейнеров в один сервис. Таким образом, например, можно создать приложение и положить его в контейнер, а базу данных, как отдельный сервис, поместить в другой контейнер, и с помощью docker-compose наладить между ними связь.
Также для более серьёзной разработки лучше использовать выделенный виртуальный сервер (VPS): он даёт гораздо больше гибкости и свободы, чем тот же AWS. А самое главное, он более приближён к «боевой» разработке. Схема работы тут будет даже проще, чем с AWS: вам просто нужно установить Docker, спуллить образ с Docker Hub и запустить его.
Следите за новыми постами по любимым темам
Подпишитесь на интересующие вас теги, чтобы следить за новыми постами и быть в курсе событий.
Источник: tproger.ru
Самоуничтожающиеся фото в Телеграме: что это и как сделать
Обладая многомиллионной аудиторией по всему миру, Telegram предлагает своим пользователям массу возможностей для частной переписки или ведения информационных каналов. Среди прочих опций, которые интересные для приватного общения — самоуничтожающиеся фото в Телеграме.
Эта функция появилась не так давно, вместе с внедрением в приложение секретных чатов. О том, что представляют из себя самоуничтожающиеся фото, как в Телеграме отправить исчезающее фото и что, кроме картинок и фотографий, можно отправлять с режимом автоматического удаления — в нашем материале.
- Что такое секретный чат
- Что такое исчезающие фото в Телеграме
- Как отправить самоуничтожающееся фото в Телеграме
Что такое секретный чат
Секретный чат в мессенджере появился относительно недавно и представляет собой более защищенную, чем обычный диалог, формат переписки. В секретных чатах Telegram, который сам по себе считается достаточно безопасным приложением, использует технологию сквозного шифрования. При сквозном шифровании переписка и файлы, которыми обмениваются участники беседы, не хранятся в облаке, а на устройствах пользователей.
Разработчики мессенджера подчеркивают, что пока смартфоны участников секретного чата находятся в руках их владельцев, никто не может получить доступ к этой переписке и всему ее содержимому. Даже Telegram не имеет возможности расшифровать переписку и получить то, что находится в секретных чатах.
Для обеспечения такого уровня защиты введены определенные ограничения. Самое главное из них — ограничение по степени доступности секретных чатов. Сам по себе Telegram является мультиплатформенным приложением, существующим не только на всех основных, но и даже на относительно малораспространенных в наши дни операционных системах. Однако создавать и использовать секретные чаты мессенджер позволяет исключительно на смартфонах — этой опции нет даже в официальных версиях для десктопных операционных системах, не говоря уже о веб-клиенте.
В секретных чатах невозможно сделать резервную копию переписки, из чего вытекает второе ограничение — если в обычных чатах из облачной копии переписку и файлы в ней можно восстановить на любом устройстве, куда вы войдете с тем номером телефона, на который был создан профиль с прежними чатами, то секретный чат доступен только на том смартфоне, на котором он был создан. Если выйти из своего аккаунта или удалить Telegram с устройства, то безвозвратно исчезнет и секретный чат.
Из секретного чата невозможно пересылать сообщения и файлы, нельзя делать скриншоты экрана (на снимке будет только интерфейс приложения без его содержимого) и записывать видео с экраном (в ролике будет лишь белый или черный фон), а если ваш собеседник попытается сделать это — в чате появится соответствующее уведомление. А если говорить о собеседниках, то в секретных чатах может быть всего два участника — в отличие от обычных, где в переписку допускаются тысячи человек.
Что такое исчезающие фото в Телеграме
Если вас интересует, как скинуть исчезающее фото в Телеграме, то для этого вам сначала необходимо создать секретный чат с тем собеседником, которому вы собираетесь отправлять самоуничтожающиеся снимки.
Чтобы создать секретный чат в Telegram, необходимо:
- Запустить приложение на смартфоне;
- Отыскать в контакт-листе пользователя, с которым вы хотите сделать секретный чат, или отыскать существующий с ним чат, нажав на иконку с листом бумаги и ручкой в правом верхнем углу;
- Войти в переписку;
- Кликнуть по аватаре собеседника в правом верхнем углу;
- На открывшейся странице профиля найти пункт «Еще»;
- В выпадающем меню выбрать пункт «Начать секретный чат»;
- Подтвердить создание секретного чата.
Уже на стадии создания секретного чата вы можете задать настройки для автоудаления сообщений и любого другого контента, который будет появляться в диалоге. Встроенный таймер позволяет задавать диапазон от 1 до 15 секунд включительно (в том числе 2, 3, 4 секунды и так далее ), 30 секунд, а также минуту, час, день и неделю с момента прочтения сообщения до его удаления.
С этим таймером можно поступать так, как вам заблагорассудится — активировать сразу, не активировать вообще никогда или включить автоудаление контента в секретном чате в любой момент переписки. Но в последнем случае важно понимать, что исчезать будут только те сообщения и файлы, которые появились в чате после того, как был установлен таймер удаления — все то, что оказалось в диалоге до этого момента, будет сохраняться либо до момента удаления конкретного сообщения вручную, либо до удаления секретного чата целиком.
Активировать таймер для автоматического удаления любого сообщения в секретном чате можно прямо через поле ввода текста или прикрепления контента — в правой его части расположена иконка секундомера. Тапнув по ней, можно задать время жизни сообщений, которые будут отправлены после активации опции самоуничтожения контента.
Как отправить самоуничтожающееся фото в Телеграме
Итак, чтобы сделать автоматически исчезающее фото в Telegram, вы в первую очередь должны создать секретный чат на смартфоне. И в этом случае абсолютно неважно, идет ли речь об устройствах на iOS или Android — порядок создания секретного чата и активация таймера самоудаления сообщений во всех случаях будет аналогичной.
Порядок создания секретного чата мы описали выше. О том, что таймер автоматического удаления контента можно задать прямо в процессе создания секретного чата, тоже упомянули. Сейчас остановимся на варианте, когда вы хотите активировать таймер самоуничтожения фотографий в момент их отправки собеседнику.
Итак, чтобы отправить самоуничтожающееся фото в Телеграме, необходимо:
- Запустить Телеграм на смартфоне;
- Создать или войти в существующий секретный чат;
- Задать таймер для автоматического удаления снимка;
- В поле ввода сообщения прикрепить фотографию;
- Отправить сообщение;
- Отправленный с таймером самоудаления снимок будет отображаться в «замаскированном» виде и у отправителя, и у получателя, пока последний не откроет его и не активирует таймер удаления.
«Чтобы установить таймер, просто коснитесь иконки секундомера (в поле ввода на iOS, на верхней панели на Android), а затем выберите желаемый лимит времени. Часы начинают отсчитывать момент, когда сообщение отображается на экране получателя (получает две галочки). Как только время истечёт, сообщение исчезнет с обоих устройств. Мы постараемся отправить уведомление, если будет сделан снимок экрана. Обратите внимание, что таймер в секретных чатах применяется только к сообщениям, отправленным после установки таймера. Это не влияет на более ранние сообщения», — отмечают разработчики Telegram.
Надо понимать, что отправленное с автоудалением сообщение и/или вложенные файлы:
- Удалятся безвозвратно;
- Удалятся с устройства отправители и получателя;
- Удалятся только после того, как получатель откроет сообщение и пройдет заданный таймером интервал времени после прочтения;
- Восстановить удаленное сообщение невозможно.
Источник: ichip.ru