При использовании ytdl_player в discord.py, и я пытаюсь поставить в очередь другую песню, я получаю эту ошибку. Как это исправить? - PullRequest
0 голосов
/ 03 апреля 2019

Я создаю диссон-бота, и в этом боте я включаю команду, которая воспроизводит музыку, у меня также есть команда ставить песни в очередь.Когда я играю песню и пытаюсь поставить в очередь другую, я получаю сообщение об ошибке ниже, это мой код для команды очереди.


import discord
from discord.ext import commands
from chat import *

players = {}
queues = {}

def check_queue(id):
    if queues[id] != []:
        player = queues[id].pop(0)
        players[id] = player
        player.start()

@commands.command(pass_context=True)
    async def play(self, ctx):

        channel = ctx.message.author.voice.voice_channel
        url = ctx.message.content
        abc = url[5:]
        server = ctx.message.server
        if self.bot.voice_client_in(server):
            await self.bot.say("queued")
            pass

        else:
            await self.bot.join_voice_channel(channel)
        server = ctx.message.server
        voice_client = self.bot.voice_client_in(server)

        player = await voice_client.create_ytdl_player(abc, ytdl_options={'default_search': 'auto'}, before_options="-reconnect 1 -reconnect_streamed 1 " "-reconnect_delay_max 5", after=lambda: check_queue(server.id))

        players[server.id] = player
        await self.bot.say("now playing" + abc)
        player.start()

Ожидаемый результат: это работает, и песня ставится в очередьиграть дальше.фактический результат: av_interleaved_write_frame (): недопустимый аргумент av_interleaved_write_frame (): сломанная труба Ошибка записи трейлера канала: 1: неверный аргумент Ошибка записи трейлера канала: 1: сломанная труба

           Process finished with exit code -1073741819 (0xC0000005)

1 Ответ

0 голосов
/ 03 апреля 2019
if self.bot.voice_client_in(server):
            await self.q(ctx, abc)

async def q(self, ctx, url):
    server = ctx.message.server
    voice_client = self.bot.voice_client_in(server)
    player = await voice_client.create_ytdl_player(url, ytdl_options={'default_search': 'auto'}, after=lambda: check_queue(server.id))

    if server.id in queues:
        queues[server.id].append(player)
    else:
        queues[server.id] = [player]
    await self.bot.say("queued")

Я только что создал новую функцию под названием q(), которая добавила следующую песню в очередь лучше, чем раньше, изменила queues = [] обратно на queues = {} aswell

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...