Ошибка типа: объект ‘NoneType’ не вызывается с помощью discord API и youtube_dl

#python #discord.py #youtube-dl

#python #discord.py #youtube-dl

Вопрос:

я создаю музыкального бота discord с множеством других функций, и я постоянно получаю эту ошибку

 @client.command(pass_context=True)
async def join(ctx):
  channel = ctx.message.author.voice.channel
  connect = await channel.connect()
  await connect(channel)

@client.command(pass_context=True)
async def play(ctx, url):
  voice_client = ctx.guild.voice_client
  server = ctx.message.guild
  voice_client = ctx.guild.voice_client(server)
  player = await  voice_client.create_ytdl_player(url)
  players[server.id] = player
  player.start()
  

это строка журнала / терминал:

 Ignoring exception in command play:
Traceback (most recent call last):
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 85, in wrapped
    ret = await coro(*args, **kwargs)
  File "main.py", line 55, in play
    voice_client = ctx.guild.voice_client(server)
TypeError: 'NoneType' object is not callable

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/bot.py", line 903, in invoke
    await ctx.command.invoke(ctx)
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 855, in invoke
    await injected(*ctx.args, **ctx.kwargs)
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 94, in wrapped
    raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: 'NoneType' object is not callable
  

Может ли кто-нибудь помочь мне с этим спасибо.

Ответ №1:

Вы пытаетесь вызвать guild.voice_client свойство, а не метод из того, что я вижу в документах.

Вы получаете 'NoneType' object is not callable ошибку, потому что с вашим объектом guild не связан VoiceClient.

Если вы посмотрите на документы для VoiceClient , похоже, что вы извлекаете его через VoiceChannel.connect()