Discord.py Bot 不播放音乐

Posted

技术标签:

【中文标题】Discord.py Bot 不播放音乐【英文标题】:Discord.py Bot Not Playing music 【发布时间】:2021-02-06 19:56:22 【问题描述】:

大家好,由于某种原因,我的机器人实际上可以加入,但无法播放音频。 实际上我对此完全陌生,我试图让它像 2 小时一样工作,并设法设置加入但不玩(或离开)命令。

import os
import random
from dotenv import load_dotenv
import youtube_dl
import discord
from discord.ext import commands

from discord.ext import commands

load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
players=


bot = commands.Bot(command_prefix='!')

@bot.event
async def on_ready():
    print(f'bot.user.name has connected to Discord!')


@bot.command(name="Ja_som_to_nebol.")
async def sranda(ctx):
    sranda_quotes = ["Not gonna lie, kinda sus",
        ("Not gonna lie, kinda sus"), ]
    response = random.choice(sranda_quotes)
    await ctx.send(response)
    
#@bot.event
#async def on_command_error(ctx, error):
   # if isinstance(error, commands.errors.CheckFailure):
   #     await ctx.send('You do not have the correct role for this command.')

@bot.command(name="join")
async def join(ctx):
    channel = ctx.author.voice.channel
    await channel.connect()

@bot.command(name="leave")
async def leave(ctx):
    channel = ctx.author.voice.channel
    await channel.disconnect()
   
   

@bot.command(name="play")
async def play(ctx, url):
    guild = ctx.author.voice.channel
    voice_client = discord.utils.find(lambda c: c.guild.id == server.id, client.voice_client)
    player = await voice_client.create_ytdl_player(url)
    players=[server.id] = player
    player.start()


bot.run(TOKEN)

【问题讨论】:

这能回答你的问题吗? Discord Music bot VoiceClient' object has no attribute 'create_ytdl_player' youtube_dl 被删除:github.com/ytdl-org/youtube-dl 【参考方案1】:

不要像这样玩,而是使用我使用的代码,你必须安装 FFmpeg。

@commands.command(name='play', aliases=['p'])
async def _play(self, ctx: commands.Context, *, search: str):
  if not ctx.voice_state.voice:
    await ctx.invoke(self._join)

  async with ctx.typing():
    try:
      source = await YTDLSource.create_source(ctx, search, loop=self.bot.loop)
    except YTDLError as e:
      await ctx.send('An error occurred while processing this request: '.format(str(e)))
  else:
    song = Song(source)

    await ctx.voice_state.songs.put(song)
    await ctx.send('Enqueued '.format(str(source)))

我在这里使用了一些 Cogs,你可以自己编辑成普通代码。

【讨论】:

以上是关于Discord.py Bot 不播放音乐的主要内容,如果未能解决你的问题,请参考以下文章

如何在不下载任何 .mp3 文件和更多文件的情况下播放音乐 discord.py

discord py音乐机器人停止播放

Discord bot python:discord.errors.ClientException:找不到ffmpeg

Discord Py - Heroku 托管 Bot 上的音乐命令

Discord Bot 不播放声音 - Discord.py

如何使用 discord.py 在音乐机器人上获得最佳音频质量?