From 095bd828cf5fee56b709712e655d18542d858daa Mon Sep 17 00:00:00 2001 From: T-BENZIN Date: Sun, 17 Aug 2025 15:20:32 +0500 Subject: [PATCH] Added client message builder --- .../messenger_clients/messenger_client.py | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 reginaldCog/messenger_clients/messenger_client.py diff --git a/reginaldCog/messenger_clients/messenger_client.py b/reginaldCog/messenger_clients/messenger_client.py new file mode 100644 index 0000000..936e281 --- /dev/null +++ b/reginaldCog/messenger_clients/messenger_client.py @@ -0,0 +1,80 @@ +from abc import ABC, abstractmethod +from enum import Enum +from discord import Message + + +class IClientMessage(ABC): + @abstractmethod + def __init__(self): + pass + + +class ClientMessage(IClientMessage): + def __init__(self): + self.author_name: str = '' + self.content: str = '' + self.image_urls: list = [] + + +class IMessageBuilder(ABC): + + def create_message(self) -> ClientMessage: + self.set_content() \ + .set_author_name() \ + .set_image_urls() + return self.message + + @abstractmethod + def set_content(self): + pass + + @abstractmethod + def set_author_name(self): + pass + + @abstractmethod + def set_image_urls(self): + pass + + +class DiscordMessageBuilder(IMessageBuilder): + def __init__(self, raw_message: Message): + self.raw_message = raw_message + self.message = ClientMessage() + + def create_message(self) -> ClientMessage: + return super().create_message() + + def set_author_name(self) -> 'DiscordMessageBuilder': + self.message.author_name = self.raw_message.author.name + return self + + def set_content(self) -> 'DiscordMessageBuilder': + self.message.content = self.raw_message.content + return self + + def set_image_urls(self) -> 'DiscordMessageBuilder': + self.message.image_urls = [ + i.url + for i in self.raw_message.attachments + if i.content_type in ('image/jpeg', 'image/png', 'image/webp', 'image/gif') + ] + return self + + +class MessengerTypes(Enum): + DISCORD = DiscordMessageBuilder + + +if __name__ == "__main__": + class TestAuthor: + name = 'John Doe' + + + class TestMessage: + content = 'Hello!' + author = TestAuthor() + + + message = DiscordMessageBuilder(raw_message=TestMessage).create_message() + print(message.__dict__)