@stastop

Telethon не определяет админов?

Есть фунцкция:
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}.")


И всё это упорото отказывается определять меня:
673b6d12b1405721705184.png
  • Вопрос задан
  • 44 просмотра
Пригласить эксперта
Ответы на вопрос 2
Lord_of_Rings
@Lord_of_Rings
Python developer
Telethon не определяет админов?
Да.
Ответ написан
@Redeve
Веб-макаке не хватит и 640гБ
Можно не запрашивать участников каждый раз, а глянуть в доки
permissions = await client.get_permissions(chat, user)
if permissions.is_admin:
    # do something

https://docs.telethon.dev/en/stable/modules/client...

владелец чата .is_creatorтакже будет определяться как админ
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы