Discord.py "Объект-бот не имеет атрибута 'move_member' - PullRequest
0 голосов
/ 10 июля 2020

С помощью своего бота я пытаюсь сделать так, чтобы, когда человек получает роль «Заключенного», бот автоматически переводит его в голосовой канал «тюрьма», если он уже находится в голосовом канале. Я пробовал много решений из других потоков stackoverflow, потоков github и документации, но ни один из них не работает.

class Jail(commands.Cog):
    def __init__(self, bot):
        self.bot = bot

@commands.command()
    async def jail(self, ctx, person: discord.Member):
        try:
            jailor = discord.utils.find(lambda r: r.name == 'Jailor', ctx.message.guild.roles)
            if jailor in ctx.author.roles:
                prisoner = discord.utils.find(lambda r: r.name == 'Prisoner', ctx.message.guild.roles)
                await person.add_roles(prisoner)

                jail_vc = self.bot.get_channel('jail')
                await person.move_member(jail_vc)

            else:
                await ctx.send("You need to have the Jailor role to use this command")

        except Exception as e:
            print(str(e))

Этот код возвращает: 'Member object has no attribute 'move_member' Другие вещи, которые я пробовал:

  • await self.bot.move_member(person, jail_vc)
  • await commands.move_member(person, jail_vc)
  • await command.move_member(person, jail_vc)
  • await ctx.guild.move_member(person, jail_vc)

И некоторые другие варианты . Ошибка всегда 'something' has no attribute 'move_member' Я использую ветку перезаписи. Как мне реализовать перемещение человека с любого голосового канала в указанный c голосовой канал «тюрьма»? Любая помощь будет принята с благодарностью :).

1 Ответ

1 голос
/ 10 июля 2020

Функция, которую вы ищете, - Discord.Member#move_to

Вам нужно передать VoiceChannel в качестве параметра для задачи, которую вы хотите выполнить. Вы также можете указать reason: str в качестве второго параметра.

await person.move_to(jail_vc, "Jail role")
...