Merge pull request 'Added presence command #18' (#126) from #18 into 0.3

Reviewed-on: sh-edraft.de/kd_discord_bot#126
Reviewed-by: Sven Heidemann <sven.heidemann@sh-edraft.de>
Closes #126
This commit is contained in:
Sven Heidemann 2022-11-20 15:41:26 +01:00
commit c7a925b997
4 changed files with 56 additions and 1 deletions

@ -1 +1 @@
Subproject commit 43ae9106e2032d54cc33de3521fdb08742ab4ecd
Subproject commit 52d19fab6dcfd2e7bce068f01d0e15ddf7d43212

View File

@ -151,6 +151,11 @@
},
"footer": ""
},
"presence": {
"changed": "Presence wurde geändert.",
"removed": "Presence wurde entfernt.",
"max_char_count_exceeded": "Der Text darf nicht mehr als 128 Zeichen lang sein!"
},
"user_info": {
"fields": {
"id": "Id",

View File

@ -11,6 +11,7 @@ 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.presence_command import PresenceCommand
from modules.base.command.purge_command import PurgeCommand
from modules.base.command.user_group import UserGroup
from modules.base.events.base_on_command_error_event import BaseOnCommandErrorEvent
@ -42,6 +43,7 @@ class BaseModule(ModuleABC):
self._dc.add_command(HelpCommand)
self._dc.add_command(InfoCommand)
self._dc.add_command(PingCommand)
self._dc.add_command(PresenceCommand)
self._dc.add_command(PurgeCommand)
self._dc.add_command(UserGroup)

View File

@ -0,0 +1,48 @@
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 PresenceCommand(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()
@commands.guild_only()
@CommandChecks.check_is_ready()
@CommandChecks.check_is_member_moderator()
async def presence(self, ctx: Context, text: str = ''):
self._logger.debug(__name__, f'Received command presence {ctx}')
if text == '':
await self._bot.change_presence(activity=None)
await self._message_service.send_ctx_msg(ctx, self._t.transform('modules.base.presence.removed'))
return
if len(text) > 128:
await self._message_service.send_ctx_msg(ctx, self._t.transform('modules.base.presence.max_char_count_exceeded'))
return
await self._bot.change_presence(activity=discord.Game(name=text))
await self._message_service.send_ctx_msg(ctx, self._t.transform('modules.base.presence.changed'))
self._logger.trace(__name__, f'Finished presence command')