Skip to content

Instantly share code, notes, and snippets.

@bomzheg
Created November 11, 2022 19:11
Show Gist options
  • Save bomzheg/42fc919b5781a6112795e43e59f04e7b to your computer and use it in GitHub Desktop.
Save bomzheg/42fc919b5781a6112795e43e59f04e7b to your computer and use it in GitHub Desktop.
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