🚀 Auto-deploy: BotVPS atualizado em 29/04/2026 11:38:36
This commit is contained in:
22
tools.py
22
tools.py
@@ -161,16 +161,24 @@ def resolve_account(account_alias: str) -> str:
|
|||||||
clean = account_alias.strip().lower()
|
clean = account_alias.strip().lower()
|
||||||
return ACCOUNT_MAPPING.get(clean, f"gws-{clean}")
|
return ACCOUNT_MAPPING.get(clean, f"gws-{clean}")
|
||||||
|
|
||||||
def list_gmail_emails(account: str) -> str:
|
def list_gmail_emails(account_alias: str) -> str:
|
||||||
"""Lista os últimos 5 e-mails com Título e Remetente. Aceita apelidos: ma, mr, adm, 4r."""
|
"""Lista os últimos 5 e-mails com Título e Remetente. Aceita apelidos: ma, mr, adm, 4r."""
|
||||||
account = resolve_account(account)
|
account = resolve_account(account_alias)
|
||||||
list_cmd = f"{account} gmail users messages list --params '{{\"userId\": \"me\", \"maxResults\": 5}}'"
|
list_cmd = f"{account} gmail users messages list --params '{{\"userId\": \"me\", \"maxResults\": 5}}'"
|
||||||
res = run_bash_command(list_cmd)
|
res = run_bash_command(list_cmd)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
data = json.loads(res)
|
# Limpeza de JSON (remove lixo do keyring/stderr no stdout)
|
||||||
|
json_match = re.search(r"(\{.*\})", res, re.S)
|
||||||
|
res_clean = json_match.group(1) if json_match else res
|
||||||
|
data = json.loads(res_clean)
|
||||||
|
|
||||||
|
if "error" in data:
|
||||||
|
err_msg = data["error"].get("message", str(data["error"]))
|
||||||
|
return f"❌ Erro de Autenticação GWS ({account}): {err_msg}. Você pode precisar reautenticar o CLI na VPS."
|
||||||
|
|
||||||
messages = data.get("messages", [])
|
messages = data.get("messages", [])
|
||||||
if not messages: return "Nenhum e-mail encontrado."
|
if not messages: return "📭 Nenhum e-mail encontrado na caixa de entrada."
|
||||||
|
|
||||||
result_text = "📧 **Últimos E-mails:**\n"
|
result_text = "📧 **Últimos E-mails:**\n"
|
||||||
for i, msg in enumerate(messages, 1):
|
for i, msg in enumerate(messages, 1):
|
||||||
@@ -178,7 +186,11 @@ def list_gmail_emails(account: str) -> str:
|
|||||||
details_cmd = f"{account} gmail users messages get --params '{{\"userId\": \"me\", \"id\": \"{msg_id}\", \"format\": \"metadata\", \"metadataHeaders\": [\"Subject\", \"From\"]}}'"
|
details_cmd = f"{account} gmail users messages get --params '{{\"userId\": \"me\", \"id\": \"{msg_id}\", \"format\": \"metadata\", \"metadataHeaders\": [\"Subject\", \"From\"]}}'"
|
||||||
details_res = run_bash_command(details_cmd)
|
details_res = run_bash_command(details_cmd)
|
||||||
try:
|
try:
|
||||||
details = json.loads(details_res)
|
# Limpeza de JSON também nos detalhes
|
||||||
|
dm = re.search(r"(\{.*\})", details_res, re.S)
|
||||||
|
dc = dm.group(1) if dm else details_res
|
||||||
|
details = json.loads(dc)
|
||||||
|
|
||||||
headers = details.get("payload", {}).get("headers", [])
|
headers = details.get("payload", {}).get("headers", [])
|
||||||
subject = next((h["value"] for h in headers if h["name"] == "Subject"), "Sem Assunto")
|
subject = next((h["value"] for h in headers if h["name"] == "Subject"), "Sem Assunto")
|
||||||
sender = next((h["value"] for h in headers if h["name"] == "From"), "Desconhecido")
|
sender = next((h["value"] for h in headers if h["name"] == "From"), "Desconhecido")
|
||||||
|
|||||||
Reference in New Issue
Block a user