Discord Bot

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
toper
User
Beiträge: 74
Registriert: Freitag 13. April 2018, 14:37

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
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

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?
Antworten