From f7c2c354edb282c17d094072e7af5b115787fff4 Mon Sep 17 00:00:00 2001 From: admtracksteel Date: Sun, 29 Mar 2026 15:14:26 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20Auto-deploy:=20BotVPS=20atualiza?= =?UTF-8?q?do=20em=2029/03/2026=2015:14:26?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/tools.py b/tools.py index b8cb8c4..1731d5d 100644 --- a/tools.py +++ b/tools.py @@ -189,6 +189,44 @@ def list_gmail_emails(account: str) -> str: except Exception as e: return f"Erro ao listar e-mails: {str(e)}\nResposta bruta: {res[:200]}" +def gmail_manage_label(arg: str) -> str: + """Cria ou busca marcadores (labels). Arg: account name (ex: adm alibaba)""" + try: + parts = arg.split(maxsplit=1) + account = parts[0] + label_name = parts[1] if len(parts) > 1 else "" + if not label_name: return "Erro: Nome do marcador não fornecido." + + mapping = {"ma": "gws-mr", "mr": "gws-mr", "adm": "gws-adm", "4r": "gws-4r"} + account = mapping.get(account.lower(), account) + + # Tenta criar o marcador + cmd = f"{account} gmail users labels create --json '{{\"name\": \"{label_name}\", \"labelListVisibility\": \"labelShow\", \"messageListVisibility\": \"show\"}}'" + return run_bash_command(cmd) + except Exception as e: return f"Erro ao gerenciar marcador: {str(e)}" + +def gmail_manage_filter(arg: str) -> str: + """Cria um filtro para e-mails. Arg: account subject_or_from label_name (ex: adm alibaba alibaba)""" + try: + parts = arg.split(maxsplit=2) + if len(parts) < 3: return "Erro: Use 'conta termo marcador'. Ex: adm alibaba alibaba" + account, criteria, label_id = parts[0], parts[1], parts[2] + + mapping = {"ma": "gws-mr", "mr": "gws-mr", "adm": "gws-adm", "4r": "gws-4r"} + account = mapping.get(account.lower(), account) + + # Tenta criar o filtro (exemplo: assunto contém o critério ou de quem vem) + # Primeiro, buscamos se o marcador existe para pegar o ID? + # Na verdade no Gmail API você pode usar o nome do marcador se for por --json direto. + # Mas gws gmail users settings filters create requer um Filter object. + filter_obj = { + "criteria": {"from": criteria}, # Simplificado: busca pelo remetente + "action": {"addLabelIds": [label_id]} + } + cmd = f"{account} gmail users settings filters create --json '{json.dumps(filter_obj)}'" + return run_bash_command(cmd) + except Exception as e: return f"Erro ao gerenciar filtro: {str(e)}" + def drive_find(arg: str) -> str: """Busca arquivos no Drive por nome. Arg: account query (ex: ma financeiro)""" try: @@ -281,5 +319,13 @@ AVAILABLE_TOOLS = { "cronos_query": { "description": "Busca informações no histórico da Memória Cronos.", "func": cronos_query + }, + "gmail_manage_label": { + "description": "Cria um novo marcador (Label) no Gmail. Ex: gmail_manage_label adm alibaba", + "func": gmail_manage_label + }, + "gmail_manage_filter": { + "description": "Cria um filtro automático no Gmail. Ex: gmail_manage_filter adm @alibaba.com Alibaba", + "func": gmail_manage_filter } }