169 похожих чатов

Парни, как заставить state.set() сохранять в себе фото? в доках

кроме примера FSM кода ничего о самой машине состояний не написано, остается гадать как мне заставить чтобы бот подождал пока пользователь отправил фото, а потом с ним провзаимодействовал

#Меняем стартовое фото
@dp.message_handler(commands=['swp'])
async def switch_welphoto (message: types.Message):
await message.answer ('Отправь медиа, чтобы прикрепить его к приветствию: ')
await ap.welcome_photo.set()
@dp.message_handler(state=ap.welcome_photo)
async def set_welphoto(message: types.Message, state: FSMContext):
photo1 = ap.welcome_photo.photo[0].file_id
document_id = photo1
file_info = await bot.get_file(document_id)
print(f'file_id: {file_info.file_id}')
db.change_welcome_photo (file_info.file_id)
await message.answer ('Фото приветствия изменено, введите "/start" для проверки')

11 ответов

14 просмотров

/paste

Сообщение от m dar перемещено на HasteBin Размер: 1186 байт

Состояние это состояние - оно не хранит в себе ничего. Это просто статус. Хранить данные ты можешь параллельно

m-dar Автор вопроса

тогда как заставить dp.message.handler реагировать на состояние с фото, после state.set() хендлер реагирует только если ты отправляешь текст

указать тип принимаемого обновления, сейчас у тебя - текст (по-умолчанию)

content_types="photo"

m-dar Автор вопроса

это в хендлере самом? тогда бот будет реагировать на фото в любое время, я бы не лез тогда в fsm

И стейт тоже пропиши

@dp.message_handler(..., content_types=ContentType.PHOTO)

Пропиши вместе со стейтом, будет только на фото под стейтом реагировать

black . в помощь

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
Коллеги, доброе утро. Запустил на удаленном хосте приложение (ручками зашел туда по ssh и запустил, не командой удаленно). Создал потом ssh-туннель, и с моей машины приложение...
Δημήτηρ
9
Карта сайта