Formatted files with black

This commit is contained in:
2023-01-13 23:35:42 +01:00
parent 37ec0cf0c7
commit e2b2fb5abb
252 changed files with 6085 additions and 3791 deletions

View File

@@ -11,16 +11,16 @@ Discord bot for the Keksdose discord Server
"""
__title__ = 'modules.permission'
__author__ = 'Sven Heidemann'
__license__ = 'MIT'
__copyright__ = 'Copyright (c) 2022 sh-edraft.de'
__version__ = '0.3.0'
__title__ = "modules.permission"
__author__ = "Sven Heidemann"
__license__ = "MIT"
__copyright__ = "Copyright (c) 2022 sh-edraft.de"
__version__ = "0.3.0"
from collections import namedtuple
# imports:
# imports:
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major='0', minor='3', micro='0')
VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="0", minor="3", micro="0")

View File

@@ -11,16 +11,16 @@ Discord bot for the Keksdose discord Server
"""
__title__ = 'modules.permission.abc'
__author__ = 'Sven Heidemann'
__license__ = 'MIT'
__copyright__ = 'Copyright (c) 2022 sh-edraft.de'
__version__ = '0.3.0'
__title__ = "modules.permission.abc"
__author__ = "Sven Heidemann"
__license__ = "MIT"
__copyright__ = "Copyright (c) 2022 sh-edraft.de"
__version__ = "0.3.0"
from collections import namedtuple
# imports
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major='0', minor='3', micro='0')
VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="0", minor="3", micro="0")

View File

@@ -4,42 +4,54 @@ import discord
class PermissionServiceABC(ABC):
@abstractmethod
def __init__(self):
pass
@abstractmethod
def __init__(self): pass
def on_ready(self):
pass
@abstractmethod
def on_ready(self): pass
def on_member_update(self, before: discord.Member, after: discord.Member):
pass
@abstractmethod
def on_member_update(self, before: discord.Member, after: discord.Member): pass
def get_admin_role_ids(self, g_id: int) -> list[int]:
pass
@abstractmethod
def get_admin_role_ids(self, g_id: int) -> list[int]: pass
def get_admin_roles(self, g_id: int) -> list[discord.Role]:
pass
@abstractmethod
def get_admin_roles(self, g_id: int) -> list[discord.Role]: pass
def get_admins(self, g_id: int) -> list[discord.Member]:
pass
@abstractmethod
def get_admins(self, g_id: int) -> list[discord.Member]: pass
def get_moderator_role_ids(self, g_id: int) -> list[int]:
pass
@abstractmethod
def get_moderator_role_ids(self, g_id: int) -> list[int]: pass
def get_moderator_roles(self, g_id: int) -> list[discord.Role]:
pass
@abstractmethod
def get_moderator_roles(self, g_id: int) -> list[discord.Role]: pass
def get_moderators(self, g_id: int) -> list[discord.Member]:
pass
@abstractmethod
def get_moderators(self, g_id: int) -> list[discord.Member]: pass
def get_technicians(self) -> list[discord.Member]:
pass
@abstractmethod
def get_technicians(self) -> list[discord.Member]: pass
def is_member_admin(self, member: discord.Member) -> bool:
pass
@abstractmethod
def is_member_admin(self, member: discord.Member) -> bool: pass
def is_member_moderator(self, member: discord.Member) -> bool:
pass
@abstractmethod
def is_member_moderator(self, member: discord.Member) -> bool: pass
@abstractmethod
def is_member_technician(self, member: discord.Member) -> bool: pass
def is_member_technician(self, member: discord.Member) -> bool:
pass

View File

