Seite 1 von 1

Discord Bot nach Musik-spielen Sprachkanal verlassen

Verfasst: Sonntag 20. Dezember 2020, 16:09
von miel9
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.

Re: Discord Bot nach Musik-spielen Sprachkanal verlassen

Verfasst: Montag 21. Dezember 2020, 15:09
von miel9
Bin jetzt selbst drauf gekommen. Ich geb einfach bei jedem Sound an wie lange er dauert und sleep()-e dann solange.