Duplicate Code for Media Files #10

Open
opened 2026-02-02 15:11:34 -05:00 by jared · 0 comments
Owner

Kill, punch, hug, revive all have identical logic.

Fix:

async def send_interaction_media(
interaction: discord.Interaction,
member: discord.Member,
action: str,
media_prefix: str
):
"""Generic function for interaction commands"""
media_files = [f"media/{media_prefix}{i}.gif" for i in ['', '1', '2', '3']]
available = [f for f in media_files if Path(f).exists()]

message = {
    'kill': f"You killed {member}",
    'punch': f"You punched {member}",
    'hug': f"{member} has been squeezed tightly!",
    'revive': f"{member} has been brought back to life"
}[action]

if available:
    await interaction.response.send_message(
        message, file=discord.File(random.choice(available))
    )
else:
    await interaction.response.send_message(message)

Then simplify commands:

@client.tree.command(name="kill", description="Kill another user")
async def kill(interaction: discord.Interaction, member: discord.Member):
await send_interaction_media(interaction, member, 'kill', 'kill')

Kill, punch, hug, revive all have identical logic. Fix: async def send_interaction_media( interaction: discord.Interaction, member: discord.Member, action: str, media_prefix: str ): """Generic function for interaction commands""" media_files = [f"media/{media_prefix}{i}.gif" for i in ['', '1', '2', '3']] available = [f for f in media_files if Path(f).exists()] message = { 'kill': f"You killed {member}", 'punch': f"You punched {member}", 'hug': f"{member} has been squeezed tightly!", 'revive': f"{member} has been brought back to life" }[action] if available: await interaction.response.send_message( message, file=discord.File(random.choice(available)) ) else: await interaction.response.send_message(message) # Then simplify commands: @client.tree.command(name="kill", description="Kill another user") async def kill(interaction: discord.Interaction, member: discord.Member): await send_interaction_media(interaction, member, 'kill', 'kill')
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LotusGuild/discordBot#10