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 ответов

30 просмотров

/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 . в помощь

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта