Есть фунцкция:
async def is_admin(event, user_id):
# Логируем вызов функции
print(f"is_admin(event, {user_id})")
chat = await event.get_chat()
# Получаем участников чата
participants = await event.client.get_participants(chat, aggressive=True)
for user in participants:
print(user.id) # Логируем ID участника
# Проверяем, является ли пользователь администратором или создателем
if isinstance(user.participant, (ChatParticipantAdmin, ChatParticipantCreator)):
if user.id == user_id:
return True
return False
И обработчик команды:
@bot.on(events.NewMessage(pattern='/demote'))
async def demote(event):
if not isinstance(event.to_id, (PeerChannel, PeerChat)):
return await event.respond("Эта команда работает только в группах.")
chat_id = event.chat.id
user_id= await get_id(event)
if not user_id:
return await event.respond("Пожалуйста, ответьте на сообщение пользователя для понижения.")
sender_role = await get_user_role(chat_id, event.sender_id)
print(f"is_admin(event, {event.sender_id})")
if sender_role < 1 or not await is_admin(event, event.sender_id): # Если не админ
return await event.respond("У вас нет прав для выполнения этой команды.")
current_role = await get_user_role(chat_id, user_id)
if current_role <= 0:
return await event.respond("Этот пользователь уже на минимальной роли.")
new_role = current_role - 1
await set_user_role(chat_id, user_id, new_role)
await event.respond(f"Пользователь понижен до роли {new_role}.")
И всё это упорото отказывается определять меня: