mirror of
https://github.com/MrSedan/neuro-reply-bot-reworked.git
synced 2026-01-14 21:49:42 +03:00
Refactoring: handlers now implemented as classes. Module structure
This commit is contained in:
49
handlers/message_handlers/info_command.py
Normal file
49
handlers/message_handlers/info_command.py
Normal file
@@ -0,0 +1,49 @@
|
||||
from typing import List
|
||||
|
||||
from aiogram import types
|
||||
from aiogram.filters import Command
|
||||
|
||||
import neuroapi.types as neuroTypes
|
||||
from neuroapi import neuroapi
|
||||
|
||||
from .handler import MessageHandlerABC
|
||||
|
||||
|
||||
class InfoCommand(MessageHandlerABC):
|
||||
filter = Command('info')
|
||||
|
||||
async def _command(self, message: types.Message):
|
||||
posts: List[neuroTypes.Post] = await neuroapi.post.get_will_post()
|
||||
admins: List[neuroTypes.Admin] = await neuroapi.admin.get()
|
||||
post_c = {}
|
||||
k = 1
|
||||
for post in posts:
|
||||
if post.from_user_id not in post_c:
|
||||
post_c[post.from_user_id] = 1
|
||||
else:
|
||||
post_c[post.from_user_id] += 1
|
||||
res = "Количество постов от админов:\n"
|
||||
res2 = "\nПосты:\n"
|
||||
posts_entities: List[types.MessageEntity] = []
|
||||
for admin in admins:
|
||||
if admin.user_id in post_c:
|
||||
res += f'[{admin.user_name}](tg://user?id={admin.user_id}): {post_c[admin.user_id]}\n'
|
||||
else:
|
||||
res += f'[{admin.user_name}](tg://user?id={admin.user_id}): 0\n'
|
||||
admin_posts = list(
|
||||
filter(lambda x: x.from_user_id == admin.user_id, posts))
|
||||
res2 += f'\nПосты от {admin.user_name}:\n'
|
||||
if len(admin_posts):
|
||||
for i, post in enumerate(admin_posts):
|
||||
# TODO: Если возможно, сделать чтоб было ссылкой на сообщений с /newpost
|
||||
s = f'{i+1}.({posts.index(post)+1}) {post.text}\n'
|
||||
k+=1
|
||||
res2 += s
|
||||
for entity in post.message_entities:
|
||||
entity.offset += 6+res2.index(s)
|
||||
posts_entities.append(entity)
|
||||
else:
|
||||
res2 += 'Их нет)\n'
|
||||
await message.answer(res.replace('#', '\#').replace(
|
||||
"_", "\_").replace('.', '\.').replace(',', '\,').replace('!', '\!').replace('-', '\-').replace(':', '\:').replace('+', '\+'), parse_mode='markdownv2')
|
||||
await message.answer(res2, entities=posts_entities)
|
||||
Reference in New Issue
Block a user