if m.content_type['PHOTO']: print("оп у нас тут фоточка образовалась") await manager.start(Broadcast.broadcast_image, m.photo[0].file_id, reset_stack=False) else: await m.answer(text="Прикрепите фотографию") broadcast = Dialog( Window( Format("<b>Следующие роли получат рассылку:</b>" "\n• {selected}"), types_kbd, Group(Button(Const("Отмена"), id="Cancel", on_click=on_finish), Next(Const("Далее")), width=2, keep_rows=False), getter=get_data, state=Broadcast.broadcast_type, ), Window( Format("<b>Следующие роли получат рассылку:</b>" "\n• {selected}" "\n\n<b>Текст рассылаемого сообщения:</b>" "\n{text}" "\n\n<i>Поддерживается встроенное в Telegram форматирование!" "\nМаксимальное кол-во символов: 4096</i>"), Url(Const("Про форматирование"), Const("https://lifehacker.ru/formatirovanie-teksta-v-telegram/")), Button(Const("Отмена"), id="Cancel", on_click=on_finish),
from aiogram_dialog.widgets.kbd import Row, SwitchTo, Next, Back from aiogram_dialog.widgets.text import Const class DialogSG(StatesGroup): first = State() second = State() third = State() dialog = Dialog( Window( Const("First"), SwitchTo(Const("To second"), id="sec", state=DialogSG.second), state=DialogSG.first, ), Window( Const("Second"), Row( Back(), Next(), ), state=DialogSG.second, ), Window( Const("Third"), Back(), state=DialogSG.third, ) )
class RenderSG(StatesGroup): first = State() second = State() last = State() async def on_input(m: Message, dialog: Dialog, manager: DialogManager): manager.current_context().dialog_data["name"] = m.text await dialog.next(manager) # rendering tool cannot detect this call dialog = Dialog( Window( Const("1. First"), Next(), state=RenderSG.first, ), Window( Const("2. Second"), Back(), MessageInput(on_input), state=RenderSG.second, preview_add_transitions=[Next()], # this is a hint for rendering tool ), Window( Const("3. Last"), Back(), state=RenderSG.last, ), )