Allow sounds with different file extensions
All checks were successful
Build Heidi Docker image / build-docker (push) Successful in 14s

Before only .mkv files could be played, as the extension was hardcoded
This commit is contained in:
2023-12-09 17:55:21 +01:00
parent bdcd5208a7
commit d7c3a7c740
2 changed files with 7 additions and 9 deletions

10
bot.py
View File

@ -120,7 +120,7 @@ def user_entrance_sound_autocomplete(
""" """
boards: List[str] = os.listdir(SOUNDDIR) boards: List[str] = os.listdir(SOUNDDIR)
all_sounds: Dict[str, List[str]] = { all_sounds: Dict[str, List[str]] = {
board: list(map(lambda x: x.split(".")[0], os.listdir(f"{SOUNDDIR}/{board}/"))) board: os.listdir(f"{SOUNDDIR}/{board}/")
for board in boards for board in boards
} # These are all sounds, organized per board, without file extension } # These are all sounds, organized per board, without file extension
@ -133,7 +133,7 @@ def user_entrance_sound_autocomplete(
for sound in board_sounds: # Iterate over board specific sounds for sound in board_sounds: # Iterate over board specific sounds
soundpath = f"{board}/{sound}" soundpath = f"{board}/{sound}"
if soundpath.lower().startswith(current.lower()): if soundpath.lower().startswith(current.lower()):
completions += [Choice(name=soundpath, value=soundpath)] completions += [Choice(name=soundpath.split(".")[0], value=soundpath)]
return completions return completions
@ -268,12 +268,10 @@ async def sound_autocomplete(
Suggest a sound from an already selected board. Suggest a sound from an already selected board.
""" """
board: str = interaction.namespace.board board: str = interaction.namespace.board
sounds: List[str] = list( sounds: List[str] = os.listdir(f"{SOUNDDIR}/{board}/")
map(lambda x: x.split(".")[0], os.listdir(f"{SOUNDDIR}/{board}/"))
)
return [ return [
Choice(name=sound, value=sound) Choice(name=sound.split(".")[0], value=sound)
for sound in sounds for sound in sounds
if sound.lower().startswith(current.lower()) if sound.lower().startswith(current.lower())
] ]

View File

@ -19,9 +19,9 @@ async def play_voice_line(
Play a voice line in the specified channel. Play a voice line in the specified channel.
""" """
try: try:
open(f"{SOUNDDIR}/{board}/{sound}.mkv") open(f"{SOUNDDIR}/{board}/{sound}")
except IOError: except IOError:
print("Error: Invalid soundfile!") print(f"Error: Invalid soundfile {SOUNDDIR}/{board}/{sound}!")
if interaction is not None: if interaction is not None:
await interaction.response.send_message( await interaction.response.send_message(
f'Heidi sagt: "{board}/{sound}" kanninich finden bruder' f'Heidi sagt: "{board}/{sound}" kanninich finden bruder'
@ -32,7 +32,7 @@ async def play_voice_line(
await interaction.response.send_message(f'Heidi sagt: "{board}/{sound}"') await interaction.response.send_message(f'Heidi sagt: "{board}/{sound}"')
audio_source = discord.FFmpegPCMAudio( audio_source = discord.FFmpegPCMAudio(
f"{SOUNDDIR}/{board}/{sound}.mkv" f"{SOUNDDIR}/{board}/{sound}"
) # only works from docker ) # only works from docker
voice_client = await voice_channel.connect() voice_client = await voice_channel.connect()
voice_client.play(audio_source) voice_client.play(audio_source)