Merge pull request 'Added mass-move command' (#136) from #20 into 0.3

Reviewed-on: sh-edraft.de/kd_discord_bot#136
Reviewed-by: Sven Heidemann <sven.heidemann@sh-edraft.de>
Closes #136
This commit is contained in:
Sven Heidemann 2022-11-21 19:00:34 +01:00
commit 91fdf34d32
5 changed files with 57 additions and 1 deletions

@ -1 +1 @@
Subproject commit 52d19fab6dcfd2e7bce068f01d0e15ddf7d43212
Subproject commit e7e9d85f7d0054ba95ae1ff87d91b4e218ef510f

View File

@ -151,6 +151,10 @@
},
"footer": ""
},
"mass_move": {
"moved": "Alle Personen aus {} wurden nach {} verschoben.",
"channel_from_error": "Du musst dich in einem Voicechannel befinden oder die Option \"channel_from\" mit angeben."
},
"presence": {
"changed": "Presence wurde geändert.",
"removed": "Presence wurde entfernt.",

View File

@ -10,6 +10,7 @@ from modules.base.abc.base_helper_abc import BaseHelperABC
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.mass_move_command import MassMoveCommand
from modules.base.command.ping_command import PingCommand
from modules.base.command.presence_command import PresenceCommand
from modules.base.command.purge_command import PurgeCommand
@ -42,6 +43,7 @@ class BaseModule(ModuleABC):
self._dc.add_command(AFKCommand)
self._dc.add_command(HelpCommand)
self._dc.add_command(InfoCommand)
self._dc.add_command(MassMoveCommand)
self._dc.add_command(PingCommand)
self._dc.add_command(PresenceCommand)

View File

@ -0,0 +1,49 @@
import asyncio
import discord
from cpl_discord.command import DiscordCommandABC
from cpl_discord.service import DiscordBotServiceABC
from cpl_translation import TranslatePipe
from discord.ext import commands
from discord.ext.commands import Context
from bot_core.abc.message_service_abc import MessageServiceABC
from bot_core.helper.command_checks import CommandChecks
from bot_core.logging.command_logger import CommandLogger
class MassMoveCommand(DiscordCommandABC):
def __init__(
self,
logger: CommandLogger,
message_service: MessageServiceABC,
bot: DiscordBotServiceABC,
translate: TranslatePipe,
):
DiscordCommandABC.__init__(self)
self._logger = logger
self._message_service = message_service
self._bot = bot
self._t = translate
@commands.hybrid_command(name='mass-move')
@CommandChecks.check_is_ready()
@CommandChecks.check_is_member_moderator()
async def mass_move(self, ctx: Context, channel_to: discord.VoiceChannel,
channel_from: discord.VoiceChannel = None):
self._logger.debug(__name__, f'Received command mass-move {ctx}')
if channel_from is None and ctx.author.voice is None:
await self._message_service.send_ctx_msg(ctx, self._t.transform('modules.base.mass_move.channel_from_error'))
return
if channel_from is None:
channel_from = ctx.author.voice.channel
moves = [member.move_to(channel_to) for member in channel_from.members]
await asyncio.gather(*moves)
await self._message_service.send_ctx_msg(ctx, self._t.transform('modules.base.mass_move.moved').format(channel_from.mention, channel_to.mention))
self._logger.trace(__name__, f'Finished mass-move command')

View File

@ -0,0 +1 @@
# imports