mirror of
https://github.com/nexus-stc/hyperboria
synced 2025-01-10 02:35:53 +01:00
55 lines
1.9 KiB
Python
55 lines
1.9 KiB
Python
|
from library.telegram.base import RequestContext
|
||
|
from nexus.bot.widgets.document_list_widget import DocumentListWidget
|
||
|
from nexus.translations import t
|
||
|
from telethon import events
|
||
|
|
||
|
from .base import BaseHandler
|
||
|
|
||
|
|
||
|
class TopMissedHandler(BaseHandler):
|
||
|
filter = events.NewMessage(incoming=True, pattern='^/tm$')
|
||
|
is_group_handler = False
|
||
|
should_reset_last_widget = False
|
||
|
|
||
|
async def do_request(self, request_context: RequestContext, session_id: str, message_id: int, page: int):
|
||
|
response = await self.application.meta_api_client.top_missed(
|
||
|
page=page,
|
||
|
page_size=10,
|
||
|
session_id=session_id,
|
||
|
request_id=request_context.request_id,
|
||
|
)
|
||
|
document_list_widget = DocumentListWidget(
|
||
|
application=self.application,
|
||
|
chat=request_context.chat,
|
||
|
typed_documents=response.typed_documents,
|
||
|
cmd='tm',
|
||
|
has_next=response.has_next,
|
||
|
session_id=session_id,
|
||
|
message_id=message_id,
|
||
|
request_id=request_context.request_id,
|
||
|
page=page,
|
||
|
)
|
||
|
serp, buttons = await document_list_widget.render()
|
||
|
return await self.application.telegram_client.edit_message(
|
||
|
request_context.chat.chat_id,
|
||
|
message_id,
|
||
|
serp,
|
||
|
buttons=buttons,
|
||
|
link_preview=False,
|
||
|
)
|
||
|
|
||
|
async def handler(self, event, request_context: RequestContext):
|
||
|
session_id = self.generate_session_id()
|
||
|
request_context.add_default_fields(mode='top_missed', session_id=session_id)
|
||
|
request_context.statbox()
|
||
|
|
||
|
prefetch_message = await event.reply(t("SEARCHING", language=request_context.chat.language))
|
||
|
message_id = prefetch_message.id
|
||
|
|
||
|
return await self.do_request(
|
||
|
request_context=request_context,
|
||
|
session_id=session_id,
|
||
|
message_id=message_id,
|
||
|
page=0,
|
||
|
)
|