forked from sh-edraft.de/sh_discord_bot
		
	Added logic to get discord servers #72
This commit is contained in:
		| @@ -10,7 +10,6 @@ | ||||
|     "DatabaseModule": true, | ||||
|     "ModeratorModule": true, | ||||
|     "PermissionModule": true, | ||||
|     "PresenceModule": true, | ||||
|     "ApiOnly": true | ||||
|     "PresenceModule": true | ||||
|   } | ||||
| } | ||||
|   | ||||
							
								
								
									
										0
									
								
								kdb-bot/src/bot_api/controller/discord/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								kdb-bot/src/bot_api/controller/discord/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										39
									
								
								kdb-bot/src/bot_api/controller/discord/server_controller.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								kdb-bot/src/bot_api/controller/discord/server_controller.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| from cpl_core.configuration import ConfigurationABC | ||||
| from cpl_core.environment import ApplicationEnvironmentABC | ||||
| from cpl_core.mailing import EMailClientABC, EMailClientSettings | ||||
| from cpl_translation import TranslatePipe | ||||
| from flask import Response, jsonify | ||||
|  | ||||
| from bot_api.api import Api | ||||
| from bot_api.logging.api_logger import ApiLogger | ||||
| from bot_api.route.route import Route | ||||
| from bot_api.service.discord_service import DiscordService | ||||
|  | ||||
|  | ||||
| class ServerController: | ||||
|     BasePath = f'/api/discord/server' | ||||
|  | ||||
|     def __init__( | ||||
|             self, | ||||
|             config: ConfigurationABC, | ||||
|             env: ApplicationEnvironmentABC, | ||||
|             logger: ApiLogger, | ||||
|             t: TranslatePipe, | ||||
|             api: Api, | ||||
|             mail_settings: EMailClientSettings, | ||||
|             mailer: EMailClientABC, | ||||
|             discord_service: DiscordService | ||||
|     ): | ||||
|         self._config = config | ||||
|         self._env = env | ||||
|         self._logger = logger | ||||
|         self._t = t | ||||
|         self._api = api | ||||
|         self._mail_settings = mail_settings | ||||
|         self._mailer = mailer | ||||
|         self._discord_service = discord_service | ||||
|  | ||||
|     @Route.get(f'{BasePath}/servers') | ||||
|     @Route.authorize | ||||
|     async def get_all_servers(self) -> Response: | ||||
|         return jsonify(self._discord_service.get_all_servers().select(lambda x: x.to_dict())) | ||||
							
								
								
									
										0
									
								
								kdb-bot/src/bot_api/event/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								kdb-bot/src/bot_api/event/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								kdb-bot/src/bot_api/model/discord/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								kdb-bot/src/bot_api/model/discord/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										49
									
								
								kdb-bot/src/bot_api/model/discord/server_dto.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								kdb-bot/src/bot_api/model/discord/server_dto.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | ||||
| from bot_api.abc.dto_abc import DtoABC | ||||
|  | ||||
|  | ||||
| class ServerDTO(DtoABC): | ||||
|  | ||||
|     def __init__( | ||||
|             self, | ||||
|             server_id: int, | ||||
|             discord_id: int, | ||||
|             name: str, | ||||
|             member_count: int | ||||
|  | ||||
|     ): | ||||
|         DtoABC.__init__(self) | ||||
|  | ||||
|         self._server_id = server_id | ||||
|         self._discord_id = discord_id | ||||
|         self._name = name | ||||
|         self._member_count = member_count | ||||
|          | ||||
|     @property | ||||
|     def server_id(self) -> int: | ||||
|         return self._server_id | ||||
|      | ||||
|     @property | ||||
|     def discord_id(self) -> int: | ||||
|         return self._discord_id | ||||
|      | ||||
|     @property | ||||
|     def name(self) -> str: | ||||
|         return self._name | ||||
|      | ||||
|     @property | ||||
|     def member_count(self) -> int: | ||||
|         return self._member_count | ||||
|  | ||||
|     def from_dict(self, values: dict): | ||||
|         self._server_id = int(values['serverId']) | ||||
|         self._discord_id = int(values['discordId']) | ||||
|         self._name = values['name'] | ||||
|         self._member_count = int(values['memberCount']) | ||||
|  | ||||
|     def to_dict(self) -> dict: | ||||
|         return { | ||||
|             'serverId': self._server_id, | ||||
|             'discordId': self._discord_id, | ||||
|             'name': self._name, | ||||
|             'memberCount': self._member_count, | ||||
|         } | ||||
							
								
								
									
										23
									
								
								kdb-bot/src/bot_api/service/discord_service.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								kdb-bot/src/bot_api/service/discord_service.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| from cpl_discord.service import DiscordBotServiceABC | ||||
| from cpl_query.extension import List | ||||
|  | ||||
| from bot_api.model.discord.server_dto import ServerDTO | ||||
| from bot_api.transformer.server_transformer import ServerTransformer | ||||
| from bot_data.abc.server_repository_abc import ServerRepositoryABC | ||||
|  | ||||
|  | ||||
| class DiscordService: | ||||
|  | ||||
|     def __init__( | ||||
|             self, | ||||
|             bot: DiscordBotServiceABC, | ||||
|             servers: ServerRepositoryABC, | ||||
|     ): | ||||
|         self._bot = bot | ||||
|         self._servers = servers | ||||
|  | ||||
|     def get_all_servers(self) -> List[ServerDTO]: | ||||
|         servers = self._servers.get_servers().select() | ||||
|         return servers.select( | ||||
|             lambda x: ServerTransformer.to_dto(x, self._bot.get_guild(x.discord_server_id).name, self._bot.get_guild(x.discord_server_id).member_count) | ||||
|         ) | ||||
							
								
								
									
										19
									
								
								kdb-bot/src/bot_api/transformer/server_transformer.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								kdb-bot/src/bot_api/transformer/server_transformer.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| from bot_api.abc.transformer_abc import TransformerABC | ||||
| from bot_api.model.discord.server_dto import ServerDTO | ||||
| from bot_data.model.server import Server | ||||
|  | ||||
|  | ||||
| class ServerTransformer(TransformerABC): | ||||
|  | ||||
|     @staticmethod | ||||
|     def to_db(dto: ServerDTO) -> Server: | ||||
|         return Server(dto.discord_id) | ||||
|  | ||||
|     @staticmethod | ||||
|     def to_dto(db: Server, name: str, member_count: int) -> ServerDTO: | ||||
|         return ServerDTO( | ||||
|             db.server_id, | ||||
|             db.discord_server_id, | ||||
|             name, | ||||
|             member_count, | ||||
|         ) | ||||
		Reference in New Issue
	
	Block a user