from zlapi.models import Message, ZaloAPIException, MultiMsgStyle, MessageStyle
from config import ADMIN, IMEI
import time

des = {
    'version': "1.0.0",
    'credits': "Hồ Văn Hoà",
    'description': "Lệnh rời nhóm",
    'power': "Hồ Văn Hoà"
}

def handle_leave_command(message, message_object, thread_id, thread_type, author_id, client):
    if author_id not in ADMIN:
        msg = "Bạn không có quyền sử dụng lệnh này!"
        styles = MultiMsgStyle([
            MessageStyle(offset=0, length=10000, style="font", size="10", auto_format=False),
        ])
        client.replyMessage(Message(text=msg, style=styles), message_object, thread_id, thread_type, ttl=86400000)
        return
    try:
        # Gửi tin nhắn tạm biệt trước khi rời nhóm
        goodbye_msg = "Goodbye, đi đây nhé"
        styles = MultiMsgStyle([
            MessageStyle(offset=0, length=10000, style="font", size="10", auto_format=False),
        ])
        client.replyMessage(Message(text=goodbye_msg, style=styles), message_object, thread_id, thread_type, ttl=86400000)
        
        # Chờ 1 giây để đảm bảo tin nhắn được gửi
        time.sleep(1)
        
        # Thực hiện rời nhóm
        client.leaveGroup(thread_id, imei=IMEI)
        
    except ZaloAPIException as e:
        msg = f"err: {e}"
        styles = MultiMsgStyle([
            MessageStyle(offset=0, length=10000, style="font", size="10", auto_format=False),
        ])
        client.replyMessage(Message(text=msg, style=styles), message_object, thread_id, thread_type, ttl=86400000)
    except Exception as e:
        msg = f"error: {e}"
        styles = MultiMsgStyle([
            MessageStyle(offset=0, length=10000, style="font", size="10", auto_format=False),
        ])
        client.replyMessage(Message(text=msg, style=styles), message_object, thread_id, thread_type, ttl=86400000)

def ft_vxkiue():
    return {
        'leave': handle_leave_command
    }