fix-graph

This commit is contained in:
2023-09-18 14:26:42 +03:00
parent 19d0984466
commit 9bb5282307
5 changed files with 69 additions and 50 deletions

View File

@@ -1,10 +1,13 @@
## [0.0.12] ## [0.0.12]
- множество исправлений в роутинге сообщений
- исправления в коммандах /ask и /my - исправления в коммандах /ask и /my
- исправление обработки случая без фото - исправление обработки случая без фото
- добавлен автомат состояний - добавлен автомат состояний
- добавлена возможность высказаться "на кругу" без одобрения заявки - добавлена возможность высказаться "на кругу" без одобрения заявки
- асинхронное api - асинхронное api
## [0.0.11] ## [0.0.11]
- отображение одобренности заявки на кнопке - отображение одобренности заявки на кнопке
@@ -25,6 +28,7 @@
- исправлены ошибки - исправлены ошибки
- добавлена сервисная команда для показа потерянных заявок - добавлена сервисная команда для показа потерянных заявок
## [0.0.9] ## [0.0.9]
- исправление логики show_request_msg - исправление логики show_request_msg
@@ -33,6 +37,7 @@
- kick для тех, от кого отказались поручители - kick для тех, от кого отказались поручители
- bugfix: нестандартные символы в имени - bugfix: нестандартные символы в имени
## [0.0.8] ## [0.0.8]
- генерация древовидного графа, с опорой на одного участника - генерация древовидного графа, с опорой на одного участника

View File

@@ -42,6 +42,6 @@ async def handle_left(msg):
# удаление сообщения с кнопкой в этом чате # удаление сообщения с кнопкой в этом чате
prev_msg = storage.get(f"btn-{chat_id}-{member_id}") prev_msg = storage.get(f"btn-{chat_id}-{member_id}")
if prev_msg: if prev_msg:
r = await delete_message(chat_id, prev_msg["id"]) r = await delete_message(chat_id, prev_msg["message_id"])
logger.debug(r) logger.debug(r)
storage.remove(f"btn-{chat_id}-{member_id}") storage.remove(f"btn-{chat_id}-{member_id}")

View File

@@ -1,4 +1,4 @@
from bot.config import FEEDBACK_CHAT_ID from config import FEEDBACK_CHAT_ID
from storage import scan, Profile from storage import scan, Profile
from api import approve_chat_join_request, kick_member, send_message from api import approve_chat_join_request, kick_member, send_message
from handlers.callback_vouch import update_button from handlers.callback_vouch import update_button

View File

@@ -5,7 +5,8 @@ import signal # Import the signal module
from aiogram import Bot, Dispatcher, Router from aiogram import Bot, Dispatcher, Router
from aiogram.enums import ParseMode from aiogram.enums import ParseMode
from aiogram.filters import CommandStart, Command from aiogram.filters import CommandStart, Command
from aiogram.types import Message, ChatJoinRequest, CallbackQuery, ChatMemberUpdated, ChatMemberLeft from aiogram.types import Message, ChatJoinRequest, CallbackQuery, ChatMemberUpdated, ChatMemberLeft, ChatMemberBanned
from aiogram.enums import ChatMemberStatus
from config import BOT_TOKEN from config import BOT_TOKEN
from handlers.routing import handle_routing from handlers.routing import handle_routing
from handlers.callback_unlink import handle_unlink from handlers.callback_unlink import handle_unlink
@@ -66,15 +67,16 @@ async def chat_members_change(update: ChatMemberUpdated):
msg["chat"] = vars(update.chat) msg["chat"] = vars(update.chat)
msg["from"] = vars(update.from_user) msg["from"] = vars(update.from_user)
logger.debug(msg) logger.debug(msg)
if update.old_chat_member == ChatMemberLeft: if update.old_chat_member.status == ChatMemberStatus.KICKED:
# был забанен, удаляем все поручения
await handle_left(msg) await handle_left(msg)
else: else:
await handle_join(msg) await handle_join(msg)
async def main() -> None: async def main() -> None:
# connect router
dp.include_router(router) dp.include_router(router)
# storage revalidation # storage revalidation
await handle_startup() await handle_startup()
# Start event dispatching # Start event dispatching

View File

@@ -1,3 +1,8 @@
import logging
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)
# Define SVG code generation function with member_id parameter # Define SVG code generation function with member_id parameter
def generate_chart(members, member_id=None): def generate_chart(members, member_id=None):
if not member_id: if not member_id:
@@ -18,6 +23,8 @@ def generate_chart(members, member_id=None):
descendants.add(member_id) descendants.add(member_id)
break break
# calculate only if links are founded
if member:
stack = member["children"].copy() stack = member["children"].copy()
while stack: while stack:
child_id = stack.pop() child_id = stack.pop()
@@ -65,3 +72,8 @@ def generate_chart(members, member_id=None):
svg_code += "</svg>" svg_code += "</svg>"
return svg_code.encode("utf-8") return svg_code.encode("utf-8")
else:
logger.error(f"no connections in graph for {member_id}")
logger.debug(members)
return ""