🚀 Auto-deploy: BotVPS atualizado em 29/03/2026 15:14:26
This commit is contained in:
46
tools.py
46
tools.py
@@ -189,6 +189,44 @@ def list_gmail_emails(account: str) -> str:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
return f"Erro ao listar e-mails: {str(e)}\nResposta bruta: {res[:200]}"
|
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:
|
def drive_find(arg: str) -> str:
|
||||||
"""Busca arquivos no Drive por nome. Arg: account query (ex: ma financeiro)"""
|
"""Busca arquivos no Drive por nome. Arg: account query (ex: ma financeiro)"""
|
||||||
try:
|
try:
|
||||||
@@ -281,5 +319,13 @@ AVAILABLE_TOOLS = {
|
|||||||
"cronos_query": {
|
"cronos_query": {
|
||||||
"description": "Busca informações no histórico da Memória Cronos.",
|
"description": "Busca informações no histórico da Memória Cronos.",
|
||||||
"func": cronos_query
|
"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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user