Created
November 11, 2022 19:11
-
-
Save bomzheg/42fc919b5781a6112795e43e59f04e7b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import logging | |
from typing import Callable, Any, Awaitable | |
from aiogram import Bot, Dispatcher, types, BaseMiddleware | |
from aiogram.filters import Command | |
from aiogram.fsm.state import StatesGroup, State | |
from aiogram.fsm.storage.memory import MemoryStorage | |
from aiogram.types import Message, InlineQuery, TelegramObject | |
from aiogram.types.error_event import ErrorEvent | |
from aiogram_dialog import Window, Dialog, DialogRegistry, DialogManager, StartMode | |
from aiogram_dialog.widgets.kbd import Button | |
from aiogram_dialog.widgets.text import Const | |
TOKEN = "" | |
dp = Dispatcher(storage=MemoryStorage()) | |
logger = logging.getLogger(__name__) | |
class MySG(StatesGroup): | |
main = State() | |
main_window = Window( | |
Const("Hello, unknown person"), | |
Button(Const("Useless button"), id="nothing"), | |
state=MySG.main, | |
) | |
dialog = Dialog(main_window) | |
class MyMiddleware(BaseMiddleware): | |
async def __call__( | |
self, | |
handler: Callable[[TelegramObject, dict[str, Any]], Awaitable[Any]], | |
event: TelegramObject, | |
data: dict[str, Any], | |
) -> Any: | |
print([][0]) | |
return await handler(event, data) | |
async def dialog_start(message: Message, dialog_manager: DialogManager): | |
await dialog_manager.start(MySG.main, mode=StartMode.RESET_STACK) | |
async def echo_handler(message: InlineQuery) -> None: | |
print(message) | |
async def handle_error(error: ErrorEvent): | |
logger.exception( | |
"Cause unexpected exception %s, by processing %s", | |
error.exception.__class__.__name__, | |
error.update.dict(exclude_none=True), | |
exc_info=error.exception, | |
) | |
def main() -> None: | |
bot = Bot(TOKEN, parse_mode="HTML") | |
dp.inline_query.middleware(MyMiddleware()) | |
dp.errors.register(handle_error) | |
dp.inline_query.register(echo_handler) | |
registry = DialogRegistry(dp) | |
registry.register(dialog) | |
dp.message.register(dialog_start, Command("start")) | |
dp.run_polling(bot) | |
if __name__ == "__main__": | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment