Discord py присоединяйтесь к голосовой команде, когда в голосовом канале никого нет

#python #discord.py

Вопрос:

У меня возник вопрос о команде join для discord.py. У меня есть эта функция объединения, которая отлично работает, но я хотел бы получить конкретное определение для ситуаций, когда пользователь вводит команду, находясь не в VC.

У меня есть сообщение, если он успешно присоединится, а затем другой вариант, если кто-то введет команду, уже находясь в VC. Мне просто нужен elif на случай, если кто-то введет команду, не находясь в голосовом вызове. Не знаю, как это сделать, буду признателен за любую помощь.

   voiceChannel = ctx.author.voice.channel
  voice = discord.utils.get(bot.voice_clients, guild = ctx.guild)
  if voice == None:
    await voiceChannel.connect()
    await ctx.send(f"Joined **{voiceChannel}**")
  
  else:
    await ctx.send("I'm already in a VC")```
 

Ответ №1:

Ошибка, которая выдается AttributeError , возникает, когда пользователь не находится в канале.

Вы должны перестроить свой код следующим образом:

 @client.command() / @bot.command() / @commands.command()
async def join(ctx):
    try: # Build in a try
    [Your Code here]
    except AttributeError: # If not in a voice channel 
        return await ctx.send("You have to be in a channel to do that!")
 
  • [Your Code here] = Просто вставьте свой if else код и с правильным отступом.
  • В зависимости от используемого метода вам может потребоваться изменить команду и добавить a self .