Add logic to other users to afk as mod

This commit is contained in:
Sven Heidemann 2024-01-11 20:56:19 +01:00
parent 887a02a7af
commit 4553490266

View File

@ -1,3 +1,4 @@
import discord
from cpl_core.configuration import ConfigurationABC from cpl_core.configuration import ConfigurationABC
from cpl_discord.command import DiscordCommandABC from cpl_discord.command import DiscordCommandABC
from cpl_discord.service import DiscordBotServiceABC from cpl_discord.service import DiscordBotServiceABC
@ -8,6 +9,7 @@ from discord.ext.commands import Context
from bot_core.abc.client_utils_abc import ClientUtilsABC from bot_core.abc.client_utils_abc import ClientUtilsABC
from bot_core.abc.message_service_abc import MessageServiceABC from bot_core.abc.message_service_abc import MessageServiceABC
from bot_core.abc.permission_service_abc import PermissionServiceABC
from bot_core.helper.command_checks import CommandChecks from bot_core.helper.command_checks import CommandChecks
from bot_core.logging.command_logger import CommandLogger from bot_core.logging.command_logger import CommandLogger
from bot_data.model.server_config import ServerConfig from bot_data.model.server_config import ServerConfig
@ -22,6 +24,7 @@ class AFKCommand(DiscordCommandABC):
bot: DiscordBotServiceABC, bot: DiscordBotServiceABC,
client_utils: ClientUtilsABC, client_utils: ClientUtilsABC,
translate: TranslatePipe, translate: TranslatePipe,
permissions: PermissionServiceABC,
): ):
DiscordCommandABC.__init__(self) DiscordCommandABC.__init__(self)
@ -29,6 +32,7 @@ class AFKCommand(DiscordCommandABC):
self._config = config self._config = config
self._message_service = message_service self._message_service = message_service
self._bot = bot self._bot = bot
self._permissions = permissions
self._client_utils = client_utils self._client_utils = client_utils
self._t = translate self._t = translate
@ -37,7 +41,12 @@ class AFKCommand(DiscordCommandABC):
@commands.hybrid_command() @commands.hybrid_command()
@commands.guild_only() @commands.guild_only()
@CommandChecks.check_is_ready() @CommandChecks.check_is_ready()
async def afk(self, ctx: Context): async def afk(self, ctx: Context, member: discord.Member = None):
is_mod = self._permissions.is_member_moderator(ctx.author)
if member is not None and not is_mod:
await self._message_service.send_ctx_msg(ctx, self._t.transform("common.no_permission_message"))
return
self._logger.debug(__name__, f"Received command afk {ctx}") self._logger.debug(__name__, f"Received command afk {ctx}")
settings: ServerConfig = self._config.get_configuration(f"ServerConfig_{ctx.guild.id}") settings: ServerConfig = self._config.get_configuration(f"ServerConfig_{ctx.guild.id}")
@ -54,7 +63,10 @@ class AFKCommand(DiscordCommandABC):
) )
channel: VoiceChannel = ctx.guild.get_channel(settings.afk_command_channel_id) channel: VoiceChannel = ctx.guild.get_channel(settings.afk_command_channel_id)
try: try:
await ctx.author.move_to(channel) if member is not None:
await member.move_to(channel)
else:
await ctx.author.move_to(channel)
self._client_utils.moved_user(ctx.guild.id) self._client_utils.moved_user(ctx.guild.id)
except Exception as e: except Exception as e:
self._logger.error( self._logger.error(