Improved sorting #130

This commit is contained in:
2023-02-17 19:15:03 +01:00
parent fea259fa3b
commit dfe4f28e24
20 changed files with 146 additions and 48 deletions

View File

@@ -2,6 +2,8 @@ from datetime import datetime
from typing import Optional
from cpl_core.database import TableABC
from cpl_core.dependency_injection import ServiceProviderABC
from cpl_discord.service import DiscordBotServiceABC
from bot_data.model.server import Server
@@ -10,7 +12,7 @@ class AutoRole(TableABC):
def __init__(
self,
server: Optional[Server],
dc_channel_id: int,
channel_id: int,
dc_message_id: int,
created_at: datetime = None,
modified_at: datetime = None,
@@ -18,7 +20,7 @@ class AutoRole(TableABC):
):
self._auto_role_id = id
self._server = server
self._discord_channel_id = dc_channel_id
self._discord_channel_id = channel_id
self._discord_message_id = dc_message_id
TableABC.__init__(self)
@@ -41,6 +43,12 @@ class AutoRole(TableABC):
def discord_channel_id(self, value: int):
self._discord_channel_id = value
@property
@ServiceProviderABC.inject
def discord_channel_name(self, bot: DiscordBotServiceABC) -> str:
channel = bot.get_channel(self.discord_channel_id)
return None if channel is None else channel.name
@property
def discord_message_id(self) -> int:
return self._discord_message_id

View File

@@ -1,6 +1,8 @@
from datetime import datetime
from cpl_core.database import TableABC
from cpl_core.dependency_injection import ServiceProviderABC
from cpl_discord.service import DiscordBotServiceABC
from bot_data.model.auto_role import AutoRole
@@ -44,6 +46,12 @@ class AutoRoleRule(TableABC):
def role_id(self) -> int:
return self._discord_role_id
@property
@ServiceProviderABC.inject
def role_name(self, bot: DiscordBotServiceABC) -> str:
guild = bot.get_guild(self.auto_role.server.discord_id)
return guild.get_role(self.role_id).name
@role_id.setter
def role_id(self, value: int):
self._discord_role_id = value

View File

@@ -1,6 +1,8 @@
from datetime import datetime
from cpl_core.database import TableABC
from cpl_core.dependency_injection import ServiceProviderABC
from cpl_discord.service import DiscordBotServiceABC
from bot_data.model.server import Server
@@ -40,6 +42,11 @@ class Client(TableABC):
def discord_id(self) -> int:
return self._discord_client_id
@property
@ServiceProviderABC.inject
def name(self, bot: DiscordBotServiceABC) -> str:
return bot.user.name
@property
def sent_message_count(self) -> int:
return self._sent_message_count

View File

@@ -1,6 +1,8 @@
from datetime import datetime
from cpl_core.database import TableABC
from cpl_core.dependency_injection import ServiceProviderABC
from cpl_discord.service import DiscordBotServiceABC
class Server(TableABC):
@@ -26,6 +28,18 @@ class Server(TableABC):
def discord_id(self) -> int:
return self._discord_server_id
@property
@ServiceProviderABC.inject
def name(self, bot: DiscordBotServiceABC) -> str:
guild = bot.get_guild(self.discord_id)
return None if guild is None else guild.name
@property
@ServiceProviderABC.inject
def icon_url(self, bot: DiscordBotServiceABC) -> str:
guild = bot.get_guild(self.discord_id)
return None if guild is None else guild.icon.url
@staticmethod
def get_select_all_string() -> str:
return str(

View File

@@ -2,7 +2,10 @@ from datetime import datetime
from typing import Optional
from cpl_core.database import TableABC
from cpl_core.dependency_injection import ServiceProviderABC
from cpl_discord.service import DiscordBotServiceABC
from bot_core.abc.client_utils_abc import ClientUtilsABC
from bot_data.model.server import Server
@@ -35,6 +38,20 @@ class User(TableABC):
def discord_id(self) -> int:
return self._discord_id
@property
@ServiceProviderABC.inject
def name(self, bot: DiscordBotServiceABC) -> str:
guild = bot.get_guild(self.server.discord_id)
user = guild.get_member(self.discord_id)
return None if user is None else user.name
@property
@ServiceProviderABC.inject
def icon_url(self, bot: DiscordBotServiceABC) -> str:
guild = bot.get_guild(self.server.discord_id)
user = guild.get_member(self.discord_id)
return None if user is None else user.display_icon
@property
def xp(self) -> int:
return self._xp
@@ -44,6 +61,19 @@ class User(TableABC):
self._modified_at = datetime.now().isoformat()
self._xp = value
@property
@ServiceProviderABC.inject
def ontime(self, client_utils: ClientUtilsABC) -> float:
return client_utils.get_ontime_for_user(self)
@property
@ServiceProviderABC.inject
def level(self, services: ServiceProviderABC) -> "Level":
from modules.level.service.level_service import LevelService
levels: LevelService = services.get_service(LevelService)
return levels.get_level(self)
@property
def minecraft_id(self) -> Optional[str]:
return self._minecraft_id

View File

@@ -1,6 +1,8 @@
from datetime import datetime
from cpl_core.database import TableABC
from cpl_core.dependency_injection import ServiceProviderABC
from cpl_discord.service import DiscordBotServiceABC
from bot_data.model.user import User
@@ -9,7 +11,7 @@ class UserJoinedVoiceChannel(TableABC):
def __init__(
self,
user: User,
dc_channel_id: int,
channel_id: int,
joined_on: datetime,
leaved_on: datetime = None,
created_at: datetime = None,
@@ -17,7 +19,7 @@ class UserJoinedVoiceChannel(TableABC):
id=0,
):
self._join_id = id
self._dc_channel_id = dc_channel_id
self._channel_id = channel_id
self._user = user
self._joined_on = joined_on
self._leaved_on = leaved_on
@@ -31,8 +33,13 @@ class UserJoinedVoiceChannel(TableABC):
return self._join_id
@property
def dc_channel_id(self) -> int:
return self._dc_channel_id
def channel_id(self) -> int:
return self._channel_id
@property
@ServiceProviderABC.inject
def channel_name(self, bot: DiscordBotServiceABC) -> str:
return bot.get_channel(self.channel_id).name
@property
def user(self) -> User:
@@ -101,7 +108,7 @@ class UserJoinedVoiceChannel(TableABC):
`UserId`, `DiscordChannelId`, `JoinedOn`, `LeavedOn`, `CreatedAt`, `LastModifiedAt`
) VALUES (
{self._user.id},
{self._dc_channel_id},
{self._channel_id},
'{self._joined_on}',
'{self._leaved_on}',
'{self._created_at}',
@@ -116,7 +123,7 @@ class UserJoinedVoiceChannel(TableABC):
`UserId`, `DiscordChannelId`, `JoinedOn`, `CreatedAt`, `LastModifiedAt`
) VALUES (
{self._user.id},
{self._dc_channel_id},
{self._channel_id},
'{self._joined_on}',
'{self._created_at}',
'{self._modified_at}'