Automatización de MAX con Green-API: Métodos, Límites y Código de Userbot
Un userbot en MAX es una cuenta de cliente con número de teléfono verificado, controlada por scripts sin una API oficial. Green-API proporciona una interfaz HTTP para enviar mensajes, analizar historiales de chat y gestionar grupos. Límites clave: 50 mensajes/seg, 1 solicitud/seg para historial y grupos. El control de tasas es esencial para evitar bloqueos.
Métodos Principales para Manejo de Mensajes
El envío soporta texto hasta 4000 caracteres, archivos por URL o subida, ubicaciones y contactos vCard.
- SendMessage: Envío básico de texto con emojis.
- SendFileByUrl: Medios desde enlaces externos.
- SendFileByUpload: Archivos locales vía multipart/form-data.
- SendLocation: Latitud, longitud y nombre del lugar.
- SendContact: Tarjeta de contacto.
Descarga de archivos de chats: DownloadFile para imágenes, documentos, audio y video.
Análisis de historial de chat: GetChatHistory obtiene hasta 5000 mensajes de los últimos 3 meses con filtros de fecha.
POST {{apiUrl}}/waInstance{{idInstance}}/getChatHistory/{{apiTokenInstance}}
Parámetros:
url = "https://3100.api.green-api.com/waInstance{id}/getChatHistory/{token}"
payload = {
"chatId": "-730*******5943",
"count": 500
}
headers = {
'Content-Type': 'application/json'
}
La respuesta incluye tipo de mensaje (entrante/saliente), idMessage, timestamp, textMessage y detalles de extendedTextMessage.
[
{
"type": "outgoing",
"idMessage": "1763115112345",
"timestamp": 1754999812,
"typeMessage": "extendedTextMessage",
"chatId": "10000000",
"textMessage": "¡Estoy usando GREEN-API para enviar este mensaje!",
"extendedTextMessage": {
"text": "¡Estoy usando GREEN-API para enviar este mensaje!",
"description": "",
"title": "",
"jpegThumbnail": "",
"forwardingScore": 0,
"isForwarded": false
},
"statusMessage": "",
"sendByApi": true
}
]
Adicionales: GetMessage por ID, LastIncomingMessages, LastOutgoingMessages.
Límites de Mensajes:
- Envío de mensajes/archivos/ubicaciones/contactos: ≤50/seg.
- Descargas de archivos, historial de chat, grupos: ≤1/seg.
- Edición: ≤50/seg.
Administración de Grupos
Creación: CreateGroup con adición inmediata de participantes (AddGroupParticipant) y configuración de avatar (SetGroupPicture).
Actualizaciones: UpdateGroupName, UpdateGroupSettings para permisos.
{
"chatId": "-10000000000000",
"allowParticipantsAddMembers": true,
"allowParticipantsEditGroupSettings": false,
"allowParticipantsPinMessages": true
}
GetGroupData devuelve:
- chatId, owner, subject, description.
- creation (timestamp Unix).
- groupInviteLink (si está disponible).
- Permisos: addMembers, editSettings, pinMessages.
- size (número de participantes).
- participants (admins; lista completa si <100 miembros).
{
"chatId": "-10000000000000",
"owner": "79001234567",
"subject": "Nombre del Grupo",
"description": "Descripción del Grupo",
"creation": 1764637936,
"groupInviteLink": "https://invite.link/abc123",
"allowParticipantsAddMembers": true,
"allowParticipantsEditGroupSettings": false,
"allowParticipantsPinMessages": true,
"size": 150,
"participants": [
{
"chatId": "79001234567",
"isAdmin": true,
"isSuperAdmin": true
}
]
}
Gestión de participantes: AddGroupParticipant, RemoveGroupParticipant, SetGroupAdmin, RemoveAdmin.
Métodos de Utilidad
- GetChats: Lista de chats (grupos tienen chatId <0, phoneNumber=0).
[
{
"chatId": "-10000000000000",
"phoneNumber": 0
},
{
"chatId": "79001234567",
"phoneNumber": 79001234567
}
]
- CheckAccount: Estado de registro (exist, chatId). Límite estricto—alto riesgo de bloqueo.
- GetContacts: Contactos de la agenda.
[
{
"chatId": "79001234567",
"name": "Juan Pérez",
"contactName": "Juan",
"type": "user",
"phoneNumber": 79001234567
}
]
Implementaciones Prácticas
Moderación de Grupos: Analiza notificaciones, verifica palabras prohibidas, elimina y responde.
def moderate_group_messages():
notifications = client.receive_notification()
for notification in notifications:
if notification['type'] == 'incomingMessageReceived':
message = notification['messageData']['textMessage']
chat_id = notification['senderData']['chatId']
if is_spam(message):
client.delete_message(chat_id, message_id)
client.send_message(
chat_id,
"⚠️ Incumplimiento de normas del chat"
)
Auto-Invitador: Distribuir por departamentos.
def add_employee_to_groups(phone, department):
groups = get_groups_by_department(department)
for group in groups:
client.add_group_participant(
chat_id=group['chatId'],
participant_chat_id=phone
)
Generador de Informes: Extrae de CRM, envía al chat.
def send_daily_report():
stats = get_daily_statistics()
report = f"📊 Informe Diario para {date.today()}:\n"
report += f"Nuevos Pedidos: {stats['orders']}\n"
report += f"Ingresos: ${stats['revenue']}\n"
client.send_message(report_target_chat, report)
Conclusiones Clave
- Respeta los límites: 50/seg para envíos, 1/seg para grupos/historial—superarlos causa bloqueos.
- GetChatHistory: máx. 5000 mensajes/3 meses, usa filtros de fecha para chats grandes.
- Grupos >100 miembros: la API solo muestra roles del bot, sin parseo completo de participantes.
- Usa CheckAccount con moderación—riesgo de bloqueo de 2 semanas.
- PyMax como alternativa: código abierto, sin SLA, autoalojado.
— Editorial Team
Aún no hay comentarios.