@@ -11,16 +11,16 @@ Discord bot for the Keksdose discord Server
"""
__title__ = 'modules.permission.configuration'
__author__ = 'Sven Heidemann'
__license__ = 'MIT'
__copyright__ = 'Copyright (c) 2022 sh-edraft.de'
__version__ = '0.3.0'
__title__ = "modules.permission.configuration"
__author__ = "Sven Heidemann"
__license__ = "MIT"
__copyright__ = "Copyright (c) 2022 sh-edraft.de"
__version__ = "0.3.0"
from collections import namedtuple
# imports
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major='0', minor='3', micro='0')
VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="0", minor="3", micro="0")

View File

@@ -5,7 +5,6 @@ from cpl_core.console import Console
class PermissionServerSettings(ConfigurationModelABC):
def __init__(self):
ConfigurationModelABC.__init__(self)
@@ -27,12 +26,16 @@ class PermissionServerSettings(ConfigurationModelABC):
def from_dict(self, settings: dict):
try:
self._id = int(settings['Id'])
for index in settings['AdminRoleIds']:
self._id = int(settings["Id"])
for index in settings["AdminRoleIds"]:
self._admin_roles.append(int(index))
for index in settings['ModeratorRoleIds']:
for index in settings["ModeratorRoleIds"]:
self._moderator_roles.append(int(index))
except Exception as e:
Console.error(f'[ ERROR ] [ {__name__} ]: Reading error in {self.__name__} settings')
Console.error(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}')
Console.error(
f"[ ERROR ] [ {__name__} ]: Reading error in {self.__name__} settings"
)
Console.error(
f"[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}"
)

View File

@@ -4,11 +4,12 @@ from cpl_core.configuration.configuration_model_abc import ConfigurationModelABC
from cpl_core.console import Console
from cpl_query.extension import List
from modules.permission.configuration.permission_server_settings import PermissionServerSettings
from modules.permission.configuration.permission_server_settings import (
PermissionServerSettings,
)
class PermissionSettings(ConfigurationModelABC):
def __init__(self):
ConfigurationModelABC.__init__(self)
@@ -23,10 +24,14 @@ class PermissionSettings(ConfigurationModelABC):
servers = List(PermissionServerSettings)
for s in settings:
st = PermissionServerSettings()
settings[s]['Id'] = s
settings[s]["Id"] = s
st.from_dict(settings[s])
servers.append(st)
self._servers = servers
except Exception as e:
Console.error(f'[ ERROR ] [ {__name__} ]: Reading error in {type(self).__name__} settings')
Console.error(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}')
Console.error(
f"[ ERROR ] [ {__name__} ]: Reading error in {type(self).__name__} settings"
)
Console.error(
f"[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}"
)

View File

@@ -11,16 +11,16 @@ Discord bot for the Keksdose discord Server
"""
__title__ = 'modules.permission.events'
__author__ = 'Sven Heidemann'
__license__ = 'MIT'
__copyright__ = 'Copyright (c) 2022 sh-edraft.de'
__version__ = '0.3.0'
__title__ = "modules.permission.events"
__author__ = "Sven Heidemann"
__license__ = "MIT"
__copyright__ = "Copyright (c) 2022 sh-edraft.de"
__version__ = "0.3.0"
from collections import namedtuple
# imports:
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major='0', minor='3', micro='0')
VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="0", minor="3", micro="0")

View File

@@ -6,14 +6,13 @@ from modules.permission.abc.permission_service_abc import PermissionServiceABC
class PermissionOnMemberUpdateEvent(OnMemberUpdateABC):
def __init__(self, logger: LoggerABC, permission_service: PermissionServiceABC):
OnMemberUpdateABC.__init__(self)
self._logger = logger
self._permission_service = permission_service
async def on_member_update(self, before: discord.Member, after: discord.Member):
self._logger.debug(__name__, f'Module {type(self)} started')
self._logger.debug(__name__, f"Module {type(self)} started")
if before.roles != after.roles:
self._permission_service.on_member_update(before, after)

View File

@@ -5,12 +5,11 @@ from modules.permission.abc.permission_service_abc import PermissionServiceABC
class PermissionOnReadyEvent(OnReadyABC):
def __init__(self, logger: LoggerABC, permission_service: PermissionServiceABC):
OnReadyABC.__init__(self)
self._logger = logger
self._permission_service = permission_service
async def on_ready(self):
self._logger.debug(__name__, f'Module {type(self)} started')
self._logger.debug(__name__, f"Module {type(self)} started")
self._permission_service.on_ready()

View File

@@ -7,22 +7,29 @@ from cpl_discord.service.discord_collection_abc import DiscordCollectionABC
from bot_core.abc.module_abc import ModuleABC
from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum
from modules.permission.abc.permission_service_abc import PermissionServiceABC
from modules.permission.events.permission_on_member_update_event import PermissionOnMemberUpdateEvent
from modules.permission.events.permission_on_member_update_event import (
PermissionOnMemberUpdateEvent,
)
from modules.permission.events.permission_on_ready_event import PermissionOnReadyEvent
from modules.permission.service.permission_service import PermissionService
class PermissionModule(ModuleABC):
def __init__(self, dc: DiscordCollectionABC):
ModuleABC.__init__(self, dc, FeatureFlagsEnum.permission_module)
def configure_configuration(self, config: ConfigurationABC, env: ApplicationEnvironmentABC):
def configure_configuration(
self, config: ConfigurationABC, env: ApplicationEnvironmentABC
):
pass
def configure_services(self, services: ServiceCollectionABC, env: ApplicationEnvironmentABC):
def configure_services(
self, services: ServiceCollectionABC, env: ApplicationEnvironmentABC
):
services.add_singleton(PermissionServiceABC, PermissionService)
# commands
# events
self._dc.add_event(DiscordEventTypesEnum.on_ready.value, PermissionOnReadyEvent)
self._dc.add_event(DiscordEventTypesEnum.on_member_update.value, PermissionOnMemberUpdateEvent)
self._dc.add_event(
DiscordEventTypesEnum.on_member_update.value, PermissionOnMemberUpdateEvent
)

View File

