Как установить aiogram linux

Обновлено: 01.07.2024

Привет! Как-то захотел я сделать своего бота в телеграме. Ну, знаете. Есть свой канал, пара чатов, знаю Python. Но скажу честно, первые попытки были заброшены. Оказалось, что в разработке ботов не было единого подхода, а найти хороший фреймворк оказалось сложнее, чем казалось. Или я не особо внимательный. Но в начале 2021 я нашел свой идеал. Это AIOGram.

А теперь я решил совместить приятное с полезным, так что буду писать какие-то нововведения для бота параллельно документируя их для сайта. Такая себе коллаборация с самим собой для получения побочных продуктов)

AIOGram быстрый старт

Создаём простой проект в PyCharm, ждём завершения и открываем main.py. Его содержимое нас не интересует, так что удаляем. Вместо этого пишем:

from aiogram import Bot , Dispatcher , executor , types

Дабы почувствовать всю прелесть разработки в PyCharm – используем Context Action для импорта фреймрворка. Ставим указатель на aiogram и нажимаем Alt + Enter, и выбираем Install Package.

Если что-то не получилось, то необходимые библиотеки можно установить через Python Packages.


В будущем мы создадим файлик requirements.txt, в котором будут прописаны все необходимые библиотеки для автоматической установки. А токен и другие важные переменные вынесем в .env файл. Но для простоты эти шаги пока опустим.

Далее пишем следующее:

Переменная с токеном должна содержать токен вашего бота, который можно получить в специальном боте @BotFather при создании своего.


Так и пишите в телеге @BotFather

А polling не даст завершить работу бота пока приложение активно.

Запустить можно уже, но интереса никакого. Предлагаю добавить эхо функцию.

Проверим? Нажимаем Ctrl +Shift + F10 для запуска скрипта.


И вправду эхо

Расширяем функционал


Уже интереснее

Добавим ещё аналогичную help, но ради интереса пропишем её ниже, чем echo:


Неа, не получилось

Как видите, старт так и срабатывает, а вот help нет. Как я и говорил. Обрабатывать мы можем только одну функцию за раз, и если какой-то обработчик соответствует, то дальнейшие будут отброшены.


Прекрасно!

Напишем простой диалоговый Telegram-бот на Python, который в дальнейшем можно дополнить различными функциями, и задеплоим его.

Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.

Настройка

Откройте Telegram, найдите @BotFather и начните беседу. Отправьте команду /newbot и следуйте инструкциям. Вы получите:

Обязательно сохраните токен, так как это ключ для взаимодействия с ботом.

Примечание Хранение токена должно быть локальным: ни в коем случае не выгружайте его в общий доступ, например в GitHub-репозиторий .

Установка 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 в терминале. Если же по каким-то причинам он отсутствует, установить его можно при помощи команды:

Установка aiogram

Установить данный фреймворк для Telegram Bot API с помощью pip:

Hello, bot!

Давайте напишем простенькую программу приветствия. Для начала следует импортировать библиотеки и создать экземпляры Телеграм бота и диспетчера:

Запускаем Telegram бота, написанного на Python, следующим образом:

ABBYY , Удалённо , По итогам собеседования

Ну вот и всё, простенький бот в Телеграмме на языке Python готов.

Docker

Сейчас мало кто не слышал про Docker, но если вдруг не слышали — вот хорошая статья. Для нашего проекта потребуется самый простой Dockerfile:

Каталог проекта должны при этом содержать следующие файлы:

Для локальных тестов достаточно установить Docker (linux, mac, windows), после чего в папке проекта собрать и запустить контейнер с помощью команд:

my_app — это просто название нашего контейнера, вместо которого можно использовать другое имя.

-d — специальный флаг, который запускает контейнер в фоне и позволяет дальше работать в терминале. Это называется detached mode.

Деплой на AWS

Прежде всего нам понадобится аккаунт на Docker Hub. Это аналог GitHub, только не с исходниками кода, а с уже созданными контейнерами. Работа с Docker Hub выглядит достаточно просто:

  1. Локально или с помощью пайплайнов собрали контейнер.
  2. Загрузили его на докер хаб.
  3. В любом удобном месте скачали его. Это может быть локальная машина, VPS сервер или облачный провайдер по типу AWS.
  4. Запустили.

Пройдёмся по этим шагам. Везде, где указано <docker_hub_username> , надо вставлять свой юзернейм, использованный при регистрации на докерхабе. Если это ваша первая публикация на докерхаб, для начала потребуется залогиниться с помощью docker login.

Загружаем его на докерхаб:

Для проверки успешности загрузки можете запустить контейнер из Docker Hub с помощью команды:

Далее загрузим наш контейнер в AWS Elastic Beanstalk. Для этого потребуется аккаунт на AWS. Если его нет, необходимо зарегистрироваться. Вас попросят ввести данные карты для верификации, но переживать не стоит, ведь мы воспользуемся бесплатным годовым триалом. Чтобы поиграться, этого более чем достаточно, а вот если вы захотите вывести проект в продакшен, следует перейти на VPS — это даст больше контроля и гибкости.

  • Переходим в Elastic Beanstalk, на вкладку Applications, и создаём новое приложение:

Elastic Beanstalk вкладка Applications

Называем приложение в Elastic Beanstalk

environment для будущего Telegram-бота

Worker environment для будущего Telegram-бота

Docker для Telegram-бота на Python

  • В пункте Application code нужно загрузить JSON-файл с конфигурацией Docker-образа. Сам файл:

Application code

Создаём окружение

  • AWS начинает создавать окружение, просто ждём завершения процесса:

AWS начинает создавать окружение

  • Если всё прошло успешно, вы увидите индикатор успешного запуска приложения:

