Перед вами книга по разработке Telegram-ботов на языке Python с использованием фреймворка aiogram 3.x.
Ознакомиться с книгой можно здесь: https://mastergroosha.github.io/aiogram-3-guide/
Исходные тексты ко всем главам расположены в папке code.
- aiogram 2.x (2019-2021): https://mastergroosha.github.io/aiogram-2-guide/
- pyTelegramBotAPI (2015-2019): https://mastergroosha.github.io/telegram-tutorial/
Книга собрана с помощью mkdocs-material.
telegram-tutorial-2’s People
Contributors
Stargazers
Watchers
Forkers
telegram-tutorial-2’s Issues
Не работающий код
В текущих версиях aiogram код из примеров не работает. В версии 3.0.0b3 и выше добавлены фильтры для декораторов.
Было:
Добавить примечание про StateFilter
Помимо указания объектов типа State, можно использовать StateFilter или default_state (https://github.com/aiogram/aiogram/blob/dev-3.x/aiogram/fsm/state.py#L149-L150)
Telegram Bot Python #2 — Reply Keyboard, Inline Keyboard, Callbacks (aiogram)
Плохое качество скриншотов в уроке №1
TypeError: ChatTypeFilter() takes no arguments.
Глава «Фильтры и мидлвари», версия aiogram — 3.0.0b7.
Ошибка:
Traceback (most recent call last):
File «bot.py», line 6, in
from handlers import group_games
File «. handlersgroup_games.py», line 10, in
ChatTypeFilter(chat_type=[«group», «supergroup»])
TypeError: ChatTypeFilter() takes no arguments
Сработал данный вариант:
class ChatTypeFilter(Filter): def __init__(self, chat_type: Union[str, list]) -> None: self.chat_type = chat_type async def __call__(self, message: Message) -> bool: if isinstance(self.chat_type, str): return message.chat.type == self.chat_type else: return message.chat.type in self.chat_type
Некоторые элементы кода несовместимы с версией aiogram 3.0.0b5
Приведу примеры из вашего кода и мои исправления для актуальной версии 3.0.0b5:
Дальше везде параметр commands=[«start»] используем из класса Command.
Конечные автоматы (FSM)
В главе про конечные автоматы в примерах везде aiogram.dispatcher.fsm вместо aiogram.fsm
Localization for this tutorial
Aiogram very popular bot framework on python and it use in many country for create bot. Bot developers often use this tutorial and it is useful for them. But this guide is only in Russian. I suggest you localize this guide. This tutorial is published in mkdocs material and it supports many languages.
invalid link in section about finite state machines
Неправильный импорт.
Не работает следующий импорт:
from aiogram.utils.keyboard import ReplyKeyboardMarkup, KeyboardButton
Работает:
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton
Telegram бот на python — курс по созданию бота по документации aiogram и Telegram API
Callback handler в food.py
А как зарегистрировать dp.callback_query_handler() в food.py ?
Пытался сделать так:
async def any_func(call: types.CallbackQuery, message: types.Message): await message.answer(«callback for » + call.data) def register_handlers_food(dp: Dispatcher): dp.register_message_handler(food_start, commands=»food», state=»*») dp.register_message_handler(food_chosen, state=OrderFood.waiting_for_food_name) dp.register_message_handler(food_size_chosen, state=OrderFood.waiting_for_food_size) #Вот тут добавил хендлер dp.callback_query_handler(lambda c: c.data.startswith(«something»))
Добавить описание работы MagicData
Скачать фото используя Router
Что в оф. документации что в вашей книге, к сожалению не сказано как можно скачать фото, используя различные маршруты. Фото можно скачать только через объект Bot, но если его импортировать в файл с отдельным маршрутом, тогда получается что идет циклический импорт, так как этот файл уже импортирован dp.include_routers().
а объекты Message и PhotoSize не имеют метода download или get_file. Во второй версии aiogram это было проще.
Неизмененный импорт под новую версию фреймворка (3.0.0b7).
Глава «Особые апдейты», пункт «Добавление в группу».
. from aiogram.dispatcher.filters.chat_member_updated import . .
. from aiogram.filters.chat_member_updated import . .
Код не работает
Не работает код учебника в части про конечные автоматы
ImportError: cannot import name ‘Router’ from ‘aiogram’ (/home/runner/Bot-Kursach/venv/lib/python3.8/site-packages/aiogram/init.py)
ImportError: cannot import name ‘F’ from ‘aiogram’ (/home/runner/Bot-Kursach/venv/lib/python3.8/site-packages/aiogram/init.py)
ModuleNotFoundError: No module named ‘aiogram.dispatcher.filters.command’
Возможно ошибка в примере
Возможно тут имелось:
await message.answer(f»html.quote(message.text)>nnadded_text>», parse_mode=»HTML»)
Тк юзер может написать и будет ошибка
Передача именнованых аргументов через Dispatcher()
Передавать именованные аргументы можно не только в start_polling(. ), но также и через экземпляр диспетчера. Так может быть даже лучше, поскольку это более универсальный вариант для разных способов запуска бота (например через вебхуки)
В fsm.md поправить пример кода команды cancel
Добавить в главу про кнопки текст про инлайн-режим
Надо как-то уточнить, что при нажатии кнопки на сообщении, которое было отправлено из инлайн-режима, ситуация сложнее: нет объекта сообщени, т.е. непонятно, как редактировать текст, не зная оригинал.
MVC
Привет еще раз, я новенький в вашем ремесле ))
Самый главный вопрос как у меня так и у подавляющего большинства это MVC
Как бы ты разбил обычную скажем команду /start на паттерн MVC?
Что в model ? controller? view?
Обратится к методам бота из хендлера
Извените за нубство, некак не пойму, как обратится к методам aiogram.Bot из функций хендлеров
Например в handlers/common.py
async def cmd_start(message: types.Message): await message.answer( «Выберите, что хотите заказать: напитки (/drinks) или блюда (/food).», reply_markup=types.ReplyKeyboardRemove() ) def register_handlers_common(dp: Dispatcher): dp.register_message_handler(cmd_start, commands=»start»)
Как здесь вызвать метод bot.get_chat_member ?
или какой есть путь, чтобы выполнять данный метод при срабатывании хендлера?
PS: Отличный туторриаль
Мета: идеи для уроков
Можно рассказать про content_types.ANY, про встроенный эскейпинг HTML и Markdown
Нерабочий фильтр в примере.
Глава «Фильтры и мидлвари», пункт «Примеры мидлварей».
Заменить F.text == «confirm» на F.data == «confirm» . Иначе обработчик не срабатывает при нажатии на кнопку.
Источник: coder.social
Telebot или Aiogram: что выбрать для бота в Telegram?
Создание ботов в Telegram становится все более популярным. Многие компании и частные лица используют их для автоматизации процессов, связанных с общением и продажами. Когда дело доходит до выбора библиотеки для разработки бота, две наиболее популярные на рынке — Telebot и Aiogram.
Telebot — это библиотека на языке Python, которая обеспечивает простой и легкий способ создания ботов в Telegram. Aiogram, с другой стороны, является более новой библиотекой, предоставляющей более широкий спектр функций и возможностей для создания ботов.
В этой статье мы сравним две библиотеки и рассмотрим их преимущества и недостатки, чтобы помочь вам выбрать наиболее подходящий инструмент для разработки своего бота в Telegram.
Сравнение Telebot и Aiogram
Что такое Telebot и Aiogram?
Telebot и Aiogram — это библиотеки для создания ботов в Telegram на языке программирования Python. Они облегчают создание ботов, предоставляя программистам множество функций и инструментов для работы с API Telegram.
Что отличает Telebot от Aiogram?
Telebot проще в использовании для начинающих разработчиков. Он имеет более простой синтаксис и обеспечивает меньшее количество возможностей для программирования. Однако, Telebot имеет хорошую документацию, что облегчает работу для многих.
С другой стороны, Aiogram предоставляет программистам больше возможностей для создания уникальных функций бота, и подходит более опытным разработчикам. Он имеет сложный синтаксис, но благодаря этому программисты могут создавать более продвинутые и кастомные решения, которые могут быть необходимы для различных проектов.
Какой выбрать?
Выбор между Telebot и Aiogram зависит от опыта программиста и конкретных требований проекта. Если вам нужно быстро создать простого бота и вы новичок в программировании, то лучше начать с Telebot. Если же вы опытный разработчик, и ваш проект требует уникальных функций и кастомных решений, то Aiogram будет лучшим выбором.
Простой синтаксис | Сложный синтаксис |
Ограниченное количество возможностей | Большой функционал для создания уникальных решений |
Хорошая документация | Средняя документация |
В целом, выбор между Telebot и Aiogram зависит от ваших нужд и уровня опыта в программировании. Имейте в виду, что каждая библиотека имеет свои преимущества и недостатки, и выбор должен зависеть от конкретных требований вашего проекта.
Какой фреймворк выбрать для создания своего бота в Telegram?
Telegram – одна из самых популярных мессенджеров с огромной аудиторией пользователей. Создание ботов для этой платформы – хороший способ автоматизировать коммуникацию с пользователями. Но какой фреймворк выбрать для реализации своей идеи?
Telebot — популярный фреймворк для создания ботов в Telegram. Он предоставляет множество полезных функций и прост в использовании. Среди его достоинств – хорошая документация и подробные примеры. Telebot может быть использован для реализации простых и сложных ботов, но если речь идет о сложной логике, возможно, стоит обратить внимание на другие фреймворки.
Aiogram – еще один популярный фреймворк для разработки ботов в Telegram. Он отличается от Telebot тем, что предоставляет больше возможностей для реализации сложных и продвинутых ботов. Aiogram поддерживает асинхронные запросы и работу с базой данных, что делает его хорошим выбором для масштабных проектов.
Выбор фреймворка зависит от ваших потребностей и опыта в программировании. Если речь идет о реализации простых ботов, то Telebot это отличный вариант. Если вы собираетесь создавать сложные и масштабные проекты, то Aiogram будет лучшим выбором.
Источник: usemake.ru
aiogram 2.25.1
aiogram is a pretty simple and fully asynchronous framework for Telegram Bot API written in Python 3.7 with asyncio and aiohttp. It helps you to make your bots faster and simpler.
Official aiogram resources
Подробности проекта
Ссылки проекта
Статистика
Метаданные
Лицензия: MIT License (MIT)
Требует: Python >=3.7
Сопровождающие
Классификаторы
История выпусков Уведомления о выпусках | Лента RSS
3.0.0b7 предварительный выпуск
3.0.0b6 предварительный выпуск
3.0.0b5 предварительный выпуск
3.0.0b4 предварительный выпуск
3.0.0b3 предварительный выпуск
3.0.0b2 предварительный выпуск
3.0.0b1 предварительный выпуск
3.0.0a18 предварительный выпуск
3.0.0a17 предварительный выпуск
3.0.0a16 предварительный выпуск
3.0.0a15 предварительный выпуск
3.0.0a14 предварительный выпуск
3.0.0a13 предварительный выпуск
3.0.0a12 предварительный выпуск
Источник: pypi.org