@@ -11,16 +11,16 @@ Discord bot for the Keksdose discord Server
"""
__title__ = 'modules.permission.service'
__author__ = 'Sven Heidemann'
__license__ = 'MIT'
__copyright__ = 'Copyright (c) 2022 sh-edraft.de'
__version__ = '0.3.0'
__title__ = "modules.permission.service"
__author__ = "Sven Heidemann"
__license__ = "MIT"
__copyright__ = "Copyright (c) 2022 sh-edraft.de"
__version__ = "0.3.0"
from collections import namedtuple
# imports
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major='0', minor='3', micro='0')
VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="0", minor="3", micro="0")

View File

@@ -5,17 +5,18 @@ from cpl_discord.service import DiscordBotServiceABC
from bot_core.configuration.bot_settings import BotSettings
from modules.permission.abc.permission_service_abc import PermissionServiceABC
from modules.permission.configuration.permission_server_settings import PermissionServerSettings
from modules.permission.configuration.permission_server_settings import (
PermissionServerSettings,
)
class PermissionService(PermissionServiceABC):
def __init__(
self,
logger: LoggerABC,
bot: DiscordBotServiceABC,
config: ConfigurationABC,
bot_settings: BotSettings
self,
logger: LoggerABC,
bot: DiscordBotServiceABC,
config: ConfigurationABC,
bot_settings: BotSettings,
):
PermissionServiceABC.__init__(self)
self._logger = logger
@@ -36,7 +37,7 @@ class PermissionService(PermissionServiceABC):
def on_ready(self):
for guild in self._bot.guilds:
guild: discord.Guild = guild
self._logger.debug(__name__, f'Validate permission settings')
self._logger.debug(__name__, f"Validate permission settings")
for technician_id in self._technician_ids:
technician = guild.get_member(technician_id)
@@ -44,9 +45,11 @@ class PermissionService(PermissionServiceABC):
continue
self._technicians.append(technician)
settings: PermissionServerSettings = self._config.get_configuration(f'PermissionServerSettings_{guild.id}')
settings: PermissionServerSettings = self._config.get_configuration(
f"PermissionServerSettings_{guild.id}"
)
if settings is None:
self._logger.error(__name__, 'Permission settings not found')
self._logger.error(__name__, "Permission settings not found")
return
self._admin_role_ids[guild.id] = settings.admin_roles
@@ -63,19 +66,19 @@ class PermissionService(PermissionServiceABC):
if role.id in self._admin_role_ids[guild.id]:
admin_roles.append(role)
self._logger.trace(__name__, f'Added admin role {role}')
self._logger.trace(__name__, f"Added admin role {role}")
for member in role.members:
admins.append(member)
self._logger.trace(__name__, f'Added admin {member}')
self._logger.trace(__name__, f"Added admin {member}")
if role.id in self._moderator_role_ids[guild.id]:
mod_roles.append(role)
self._logger.trace(__name__, f'Added moderator role {role}')
self._logger.trace(__name__, f"Added moderator role {role}")
for member in role.members:
mods.append(member)
self._logger.trace(__name__, f'Added moderator {member}')
self._logger.trace(__name__, f"Added moderator {member}")
self._admin_roles[guild.id] = admin_roles
self._admins[guild.id] = admins
@@ -88,20 +91,20 @@ class PermissionService(PermissionServiceABC):
for admin_role in self._admin_roles[g_id]:
if admin_role in before.roles and admin_role not in after.roles:
self._admins[g_id].remove(after)
self._logger.trace(__name__, f'Removed {after.id} from admins')
self._logger.trace(__name__, f"Removed {after.id} from admins")
elif admin_role in after.roles and admin_role not in before.roles:
self._admins[g_id].append(after)
self._logger.trace(__name__, f'Added {after.id} to admins')
self._logger.trace(__name__, f"Added {after.id} to admins")
for moderator_role in self._moderator_roles[g_id]:
if moderator_role in before.roles and moderator_role not in after.roles:
self._moderators[g_id].remove(after)
self._logger.trace(__name__, f'Removed {after.id} from moderators')
self._logger.trace(__name__, f"Removed {after.id} from moderators")
elif moderator_role in after.roles and moderator_role not in before.roles:
self._moderators[g_id].append(after)
self._logger.trace(__name__, f'Added {after.id} to moderators')
self._logger.trace(__name__, f"Added {after.id} to moderators")
def get_admin_role_ids(self, g_id: int) -> list[int]:
return self._admin_role_ids[g_id]
@@ -125,10 +128,16 @@ class PermissionService(PermissionServiceABC):
return self._technicians
def is_member_admin(self, member: discord.Member) -> bool:
return member.guild.id in self._admins and member in self._admins[member.guild.id]
return (
member.guild.id in self._admins and member in self._admins[member.guild.id]
)
def is_member_moderator(self, member: discord.Member) -> bool:
return member.guild.id in self._moderators and member in self._moderators[member.guild.id] or self.is_member_admin(member)
return (
member.guild.id in self._moderators
and member in self._moderators[member.guild.id]
or self.is_member_admin(member)
)
def is_member_technician(self, member: discord.Member) -> bool:
return member in self._technicians