Seite 1 von 1

Discord Bot

Verfasst: Freitag 25. September 2020, 17:01
von toper
Hallo zusammen.
Ich versuche gerade in einen selbst geschriebenen Musikplayer eine Funktion zu implementieren die das Lied über einen Bot in Discord abspielt.

Dafür habe ich eine Discord Klasse:

Code: Alles auswählen

class Discord(discord.Client):

    async def play(self,token,kanal,pfad,lieder,titel_nummer):
        global voicechannel
        lied = lieder[titel_nummer]
        channel = get(message.guild.channels, name="Musik")
        try:
            voicechannel = await channel.connect()
        except:
            pass
        if voicechannel.is_playing():
            voicechannel.stop()
        voicechannel.play(discord.FFmpegPCMAudio(executable="C:/ffmpeg/bin/ffmpeg.exe",source="D:/Tobias/Musik/Lieder/" + str(lied) +".mp3"))

Ich muss das ganze aus einer anderen Klasse aufrufen. Allerdings bekomme ich die Fehlermeldung: der Befehl Discord.play(...) was never awaited.
Ich habe schon versucht die funktion mit await zu schreiben, dann muss die def allerdings async sein und damit kommt tkinter nicht klar.

Code: Alles auswählen

 _default_root.tk.mainloop(n)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

Re: Discord Bot

Verfasst: Samstag 26. September 2020, 11:35
von Sirius3
Tkinter hat eine Ereignisschleife und async hat eine. Beide müssen laufen. Das geht nur, wenn du die zweite in einen Thread packst. Wie die beiden dann aber miteinander kommunizieren sollen, wird schwierig. Wenn es da nichts fertiges gibt, braucht man wahrscheinlich ein socketpair. Alles nicht ganz einfache Themen. Warum hast du überhaupt eine GUI?