forked from sh-edraft.de/sh_discord_bot
		
	Merge branch '0.3' into #27
# Conflicts: # kdb-bot/src/bot/translation/de.json
This commit is contained in:
		| @@ -5,13 +5,11 @@ | ||||
|       "bot": "src/bot/bot.json", | ||||
|       "bot-core": "src/bot_core/bot-core.json", | ||||
|       "bot-data": "src/bot_data/bot-data.json", | ||||
|       "admin": "src/modules/admin/admin.json", | ||||
|       "auto-role": "src/modules/auto_role/auto-role.json", | ||||
|       "base": "src/modules/base/base.json", | ||||
|       "boot-log": "src/modules/boot_log/boot-log.json", | ||||
|       "database": "src/modules/database/database.json", | ||||
|       "level": "src/modules/level/level.json", | ||||
|       "moderator": "src/modules/moderator/moderator.json", | ||||
|       "permission": "src/modules/permission/permission.json", | ||||
|       "bot-api": "src/bot_api/bot-api.json", | ||||
|       "get-version": "tools/get_version/get-version.json", | ||||
|   | ||||
| @@ -4,13 +4,11 @@ from bot_api.api_module import ApiModule | ||||
| from bot_core.core_extension.core_extension_module import CoreExtensionModule | ||||
| from bot_core.core_module import CoreModule | ||||
| from bot_data.data_module import DataModule | ||||
| from modules.admin.admin_module import AdminModule | ||||
| from modules.auto_role.auto_role_module import AutoRoleModule | ||||
| from modules.base.base_module import BaseModule | ||||
| from modules.boot_log.boot_log_module import BootLogModule | ||||
| from modules.database.database_module import DatabaseModule | ||||
| from modules.level.level_module import LevelModule | ||||
| from modules.moderator.moderator_module import ModeratorModule | ||||
| from modules.permission.permission_module import PermissionModule | ||||
|  | ||||
|  | ||||
| @@ -22,12 +20,10 @@ class ModuleList: | ||||
|         return List(type, [ | ||||
|             CoreModule,  # has to be first! | ||||
|             DataModule, | ||||
|             AdminModule, | ||||
|             AutoRoleModule, | ||||
|             BaseModule, | ||||
|             DatabaseModule, | ||||
|             LevelModule, | ||||
|             ModeratorModule, | ||||
|             PermissionModule, | ||||
|             ApiModule, | ||||
|             # has to be last! | ||||
|   | ||||
| @@ -1,26 +0,0 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
|  | ||||
| """ | ||||
| bot Keksdose bot | ||||
| ~~~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
| Discord bot  for the Keksdose discord Server | ||||
|  | ||||
| :copyright: (c) 2022 sh-edraft.de | ||||
| :license: MIT, see LICENSE for more details. | ||||
|  | ||||
| """ | ||||
|  | ||||
| __title__ = 'modules.admin' | ||||
| __author__ = 'Sven Heidemann' | ||||
| __license__ = 'MIT' | ||||
| __copyright__ = 'Copyright (c) 2022 sh-edraft.de' | ||||
| __version__ = '0.3.dev25' | ||||
|  | ||||
| from collections import namedtuple | ||||
|  | ||||
|  | ||||
| # imports:  | ||||
|  | ||||
| VersionInfo = namedtuple('VersionInfo', 'major minor micro') | ||||
| version_info = VersionInfo(major='0', minor='3', micro='dev25') | ||||
| @@ -1,44 +0,0 @@ | ||||
| { | ||||
|   "ProjectSettings": { | ||||
|     "Name": "admin", | ||||
|     "Version": { | ||||
|       "Major": "1", | ||||
|       "Minor": "0", | ||||
|       "Micro": "0" | ||||
|     }, | ||||
|     "Author": "", | ||||
|     "AuthorEmail": "", | ||||
|     "Description": "", | ||||
|     "LongDescription": "", | ||||
|     "URL": "", | ||||
|     "CopyrightDate": "", | ||||
|     "CopyrightName": "", | ||||
|     "LicenseName": "", | ||||
|     "LicenseDescription": "", | ||||
|     "Dependencies": [ | ||||
|       "cpl-core>=2022.10.0.post5" | ||||
|     ], | ||||
|     "DevDependencies": [ | ||||
|       "cpl-cli==2022.10.0" | ||||
|     ], | ||||
|     "PythonVersion": ">=3.10.4", | ||||
|     "PythonPath": {}, | ||||
|     "Classifiers": [] | ||||
|   }, | ||||
|   "BuildSettings": { | ||||
|     "ProjectType": "library", | ||||
|     "SourcePath": "", | ||||
|     "OutputPath": "../../dist", | ||||
|     "Main": "admin.main", | ||||
|     "EntryPoint": "admin", | ||||
|     "IncludePackageData": false, | ||||
|     "Included": [], | ||||
|     "Excluded": [ | ||||
|       "*/__pycache__", | ||||
|       "*/logs", | ||||
|       "*/tests" | ||||
|     ], | ||||
|     "PackageData": {}, | ||||
|     "ProjectReferences": [] | ||||
|   } | ||||
| } | ||||
| @@ -1,24 +0,0 @@ | ||||
| from cpl_core.configuration import ConfigurationABC | ||||
| from cpl_core.dependency_injection import ServiceCollectionABC | ||||
| from cpl_core.environment import ApplicationEnvironmentABC | ||||
| 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.admin.command.restart_command import RestartCommand | ||||
| from modules.admin.command.shutdown_command import ShutdownCommand | ||||
|  | ||||
|  | ||||
| class AdminModule(ModuleABC): | ||||
|  | ||||
|     def __init__(self, dc: DiscordCollectionABC): | ||||
|         ModuleABC.__init__(self, dc, FeatureFlagsEnum.admin_module) | ||||
|  | ||||
|     def configure_configuration(self, config: ConfigurationABC, env: ApplicationEnvironmentABC): | ||||
|         pass | ||||
|  | ||||
|     def configure_services(self, services: ServiceCollectionABC, env: ApplicationEnvironmentABC): | ||||
|         # commands | ||||
|         self._dc.add_command(RestartCommand) | ||||
|         self._dc.add_command(ShutdownCommand) | ||||
|         # events | ||||
| @@ -1,26 +0,0 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
|  | ||||
| """ | ||||
| bot Keksdose bot | ||||
| ~~~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
| Discord bot  for the Keksdose discord Server | ||||
|  | ||||
| :copyright: (c) 2022 sh-edraft.de | ||||
| :license: MIT, see LICENSE for more details. | ||||
|  | ||||
| """ | ||||
|  | ||||
| __title__ = 'modules.admin.command' | ||||
| __author__ = 'Sven Heidemann' | ||||
| __license__ = 'MIT' | ||||
| __copyright__ = 'Copyright (c) 2022 sh-edraft.de' | ||||
| __version__ = '0.3.dev25' | ||||
|  | ||||
| from collections import namedtuple | ||||
|  | ||||
|  | ||||
| # imports: | ||||
|  | ||||
| VersionInfo = namedtuple('VersionInfo', 'major minor micro') | ||||
| version_info = VersionInfo(major='0', minor='3', micro='dev25') | ||||
| @@ -11,6 +11,10 @@ from modules.base.command.afk_command import AFKCommand | ||||
| from modules.base.command.help_command import HelpCommand | ||||
| from modules.base.command.info_command import InfoCommand | ||||
| from modules.base.command.ping_command import PingCommand | ||||
| from modules.base.command.purge_command import PurgeCommand | ||||
| from modules.base.command.restart_command import RestartCommand | ||||
| from modules.base.command.shutdown_command import ShutdownCommand | ||||
| from modules.base.command.user_group import UserGroup | ||||
| from modules.base.events.base_on_command_error_event import BaseOnCommandErrorEvent | ||||
| from modules.base.events.base_on_command_event import BaseOnCommandEvent | ||||
| from modules.base.events.base_on_member_join_event import BaseOnMemberJoinEvent | ||||
| @@ -35,6 +39,11 @@ class BaseModule(ModuleABC): | ||||
|         self._dc.add_command(HelpCommand) | ||||
|         self._dc.add_command(InfoCommand) | ||||
|         self._dc.add_command(PingCommand) | ||||
|  | ||||
|         self._dc.add_command(RestartCommand) | ||||
|         self._dc.add_command(ShutdownCommand) | ||||
|         self._dc.add_command(PurgeCommand) | ||||
|         self._dc.add_command(UserGroup) | ||||
|         # events | ||||
|         self._dc.add_event(DiscordEventTypesEnum.on_command.value, BaseOnCommandEvent) | ||||
|         self._dc.add_event(DiscordEventTypesEnum.on_command_error.value, BaseOnCommandErrorEvent) | ||||
|   | ||||
| @@ -3,6 +3,7 @@ from typing import List as TList | ||||
| import discord | ||||
| from cpl_core.database.context import DatabaseContextABC | ||||
| from cpl_discord.command import DiscordCommandABC | ||||
| from cpl_discord.container import Guild, Role | ||||
| from cpl_discord.service import DiscordBotServiceABC | ||||
| from cpl_translation import TranslatePipe | ||||
| from discord import app_commands | ||||
| @@ -187,6 +188,53 @@ class LevelGroup(DiscordCommandABC): | ||||
|         # https://discordpy.readthedocs.io/en/latest/api.html#discord.Colour.to_rgb | ||||
|         return [app_commands.Choice(name=self._t.transform(f'common.colors.{color}'), value=f'rgb({code[0]}, {code[1]}, {code[2]})') for color, code in colors] | ||||
|  | ||||
|     @level.command() | ||||
|     @commands.guild_only() | ||||
|     async def remove(self, ctx: Context, level: str): | ||||
|         self._logger.debug(__name__, f'Received command level remove {ctx}') | ||||
|  | ||||
|         if not await self._client_utils.check_if_bot_is_ready_yet_and_respond(ctx): | ||||
|             return | ||||
|  | ||||
|         if not self._permissions.is_member_admin(ctx.author): | ||||
|             await self._message_service.send_ctx_msg(ctx, self._t.transform('common.no_permission_message')) | ||||
|             self._logger.trace(__name__, f'Finished command level remove') | ||||
|             return | ||||
|  | ||||
|         if ctx.guild is None: | ||||
|             self._logger.trace(__name__, f'Finished command level remove') | ||||
|             return | ||||
|  | ||||
|         server = self._servers.get_server_by_discord_id(ctx.guild.id) | ||||
|         level_from_db = self._levels.get_levels_by_server_id(server.server_id).where(lambda l: l.name == level).first_or_default() | ||||
|         if level_from_db is None: | ||||
|             self._logger.debug(__name__, f'level {level} not found') | ||||
|             await self._message_service.send_ctx_msg(ctx, self._t.transform('modules.level.remove.error.not_found').format(level)) | ||||
|             self._logger.trace(__name__, f'Finished command level remove') | ||||
|             return | ||||
|  | ||||
|         try: | ||||
|             self._levels.delete_level(level_from_db) | ||||
|             self._db.save_changes() | ||||
|             guild: Guild = self._bot.guilds.where(lambda g: g == ctx.guild).single() | ||||
|             role: Role = guild.roles.where(lambda r: r.name == level).single_or_default() | ||||
|             if role is not None: | ||||
|                 await role.delete() | ||||
|             self._logger.info(__name__, f'Removed level {level}') | ||||
|         except Exception as e: | ||||
|             self._logger.error(__name__, f'Could not remove level {level}', e) | ||||
|         else: | ||||
|             await self._message_service.send_ctx_msg(ctx, self._t.transform('modules.level.remove.success').format(level)) | ||||
|             await self._seed_levels(ctx.channel) | ||||
|  | ||||
|         self._logger.trace(__name__, f'Finished command level remove') | ||||
|  | ||||
|     @remove.autocomplete('level') | ||||
|     async def remove_autocomplete(self, interaction: discord.Interaction, current: str) -> TList[app_commands.Choice[str]]: | ||||
|         server = self._servers.get_server_by_discord_id(interaction.guild.id) | ||||
|         levels = self._levels.get_levels_by_server_id(server.server_id).select(lambda l: l.name) | ||||
|         return [app_commands.Choice(name=level, value=level) for level in levels] | ||||
|  | ||||
|     @level.command() | ||||
|     @commands.guild_only() | ||||
|     async def down(self, ctx: Context, member: discord.Member): | ||||
|   | ||||
| @@ -1,26 +0,0 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
|  | ||||
| """ | ||||
| bot Keksdose bot | ||||
| ~~~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
| Discord bot  for the Keksdose discord Server | ||||
|  | ||||
| :copyright: (c) 2022 sh-edraft.de | ||||
| :license: MIT, see LICENSE for more details. | ||||
|  | ||||
| """ | ||||
|  | ||||
| __title__ = 'modules.moderator' | ||||
| __author__ = 'Sven Heidemann' | ||||
| __license__ = 'MIT' | ||||
| __copyright__ = 'Copyright (c) 2022 sh-edraft.de' | ||||
| __version__ = '0.3.dev25' | ||||
|  | ||||
| from collections import namedtuple | ||||
|  | ||||
|  | ||||
| # imports:  | ||||
|  | ||||
| VersionInfo = namedtuple('VersionInfo', 'major minor micro') | ||||
| version_info = VersionInfo(major='0', minor='3', micro='dev25') | ||||
| @@ -1,26 +0,0 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
|  | ||||
| """ | ||||
| bot Keksdose bot | ||||
| ~~~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
| Discord bot  for the Keksdose discord Server | ||||
|  | ||||
| :copyright: (c) 2022 sh-edraft.de | ||||
| :license: MIT, see LICENSE for more details. | ||||
|  | ||||
| """ | ||||
|  | ||||
| __title__ = 'modules.moderator.command' | ||||
| __author__ = 'Sven Heidemann' | ||||
| __license__ = 'MIT' | ||||
| __copyright__ = 'Copyright (c) 2022 sh-edraft.de' | ||||
| __version__ = '0.3.dev25' | ||||
|  | ||||
| from collections import namedtuple | ||||
|  | ||||
|  | ||||
| # imports: | ||||
|  | ||||
| VersionInfo = namedtuple('VersionInfo', 'major minor micro') | ||||
| version_info = VersionInfo(major='0', minor='3', micro='dev25') | ||||
| @@ -1,44 +0,0 @@ | ||||
| { | ||||
|   "ProjectSettings": { | ||||
|     "Name": "moderator", | ||||
|     "Version": { | ||||
|       "Major": "1", | ||||
|       "Minor": "0", | ||||
|       "Micro": "0" | ||||
|     }, | ||||
|     "Author": "", | ||||
|     "AuthorEmail": "", | ||||
|     "Description": "", | ||||
|     "LongDescription": "", | ||||
|     "URL": "", | ||||
|     "CopyrightDate": "", | ||||
|     "CopyrightName": "", | ||||
|     "LicenseName": "", | ||||
|     "LicenseDescription": "", | ||||
|     "Dependencies": [ | ||||
|       "cpl-core>=2022.10.0.post5" | ||||
|     ], | ||||
|     "DevDependencies": [ | ||||
|       "cpl-cli==2022.10.0" | ||||
|     ], | ||||
|     "PythonVersion": ">=3.10.4", | ||||
|     "PythonPath": {}, | ||||
|     "Classifiers": [] | ||||
|   }, | ||||
|   "BuildSettings": { | ||||
|     "ProjectType": "library", | ||||
|     "SourcePath": "", | ||||
|     "OutputPath": "../../dist", | ||||
|     "Main": "moderator.main", | ||||
|     "EntryPoint": "moderator", | ||||
|     "IncludePackageData": false, | ||||
|     "Included": [], | ||||
|     "Excluded": [ | ||||
|       "*/__pycache__", | ||||
|       "*/logs", | ||||
|       "*/tests" | ||||
|     ], | ||||
|     "PackageData": {}, | ||||
|     "ProjectReferences": [] | ||||
|   } | ||||
| } | ||||
| @@ -1,24 +0,0 @@ | ||||
| from cpl_core.configuration import ConfigurationABC | ||||
| from cpl_core.dependency_injection import ServiceCollectionABC | ||||
| from cpl_core.environment import ApplicationEnvironmentABC | ||||
| 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.moderator.command.purge_command import PurgeCommand | ||||
| from modules.moderator.command.user_group import UserGroup | ||||
|  | ||||
|  | ||||
| class ModeratorModule(ModuleABC): | ||||
|  | ||||
|     def __init__(self, dc: DiscordCollectionABC): | ||||
|         ModuleABC.__init__(self, dc, FeatureFlagsEnum.moderator_module) | ||||
|  | ||||
|     def configure_configuration(self, config: ConfigurationABC, env: ApplicationEnvironmentABC): | ||||
|         pass | ||||
|  | ||||
|     def configure_services(self, services: ServiceCollectionABC, env: ApplicationEnvironmentABC): | ||||
|         # commands | ||||
|         self._dc.add_command(PurgeCommand) | ||||
|         self._dc.add_command(UserGroup) | ||||
|         # events | ||||
		Reference in New Issue
	
	Block a user