Заставьте бота discord сказать что-нибудь на голосовом канале

#python #discord #bots #discord.py #discord.py-rewrite

#python #Discord #боты #discord.py #discord.py-переписать

Вопрос:

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

Я даже не мог заставить бота присоединиться к голосовому чату, потому что он выдает все возможные ошибки. Заранее спасибо.

Это то, что я пробовал:

 @bot.command()
async def join_voice(self, ctx):
    connected = ctx.author.voice
    if connected:
        await connected.channel.connect()
 

и это

 @bot.command(pass_context=True)
async def join(ctx):
    author = ctx.message.author
    channel = author.voice_channel
    await bot.join_voice_channel(channel)
 

они оба выдают эту ошибку

 discord.ext.commands.errors.CommandInvokeError: Command raised an exception:
AttributeError: 'Member' object has no attribute 'voice_channel'
 

Комментарии:

1. Привет и добро пожаловать в StackOverflow! Не могли бы вы включить в свой вопрос часть кода, который вы пробовали, а также любые ошибки, которые вам могли быть предоставлены, чтобы мы могли помочь вам лучше?

Ответ №1:

РЕШЕНИЕ

Хорошо, большие новости. Я понял, как подключиться.

У вас должен быть PyNaCl (который я не устанавливал).

Я также немного отладил и обнаружил, что voice_channel не существует в author, и я заменил его на voice.channel.

 @bot.command()
async def join(ctx):
    author = ctx.message.author
    channel = author.voice.channel
    await channel.connect()
    print("i'm in the voice channel")


@bot.command()
async def leave(ctx):
    await ctx.voice_client.disconnect()
    print("i'm out of the voice channel")
 

Ответ №2:

Попробуйте установить discord.py с голосовой поддержкой:

 # Linux/macOS
python3 -m pip install -U "discord.py[voice]"

# Windows
py -3 -m pip install -U discord.py[voice]
 

Комментарии:

1. Спасибо, но это дает мне одинаковые ошибки в обеих командах. На этот раз они оба, похоже, выдают одну и ту же ошибку. Я только что обновил сообщение.