diff --git a/README.md b/README.md index 50bc744..0bf67ad 100644 --- a/README.md +++ b/README.md @@ -383,3 +383,48 @@ async def cmd_links(message: Message): ``` Также некоторые параметры предпросмотра можно указать по умолчанию в DefaultBotProperties +### Медиафайлы + +#### Отправка файлов + +У большинства медиафайлов есть свойства ``file_id`` и ``file_unique_id``. Первый можно использовать для повторной отправки одного и того же файла много раз, причём отправка будет мгновенной, т.к. сам файл уже лежит на серверах **Telegram** + +#### Скачивание файлов + +бот может скачать медиа к себе на компьютер/сервер. Для этого у объекта типа Bot есть метод download() + +```py +@dp.message(F.photo) +async def download_photo(message: Message, bot: Bot): + await bot.download( + message.photo[-1], + destination=f"/tmp/{message.photo[-1].file_id}.jpg" + ) + + +@dp.message(F.sticker) +async def download_sticker(message: Message, bot: Bot): + await bot.download( + message.sticker, + # для Windows пути надо подправить + destination=f"/tmp/{message.sticker.file_id}.webp" + ) +``` +#### Альбомы + +Начиная с версии 3.1, в [aiogram есть «сборщик» альбомов,](https://docs.aiogram.dev/en/latest/utils/media_group.html) + +### Сервисные (служебные) сообщения + +Сообщения в Telegram делятся на текстовые, медиафайлы и служебные (они же — сервисные). Настало время поговорить о последних. + +У такого служебного сообщения будет content_type равный "**new_chat_members**", но вообще это объект Message, у которого заполнено одноимённое поле. +```py +@dp.message(F.new_chat_members) +async def somebody_added(message: Message): + for user in message.new_chat_members: + # проперти full_name берёт сразу имя И фамилию + # (на скриншоте выше у юзеров нет фамилии) + await message.reply(f"Привет, {user.full_name}") + +``` \ No newline at end of file diff --git a/bot.py b/bot.py index ebbab57..c1d0465 100644 --- a/bot.py +++ b/bot.py @@ -12,6 +12,9 @@ from aiogram import F, html from aiogram.types import Message from aiogram.filters import Command, CommandObject from aiogram.utils.formatting import Text, Bold, as_list, as_marked_section, as_key_value, HashTag +from aiogram.types import FSInputFile, URLInputFile, BufferedInputFile +# новый импорт! +from aiogram.utils.markdown import hide_link #для скрытой ссылки from config_reader import config @@ -48,12 +51,15 @@ async def cmd_start(message: types.Message): as_marked_section( Bold("Я умею:"), "/test1 - Отвечу Test1", - "/more - Еще больше возможностей!", "/answer - Просто отвечу", "/reply - Отвечу ответом", "/name - Поприветствую тебя по Имени и Фамилии", "/aboute - Дам тебе характеристику", "/dice - Подкину для тебя кубик, загадай число ;)", + "Если ты мне отправишь гифку, я тебе ей же и отвечу", + "----------", + "/more - Еще больше возможностей!", + marker="✅ ", ), as_marked_section( @@ -88,7 +94,8 @@ async def cmd_more(message: types.Message): "Номер телефона,", "Я распознаю их и напишу что нашел", "/dice - Подкину для тебя кубик, загадай число ;)", - "/settime