由于出现错误,Bot无法连接到频道并播放音乐:
AttributeError: 'Bot' object has no attribute 'is_voice_connected'
我查看了一些discord.py教程并编写了以下代码:
import asyncio
from discord.ext import commands
client = commands.Bot(command_prefix='!')
songs = asyncio.Queue()
play_next_song = asyncio.Event()
@client.event
async def on_ready():
print('client ready')
async def audio_player_task():
while True:
play_next_song.clear()
current = await songs.get()
current.start()
await play_next_song.wait()
def toggle_next():
client.loop.call_soon_threadsafe(play_next_song.set)
@client.command(pass_context=True)
async def play(ctx, url):
if not client.is_voice_connected(ctx.message.server):
voice = await client.join_voice_channel(ctx.message.author.voice_channel)
else:
voice = client.voice_client_in(ctx.message.server)
player = await voice.create_ytdl_player(url, after=toggle_next)
await songs.put(player)
client.loop.create_task(audio_player_task())
client.run('TOKEN')
答案 0 :(得分:0)
我不知道您使用的是discord.py重写版本还是任何以前的版本,但是我看到这不起作用的唯一方法是您使用的是错误版本的discord.py。 Here是您可以找到适合您代码的正确文档的地方。
此外,关于检查您的机器人是否已连接的错误的问题,客户端在重写discord.py时找不到您的语音连接。您只需要
from discord.utils import get
@client.command(pass_context=True)
async def play(ctx, url):
voice_client = get(ctx.bot.voice_clients, guild=ctx.guild)
if not voice_client.is_connected():
#Do this
else:
#Do that
如果您需要解决其他问题,从原始discord.py到重写的大部分更改都在我在此答案中提供的文档中。