Formatted files with black
This commit is contained in:
@@ -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")
|
||||
|
@@ -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")
|
||||
|
@@ -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
|
||||
|
@@ -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")
|
||||
|
@@ -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()}"
|
||||
)
|
||||
|
@@ -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()}"
|
||||
)
|
||||
|
@@ -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")
|
||||
|
@@ -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)
|
||||
|
@@ -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()
|
||||
|
@@ -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
|
||||
)
|
||||
|
@@ -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")
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user