Как сделать, чтобы бот ВК не мог кикать вышестоящую роль в беседах?
Бот выполняет роль чат-менеджера в беседах ВК. В боте есть роли "Модератор", "Главный модератор" и "Администратор", пользователь с ролью "Модератор" может исключить с беседы пользователей выше его роли (Главный модератор, администратор), также и пользователь с ролью "Главный модератор" может исключить другого пользователя выше его роли (Администратор). Можете подсказать пример кода, чтобы пользователи с ролями не могли данной командой кикнуть с беседы другого пользователя с вышестоящей ролью.
@bot.on.chat_message(text = ["/kick <args>", "/kick"])
async def kick(message: Message, args: Optional[str] = None):
cursor.execute(f"SELECT * FROM user WHERE vk_id = {message.from_id} AND chat_id = {message.peer_id}")
info_user = cursor.fetchone()
access_roles = ["Модератор", "Главный Модератор", "Администратор"]
if info_user[4] not in access_roles:
return
if message.reply_message == None:
user = args.split(' ')[0]
args = args.replace(user, "")
reason = args[1:]
if reason == "":
reason = "Не указана."
if "[id" in user:
user = int(user.split("|")[0].replace("[id", ""))
if message.reply_message != None:
user = message.reply_message.from_id
reason = args
if reason == "":
reason = "Не указана."
await bot.api.messages.remove_chat_user(chat_id=message.peer_id - 2000000000, user_id=user)
await message.answer(f"[id{user}|Пользователь] был исключён из конференции.\n \nИсключил: [id{message.from_id}|{info_user[4]}]\n Причина: {reason}")
cursor.execute(f"DELETE FROM user WHERE vk_id = {user} AND chat_id = {message.peer_id}")
connection.commit()