Docker для Телеграм бота

Проверяем работу нашего Telegram bot:

Проверка Телеграм бота

Заключение

Поздравляем! Теперь вы знаете, как писать роботов для Telegram на Python.

Бота можно дополнять другими функциями, например, добавить отправку файлов, опрос или клавиатуру.

Кстати, в телеграмме есть аж целых два типа клавиатур:

Но и это полностью рабочий Телеграм-бот на Python: дополните словарём, и получите полноценную беседу. Также можете опробовать функциональность нашего Telegram-бота.

В «настоящих проектах» не обойтись без базы данных. Тут на помощь приходит docker-compose, который позволяет объединить несколько контейнеров в один сервис. Таким образом, например, можно создать приложение и положить его в контейнер, а базу данных, как отдельный сервис, поместить в другой контейнер, и с помощью docker-compose наладить между ними связь.

Также для более серьёзной разработки лучше использовать выделенный виртуальный сервер (VPS): он даёт гораздо больше гибкости и свободы, чем тот же AWS. А самое главное, он более приближён к «боевой» разработке. Схема работы тут будет даже проще, чем с AWS: вам просто нужно установить Docker, спуллить образ с Docker Hub и запустить его.




Всем привет, перезапускаю тему с разработкой ботов на Python.
Но с новыми дополнениями - aiogram и sqlite3(чисто для примера взял)
Aiogram - Асинхронный модуль для разработки ботов в телеграмме, а если по Русски, то тот же telebot, но со своими плюшками.
(Для тех, кто не шарит за telebot - идите читайте мои статьи до этого)
Например:
Теперь команды выполняются не последовательно, а вместе(Асинхронность), под каждое действие пользователя выделяется блок памяти, который позволяет нам это сделать!
Зачем нам асинхронность?
Если бота будут использовать сразу 100-200 человек, то telebot начнет просидать, когда aiogram наплыв не заметит
Если вы все усвоили, то начнем!
Сначала установим aiogram
pip install -U aiogram
Начнем настройку бота!

Вот и первое отличие от telebot, обработчиком выступает dp, а не bot, как мы привыкли
Теперь делаем реакцию на /start

Для тех, кто не понимает, зачем здесь if __name == '__main__':
Он тут нужен для проверки того, что файл - запустили, а если его запустили, то он выполняет executor.start_polling(dp)
executor.start_polling(dp) - как bot.polling() в telebot
Все, вот целый код:

Все! Мы написали с вами Эхо-бот!
Так-с, теперь БД!
Начнем с начала:
sqlite3 - встроенная библиотека, к установке не требуется

conn - создание подключения
cur - нужен для взаимодействия с БД
Если такой базы данных нету, то он ее создаст
Если бд находиться в папке, то можно написать так:
conn = sqlite3.connect('./название_папки/имя_базы_данных.расширение(.db,.sqlite3)')
WARNING.
Папка должна находиться рядом с исполняемым файлом.
Теперь надо создать таблицы в БД:

Все, таким образом мы создаем таблицы в БД
cur.execute - Действия в БД(Командами!)
А вот и данные, которые мы будем заносить!
Теперь добавим в наш код добавление пользователя в БД и получение информации о себе через команду:

Здесь мы выбираем все значения из таблицы users по id пользователя
result = cur.fetchall() - сохранение полученных данных, в виде: [(первые данные, вторые данные)]
Полный код:

Вот и все, сложного тут ничего и нету, а пока тему оформлял заметил, что если вылезает ЛЮБАЯ ошибка, то бот не падает, а работает и это клёво!
Если хотите меня поддержать, мой киви -

, а в комменты к платежу укажите своё имя на форуме, на стеночке опубликую


Не получается интерпретировать алгоритм для телеграм бота с использованием модуля aiogram
Мне надо написать бота для телеги который будет загадывать числа и использовать при этом модуль.

Не получается установить ОС
Здравствуйте! Вчера приобрёл новый SSD: Corsair Force LE200 на 240 гигабайт. Решил установить на.

Не получается установить XP
Вообщем проблема такая Купил вчера себе ноут, на нем стандартом шла 7 винда.. она много пожирает.

установить не получается
скиньте пож установочник, не могу найти в интернете, только демо версия. а в демо версии не.

Решение

File -> Settings -> Project Name -> Python Interpreter -> Install

Вот и учись - читай книги, пиши хэлловорды, решай алгоритмические задачи.
Боты это не хэлловорд. Это сложно. Ты все равно не поймешь как он работает тупой копипастой чужого кода.
Тем более что пока ты даже не понимаешь разницы между консолью Python и системной.

начинаю вводить pip install -U aiogram запускаю и начинает выдавать ошибку invalid syntax perhaps you forgot a comma

Это значит что написал какую-то ерунду и Python тебе об этом сказал.

pip install -U aiogram вводится в консоли cmd/bash, а в PyCharm вообще все куда проще.

не получается установить 1с
1с 8.1 запускается только конфигурация. помогите пожалуйста

Не получается установить
Здравствуйте.Помогите разобраться. Warning: mysql_num_rows() expects parameter 1 to be resource.

не получается установить
Всем добрый день. Столкнулся с проблемой установки Windows 7 с CD (балванка DVD+R verbatim) не.

Не получается установить ОС
Такая ситуация. Стал переустанавливать Вин 7 на ноутбуке. Пишет всякую гадость В Биосе.

Не получается установить windows 7
Ребята HELP. Я устала бороться с этим новым BIOSom. Вторые сутки без сна фактически.

Не получается установить Borland С++ 3.1
Доброго времени суток. Ставил пару месяцев назад себе borland c++ 3.1 на windows 8.1 x64 вообще без.

Читайте также: