Добавлен Middleware
This commit is contained in:
39
examples/get_ids/main.py
Normal file
39
examples/get_ids/main.py
Normal file
@@ -0,0 +1,39 @@
|
||||
import asyncio
|
||||
import logging
|
||||
|
||||
from maxapi import Bot, Dispatcher, F
|
||||
from maxapi.enums.parse_mode import ParseMode
|
||||
from maxapi.types import MessageCreated
|
||||
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
bot = Bot('тут_ваш_токен')
|
||||
dp = Dispatcher()
|
||||
|
||||
|
||||
@dp.message_created(F.message.link.type == 'forward')
|
||||
async def get_ids_from_forward(event: MessageCreated):
|
||||
text = (
|
||||
'Информация о пересланном сообщении:\n\n'
|
||||
|
||||
f'Из чата: <b>{event.message.link.chat_id}</b>\n'
|
||||
f'От пользователя: <b>{event.message.link.sender.user_id}</b>'
|
||||
)
|
||||
await event.message.reply(text)
|
||||
|
||||
|
||||
@dp.message_created()
|
||||
async def get_ids(event: MessageCreated):
|
||||
text = (
|
||||
f'Ваш ID: <b>{event.from_user.user_id}</b>\n'
|
||||
f'ID этого чата: <b>{event.chat.chat_id}</b>'
|
||||
)
|
||||
await event.message.answer(text, parse_mode=ParseMode.HTML)
|
||||
|
||||
|
||||
async def main():
|
||||
await dp.start_polling(bot)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
asyncio.run(main())
|
41
examples/middleware_for_router/main.py
Normal file
41
examples/middleware_for_router/main.py
Normal file
@@ -0,0 +1,41 @@
|
||||
import asyncio
|
||||
import logging
|
||||
|
||||
from typing import Any, Dict
|
||||
|
||||
from maxapi import Bot, Dispatcher
|
||||
from maxapi.types import MessageCreated, Command, UpdateUnion
|
||||
from maxapi.filters.middleware import BaseMiddleware
|
||||
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
bot = Bot(token='тут_ваш_токен')
|
||||
dp = Dispatcher()
|
||||
|
||||
|
||||
class CustomDataForRouterMiddleware(BaseMiddleware):
|
||||
async def __call__(
|
||||
self,
|
||||
event: UpdateUnion,
|
||||
data: Dict[str, Any]
|
||||
):
|
||||
|
||||
data['custom_data'] = f'Это ID того кто вызвал команду: {event.from_user.user_id}'
|
||||
|
||||
return data
|
||||
|
||||
|
||||
@dp.message_created(Command('custom_data'))
|
||||
async def custom_data(event: MessageCreated, custom_data: str):
|
||||
await event.message.answer(custom_data)
|
||||
|
||||
|
||||
async def main():
|
||||
dp.middlewares = [
|
||||
CustomDataForRouterMiddleware()
|
||||
]
|
||||
await dp.start_polling(bot)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
asyncio.run(main())
|
59
examples/middleware_in_handlers/main.py
Normal file
59
examples/middleware_in_handlers/main.py
Normal file
@@ -0,0 +1,59 @@
|
||||
import asyncio
|
||||
import logging
|
||||
|
||||
from typing import Any, Dict
|
||||
|
||||
from maxapi import Bot, Dispatcher
|
||||
from maxapi.filters.middleware import BaseMiddleware
|
||||
from maxapi.types import MessageCreated, Command, UpdateUnion
|
||||
from maxapi.types.command import Command
|
||||
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
bot = Bot(token='тут_ваш_токен')
|
||||
dp = Dispatcher()
|
||||
|
||||
|
||||
class CheckChatTitleMiddleware(BaseMiddleware):
|
||||
async def __call__(
|
||||
self,
|
||||
event: UpdateUnion,
|
||||
):
|
||||
|
||||
return event.chat.title == 'MAXApi'
|
||||
|
||||
|
||||
@dp.message_created(Command('start'), CheckChatTitleMiddleware())
|
||||
async def start(event: MessageCreated):
|
||||
await event.message.answer('Это сообщение было отправлено, так как ваш чат называется "MAXApi"!')
|
||||
|
||||
|
||||
class CustomDataMiddleware(BaseMiddleware):
|
||||
async def __call__(
|
||||
self,
|
||||
event: UpdateUnion,
|
||||
data: Dict[str, Any]
|
||||
):
|
||||
|
||||
data['custom_data'] = f'Это ID того кто вызвал команду: {event.from_user.user_id}'
|
||||
|
||||
return data
|
||||
|
||||
|
||||
@dp.message_created(Command('custom_data'), CustomDataMiddleware())
|
||||
async def custom_data(event: MessageCreated, custom_data: str):
|
||||
await event.message.answer(custom_data)
|
||||
|
||||
|
||||
@dp.message_created(Command('many_middlewares'), CheckChatTitleMiddleware(), CustomDataMiddleware())
|
||||
async def many_middlewares(event: MessageCreated, custom_data: str):
|
||||
await event.message.answer('Это сообщение было отправлено, так как ваш чат называется "MAXApi"!')
|
||||
await event.message.answer(custom_data)
|
||||
|
||||
|
||||
async def main():
|
||||
await dp.start_polling(bot)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
asyncio.run(main())
|
Reference in New Issue
Block a user