Discord.py 无法使用Discord Music bot youtube_url

Discord.py 无法使用Discord Music bot youtube_url,discord.py,Discord.py,我和你有个问题,我有个问题。可以进出,但不可能使用YouTube url。 我检查了官方文件,但没法用。 有什么问题? 帮助我。。。。。 进口不和 导入异步 导入youtube\u dl 从discord.ext导入命令 youtube_dl.utils.bug_reports_message = lambda: '' ytdl_format_options = { 'format': 'bestaudio/best', 'outtmpl': '%(extractor)s-%(

我和你有个问题,我有个问题。可以进出,但不可能使用YouTube url。 我检查了官方文件,但没法用。 有什么问题? 帮助我。。。。。 进口不和 导入异步 导入youtube\u dl 从discord.ext导入命令

youtube_dl.utils.bug_reports_message = lambda: ''

ytdl_format_options = {
    'format': 'bestaudio/best',
    'outtmpl': '%(extractor)s-%(id)s-%(title)s.%(ext)s',
    'restrictfilenames': True,
    'noplaylist': True,
    'nocheckcertificate': True,
    'ignoreerrors': False,
    'logtostderr': False,
    'quiet': True,
    'no_warnings': True,
    'default_search': 'auto',
    'source_address': '0.0.0.0' # bind to ipv4 since ipv6 addresses cause issues sometimes
}

ffmpeg_options = {
    'options': '-vn'
}
ytdl = youtube_dl.YoutubeDL(ytdl_format_options)


class YTDLSource(discord.PCMVolumeTransformer):
    def __init__(self, source, *, data, volume=0.5):
        super().__init__(source, volume)

        self.data = data

        self.title = data.get('title')
        self.url = data.get('url')

    @classmethod
    async def from_url(cls, url, *, loop=None, stream=False):
        loop = loop or asyncio.get_event_loop()
        data = await loop.run_in_executor(None, lambda: ytdl.extract_info(url, download=not stream))

        if 'entries' in data:
            # take first item from a playlist
            data = data['entries'][0]

        filename = data['url'] if stream else ytdl.prepare_filename(data)
        return cls(discord.FFmpegPCMAudio(filename, **ffmpeg_options), data=data)


class testbot(discord.Client):
    async def on_ready(self):
        print('Logged on as {0}!'.format(self.user))

    async def on_message(self, ctx, *url):
        print('Message from {0.author}: {0.content}'.format(ctx))
        if ctx.content == '!in':
            if ctx.author.voice and ctx.author.voice.channel:
                channel = ctx.author.voice.channel
                await ctx.channel.send("in channel")
                await channel.connect()
            else : 
                await ctx.channel.send("no user")
        if ctx.content == '!lv':
            await self.voice_clients[0].disconnect()
            await ctx.channel.send("leave")
        if ctx.content == '!ms':
            player = await YTDLSource.from_url(*url, loop=self.Client.loop, stream=True)
            ctx.voice_client.play(player, after=lambda e: print('Player error: %s' % e) if e else None)

            await ctx.channel.send('Now playing: {}'.format(player.title))
    
client = testbot()
client.run('Token')