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)
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
} # 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
soundpath = f"{board}/{sound}"
if soundpath.lower().startswith(current.lower()):
completions += [Choice(name=soundpath, value=soundpath)]
completions += [Choice(name=soundpath.split(".")[0], value=soundpath)]
return completions
@ -268,12 +268,10 @@ async def sound_autocomplete(
Suggest a sound from an already selected board.
"""
board: str = interaction.namespace.board
sounds: List[str] = list(
map(lambda x: x.split(".")[0], os.listdir(f"{SOUNDDIR}/{board}/"))
)
sounds: List[str] = os.listdir(f"{SOUNDDIR}/{board}/")
return [
Choice(name=sound, value=sound)
Choice(name=sound.split(".")[0], value=sound)
for sound in sounds
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.
"""
try:
open(f"{SOUNDDIR}/{board}/{sound}.mkv")
open(f"{SOUNDDIR}/{board}/{sound}")
except IOError:
print("Error: Invalid soundfile!")
print(f"Error: Invalid soundfile {SOUNDDIR}/{board}/{sound}!")
if interaction is not None:
await interaction.response.send_message(
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}"')
audio_source = discord.FFmpegPCMAudio(
f"{SOUNDDIR}/{board}/{sound}.mkv"
f"{SOUNDDIR}/{board}/{sound}"
) # only works from docker
voice_client = await voice_channel.connect()
voice_client.play(audio_source)