1
0
Fork 0
mirror of https://code.lenaisten.de/Lenaisten/lenaverse-bot.git synced 2024-11-21 22:43:01 +00:00

verein.reply_private -> ClubInfo.is_allowed

This commit is contained in:
Jörn-Michael Miehe 2023-12-03 00:38:14 +01:00
parent c913e63f51
commit 385999a2f3
2 changed files with 22 additions and 15 deletions

View file

@ -8,19 +8,6 @@ from ..core.config import CONFIG, FileCommand, InfoCommand
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
def reply_private(interaction: discord.Interaction, name: str) -> bool:
_logger.debug(f"User {interaction.user.name}({interaction.user.id}) used /{name}")
# öffentliche Antwort in DM channels und in "allowed" channels
in_dm_channel = interaction.channel is not None and isinstance(
interaction.channel, discord.DMChannel
)
in_allowed_channel = interaction.channel_id in CONFIG.ev_info.channels
# private Antwort sonst
return not (in_dm_channel or in_allowed_channel)
@functools.singledispatch @functools.singledispatch
def make_command(command) -> discord.app_commands.Command: def make_command(command) -> discord.app_commands.Command:
raise NotImplementedError raise NotImplementedError
@ -33,11 +20,15 @@ def _(command: FileCommand) -> discord.app_commands.Command:
description=command.description, description=command.description,
) )
async def cmd(interaction: discord.Interaction) -> None: async def cmd(interaction: discord.Interaction) -> None:
_logger.debug(
f"User {interaction.user.name}({interaction.user.id}) used FileCommand /{command.name}"
)
if (file := await command.as_discord_file) is not None: if (file := await command.as_discord_file) is not None:
await interaction.response.send_message( await interaction.response.send_message(
content=command.content, content=command.content,
suppress_embeds=True, suppress_embeds=True,
ephemeral=reply_private(interaction, command.name), ephemeral=not CONFIG.ev_info.in_allowed_channel(interaction),
file=file, file=file,
) )
@ -57,10 +48,14 @@ def _(command: InfoCommand) -> discord.app_commands.Command:
description=command.description, description=command.description,
) )
async def cmd(interaction: discord.Interaction) -> None: async def cmd(interaction: discord.Interaction) -> None:
_logger.debug(
f"User {interaction.user.name}({interaction.user.id}) used InfoCommand /{command.name}"
)
await interaction.response.send_message( await interaction.response.send_message(
content=command.content, content=command.content,
suppress_embeds=True, suppress_embeds=True,
ephemeral=reply_private(interaction, command.name), ephemeral=not CONFIG.ev_info.in_allowed_channel(interaction),
) )
return cmd return cmd

View file

@ -68,6 +68,18 @@ class ClubInfo(BaseModel):
fest: InfoCommand fest: InfoCommand
aktion: InfoCommand aktion: InfoCommand
def in_allowed_channel(self, interaction: discord.Interaction) -> bool:
if interaction.channel is None:
return False
# öffentliche Antwort erlaubt in:
# - DM channels
# - "allowed" channels
is_dm_channel = isinstance(interaction.channel, discord.DMChannel)
is_listed = interaction.channel.id in self.channels
return is_dm_channel or is_listed
class Config(BaseModel): class Config(BaseModel):
discord_token: str discord_token: str