Open tarhonskyi opened 1 year ago
2 урок Знакомство с aiogram.
@dp.message(commands=["start"])
@dp.message(Command(commands=["start"]))
3 урок Робота з повідомленнями: Робота с entities:
data[item.type] = item.extract(message.text)
data[item.type] = item.extract_from(message.text)
Хендлер dp.message(content_types=[types.ContentType.<Type>])
не працює в aiogram3.0.0b7. Необхідно створити фільтр для розпізнавання контенту:
from aiogram.filters import BaseFilter
from aiogram.types import Message, ContentType
class <Type>Filter(BaseFilter):
async def __call__(self, message: Message) -> bool:
return message.content_type == ContentType.<Type>
далі використовуємо його в хендлері:
@dp.message(<Type>Filter())
async def our_function(message: types.Message):
await message.reply_***(message.***.file_id)
3 урок Работа с сообщениями: Прячем ссылку в тексте:
@dp.message(Command(commands=["hidden_link"]))
async def cmd_hidden_link(message: types.Message):
await message.answer(f"{hide_link('_вставляем ссылку_')}_пишем текст_", parse_mode='HTML')
@BobAlex87 Ми можемо одразу обрати метод парсингу при створенні боту.
bot = Bot(token=config.bot_token.get_secret_value(), parse_mode='HTML')
В такому випадку бот буде автоматично застосовувати форматування HTML
В уроці Фильтры и мидлвари не працює фільтр нижче:
class ChatTypeFilter(BaseFilter): # [1]
chat_type: Union[str, list] # [2]
async def __call__(self, message: Message) -> bool: # [3]
if isinstance(self.chat_type, str):
return message.chat.type == self.chat_type
else:
return message.chat.type in self.chat_type
Переписав наступним чином і без помилок відпрацьовує:
class ChatTypeFilter(BaseFilter): # [1]
def __init__(self, chat_type: Union[str, list]) -> None:
self.chat_type = chat_type
async def __call__(self, message: Message) -> bool: # [3]
if isinstance(self.chat_type, str):
return message.chat.type == self.chat_type
else:
return message.chat.type in self.chat_type
Необхідно опрацювати матеріал по роботі з aiogram3, що викладено за посиланням Пишем Telegram-ботов с aiogram 3.x (β):