Beispiel #1
0

async def get_data(**kwargs):
    return {
        "name": "Tishka17",
        "extended": False,
    }


def is_tishka17(data: Dict, widget: Whenable, manager: DialogManager):
    return data.get("name") == "Tishka17"


window = Window(
    Multi(
        Const("Hello"),
        Format("{name}", when="extended"),
        sep=" "
    ),
    Group(
        Row(
            Button(Const("Wait"), id="wait"),
            Button(Const("Ignore"), id="ignore"),
            when="extended",
        ),
        Button(Const("Admin mode"), id="nothing", when=is_tishka17),
    ),
    state=MySG.main,
    getter=get_data,
)
Beispiel #2
0
     Const("Hello, {name}!"),
     Format("Hello, {name}!\n", when=lambda data, w, m: data["age"] > 18),
     Format("Now: {now}"),
     Progress("progress", 10),
     Progress("progress2", 10, filled="🟩"),
     Group(
         Button(Format("{name}"), "b1"),
         Button(Const("Is it Fun?"), "b2", on_click=fun),
         Checkbox(Const("Yes"), Const("No"), "check"),
         width=100,
     ),
     select,
     radio,
     multiselect,
     Button(Format("{now}"), "b3"),
     Row(Button(Progress("progress", 5), "b3"), Button(Progress("progress2", 5, filled="🟩"), "b4")),
     Next(),
     MessageInput(input_fun),
     getter=get_data,
     state=Register.hello,
 ),
 Window(
     Const("Выберите время начала"),
     Group(*[
         Button(Const(f"{h % 24:2}:{m:02}"), f"{h}_{m}")
         for h in range(20, 26) for m in range(0, 60, 15)
     ], width=4),
     Group(Button(Const("Позже"), "ltr"), Button(Const("Раньше"), "erl"), width=100),
     Back(Const("Назад")),
     state=Register.name
 )
Beispiel #3
0
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,
    )
)
Beispiel #4
0
    return {"name": dialog_manager.context.data("name", None)}


async def on_finish(c: CallbackQuery, button: Button, manager: DialogManager):
    await manager.done({"name": manager.context.data("name")})


name_dialog = Dialog(
    Window(
        Const("What is your name?"),
        Cancel(),
        MessageInput(name_handler),
        state=NameSG.input,
    ),
    Window(Format("Your name is `{name}`, it is correct?"),
           Row(Back(Const("No")),
               Button(Const("Yes"), id="yes", on_click=on_finish)),
           state=NameSG.confirm,
           getter=get_name_data))


# main dialog
class MainSG(StatesGroup):
    main = State()


async def process_result(result: Any, manager: DialogManager):
    if result:
        manager.context.set_data("name", result["name"])


async def get_main_data(dialog_manager: DialogManager, **kwargs):
Beispiel #5
0
            id="w_age",
            on_click=on_age_changed,
        ),
        state=DialogSG.age,
        getter=get_data,
    ),
    Window(
        text=Multi(
            Format("{name}! Thank you for your answers."),
            Const("Hope you are not smoking", when="can_smoke"),
            sep="\n\n",
        ),
        kbd=Row(
            Back(),
            SwitchState(Const("Restart"),
                        id="restart",
                        state=DialogSG.greeting),
            Button(Const("Finish"), on_click=on_finish, id="finish"),
        ),
        getter=get_data,
        state=DialogSG.finish,
    ))


async def start(m: Message, dialog_manager: DialogManager):
    await dialog_manager.start(DialogSG.greeting, reset_stack=True)


async def main():
    # real main
    logging.basicConfig(level=logging.INFO)
Beispiel #6
0
from aiogram_dialog.widgets.kbd import Button, Group, Row
from aiogram_dialog.widgets.text import Const

group = Group(
    Row(
        Button(Const("Go"), id="go"),
        Button(Const("Run"), id="run"),
    ),
    Button(Const("Fly"), id="fly"),
)
Beispiel #7
0
    await manager.dialog().switch_to(DialogSG.second, manager)


async def go_back(c: CallbackQuery, button: Button, manager: DialogManager):
    await manager.dialog().back(manager)


async def go_next(c: CallbackQuery, button: Button, manager: DialogManager):
    await manager.dialog().next(manager)


dialog = Dialog(
    Window(
        Const("First"),
        Button(Const("To second"), id="sec", on_click=to_second),
        state=DialogSG.first,
    ),
    Window(
        Const("Second"),
        Row(
            Button(Const("Back"), id="back2", on_click=go_back),
            Button(Const("Next"), id="next2", on_click=go_next),
        ),
        state=DialogSG.second,
    ),
    Window(
        Const("Third"),
        Button(Const("Back"), id="back3", on_click=go_back),
        state=DialogSG.third,
    ))
Beispiel #8
0
from aiogram.types import CallbackQuery

from aiogram_dialog import DialogManager
from aiogram_dialog.widgets.kbd import Button, Row
from aiogram_dialog.widgets.text import Const


async def go_clicked(c: CallbackQuery, button: Button, manager: DialogManager):
    await c.message.answer("Going on!")


async def run_clicked(c: CallbackQuery, button: Button, manager: DialogManager):
    await c.message.answer("Running!")


row = Row(
    Button(Const("Go"), id="go", on_click=go_clicked),
    Button(Const("Run"), id="run", on_click=run_clicked),
    Button(Const("Fly"), id="fly"),
)