mirror of
https://github.com/RafaelSolVargas/Vulkan.git
synced 2025-10-29 16:57:23 +00:00
66 lines
2.5 KiB
Python
66 lines
2.5 KiB
Python
from typing import Dict, List
|
|
from discord import Message
|
|
from Config.Singleton import Singleton
|
|
from Messages.MessagesCategory import MessagesCategory
|
|
|
|
|
|
class MessagesManager(Singleton):
|
|
def __init__(self) -> None:
|
|
if not super().created:
|
|
# For each guild, and for each category, there will be a list of messages
|
|
self.__guildsMessages: Dict[int, Dict[MessagesCategory, List[Message]]] = {}
|
|
|
|
def addMessage(self, guildID: int, category: MessagesCategory, message: Message) -> None:
|
|
if message is None:
|
|
return
|
|
|
|
# If guild not exists create Dict
|
|
if guildID not in self.__guildsMessages.keys():
|
|
self.__guildsMessages[guildID] = {}
|
|
# If category not in guild yet, add
|
|
if category not in self.__guildsMessages[guildID].keys():
|
|
self.__guildsMessages[guildID][category] = []
|
|
|
|
sendedMessages = self.__guildsMessages[guildID][category]
|
|
sendedMessages.append(message)
|
|
|
|
async def addMessageAndClearPrevious(self, guildID: int, category: MessagesCategory, message: Message) -> None:
|
|
if message is None:
|
|
return
|
|
|
|
# If guild not exists create Dict
|
|
if guildID not in self.__guildsMessages.keys():
|
|
self.__guildsMessages[guildID] = {}
|
|
# If category not in guild yet, add
|
|
if category not in self.__guildsMessages[guildID].keys():
|
|
self.__guildsMessages[guildID][category] = []
|
|
|
|
sendedMessages = self.__guildsMessages[guildID][category]
|
|
|
|
# Delete sended all messages of this category
|
|
for previousMessage in sendedMessages:
|
|
await self.__deleteMessage(previousMessage)
|
|
|
|
# Create a new list with only the new message
|
|
self.__guildsMessages[guildID][category] = [message]
|
|
|
|
async def clearMessagesOfCategory(self, guildID: int, category: MessagesCategory) -> None:
|
|
sendedMessages = self.__guildsMessages[guildID][category]
|
|
|
|
for message in sendedMessages:
|
|
self.__deleteMessage(message)
|
|
|
|
async def clearMessagesOfGuild(self, guildID: int) -> None:
|
|
categoriesMessages = self.__guildsMessages[guildID]
|
|
|
|
for category in categoriesMessages.keys():
|
|
for message in categoriesMessages[category]:
|
|
self.__deleteMessage(message)
|
|
|
|
async def __deleteMessage(self, message: Message) -> None:
|
|
try:
|
|
await message.delete()
|
|
except Exception as e:
|
|
print(f'[ERROR DELETING MESSAGE] -> {e}')
|
|
pass
|