Discord Bot nach Musik-spielen Sprachkanal verlassen

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
miel9
User
Beiträge: 12
Registriert: Freitag 21. Juni 2019, 13:19

Hallo,

ich habe ein Problem mit der Programmierung eines Discord-Bots. Und zwar soll dieser auf einen Befehl hin (der den Ort wo alles abgespielt werden soll und was abgespielt werden soll beinhaltet)
Das Problem ist, dass der Bot, wenn er dann einmal in einem Sprachkanal drin ist, auch wieder hinaus muss, damit er etwas anderes abspielen kann. Dazu habe ich jetzt auch schon Code geschrieben:

Code: Alles auswählen

import discord as dc
from time import sleep
sounds = ['bach']

class MyClient(dc.Client):
    async  def on_ready(self):
        print('Verbunden.')
    async def on_message(self, message):
        if message.author == client.user:
            return
        if message.content.startswith('!play'):
            eig = message.content.split(' ')
            where = eig[2]
            what = eig [1].lower()
            if not what in sounds:
                await message.channel.send('''Sound nicht gefunden.
!sounds
für die verfügbaren Sounds eingeben.''')
                return
            channel = dc.utils.get(message.guild.channels, name=where)
            voicec = await channel.connect()
            voicec.play(dc.FFmpegPCMAudio('/home/pi/Python-Projekte/Discord 6b Bot/Sounds/'+what+'.mp3'))
            while voicec.is_playing():
                sleep(0)
            voicec.disconnect()
        if message.content.startswith('!sounds'):
            pass
client = MyClient()
client.run('Token')
das Problem ist aber, dass "voicec.is_playing()" (Zeile 23) dauerhaft True zurückgibt, obwohl es eigentlich zurückgeben sollte, ob der Bot gerade in diesem Sprachkanal etwas abspielt.
Mit "await" vor den Abspiel-Befehl (voicec.play(dc.FFmpegPCMAudio('/home/pi/Python-Projekte/Discord 6b Bot/Sounds/'+what+'.mp3'))) hängen geht es auch nicht.

Danke schon im Voraus.
miel9
User
Beiträge: 12
Registriert: Freitag 21. Juni 2019, 13:19

Bin jetzt selbst drauf gekommen. Ich geb einfach bei jedem Sound an wie lange er dauert und sleep()-e dann solange.
Antworten