Как выдать роль пользователю?

async def adm(self, user):
        async with self.pool.acquire() as conn:
            async with conn.cursor() as cur:
                result = await cur.execute("SELECT admin FROM profile WHERE uid=%s", user.id)
                row = await cur.fetchall()
                if result == 1:
                    await cur.execute("UPDATE profile SET admin='Хелпер' WHERE uid=%s", user.id)
                    await conn.commit()
                    for adm in row[0]:
                        return adm


код питона:
@command(name="+адм")
    async def prov(self, ctx, member=None):
        user = await self.bot.get_user(ctx.from_id)
        adm = await basa.register.main.chekc_adm(user)
        if member is None:
            await ctx.send("Перешлите или укажите айди пользователя")
        elif adm == "Разраб":
            await ctx.send(format(user.first_name) + ", выдал роль администратора пользователю " + format(member))
            await basa.register.main.adm(user)
        else:
            await ctx.send("Не достаточно прав")


Когда пишу команду, то я сам себе меняю роль на хелпер

Что тут не так?
И как сделать что бы кто больше роли разраб(5) мог выдовать роли их всего 7 ролей, 7=создатель
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
user = await self.bot.get_user(ctx.from_id)

Тут получаем пользователя, который отправил это сообщение.

await basa.register.main.adm(user)

Тут мы этого пользователя передаём в функцию adm.

await cur.execute("UPDATE profile SET admin='Хелпер' WHERE uid=%s", user.id)


Тут мы в этой функции меняем значение поля admin у этого пользователя.

Странно спрашивать, почему код работает так, как он был написан. Явно же имелось в виду, что в функцию adm надо передавать не отправителя команды, а то, что передано параметром команды.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы