Automatisation de MAX avec Green-API : Méthodes, limites et code userbot
Un userbot dans MAX est un compte client avec un numéro de téléphone vérifié, contrôlé par des scripts sans API officielle. Green-API propose une interface HTTP pour envoyer des messages, analyser l'historique des chats et gérer les groupes. Limites clés : 50 messages/sec, 1 requête/sec pour l'historique et les groupes. Le rate limiting est essentiel pour éviter les bannissements.
Méthodes principales pour la gestion des messages
L'envoi supporte du texte jusqu'à 4000 caractères, des fichiers via URL ou upload, des localisations et des contacts vCard.
- SendMessage : Envoi de texte basique avec émojis.
- SendFileByUrl : Médias depuis des liens externes.
- SendFileByUpload : Fichiers locaux via multipart/form-data.
- SendLocation : Latitude, longitude et nom du lieu.
- SendContact : Carte de contact.
Téléchargement de fichiers depuis les chats : DownloadFile pour images, documents, audio et vidéo.
Analyse de l'historique des chats : GetChatHistory récupère jusqu'à 5000 messages sur 3 mois avec filtres de dates.
POST {{apiUrl}}/waInstance{{idInstance}}/getChatHistory/{{apiTokenInstance}}
Paramètres :
url = "https://3100.api.green-api.com/waInstance{id}/getChatHistory/{token}"
payload = {
"chatId": "-730*******5943",
"count": 500
}
headers = {
'Content-Type': 'application/json'
}
La réponse inclut le type de message (entrant/sortant), idMessage, timestamp, textMessage, et détails extendedTextMessage.
[
{
"type": "outgoing",
"idMessage": "1763115112345",
"timestamp": 1754999812,
"typeMessage": "extendedTextMessage",
"chatId": "10000000",
"textMessage": "J'utilise GREEN-API pour envoyer ce message !",
"extendedTextMessage": {
"text": "J'utilise GREEN-API pour envoyer ce message !",
"description": "",
"title": "",
"jpegThumbnail": "",
"forwardingScore": 0,
"isForwarded": false
},
"statusMessage": "",
"sendByApi": true
}
]
Autres : GetMessage par ID, LastIncomingMessages, LastOutgoingMessages.
Limites des messages :
- Envoi de messages/fichiers/localisations/contacts : ≤50/sec.
- Téléchargements de fichiers, historique des chats, groupes : ≤1/sec.
- Modifications : ≤50/sec.
Administration des groupes
Création : CreateGroup avec ajout immédiat de participants (AddGroupParticipant) et configuration de l'avatar (SetGroupPicture).
Mises à jour : UpdateGroupName, UpdateGroupSettings pour les permissions.
{
"chatId": "-10000000000000",
"allowParticipantsAddMembers": true,
"allowParticipantsEditGroupSettings": false,
"allowParticipantsPinMessages": true
}
GetGroupData retourne :
- chatId, propriétaire, sujet, description.
- Création (timestamp Unix).
- groupInviteLink (si disponible).
- Permissions : ajout de membres, modification des paramètres, épinglage de messages.
- Taille (nombre de participants).
- Participants (admins ; liste complète si <100 membres).
{
"chatId": "-10000000000000",
"owner": "79001234567",
"subject": "Nom du Groupe",
"description": "Description du Groupe",
"creation": 1764637936,
"groupInviteLink": "https://invite.link/abc123",
"allowParticipantsAddMembers": true,
"allowParticipantsEditGroupSettings": false,
"allowParticipantsPinMessages": true,
"size": 150,
"participants": [
{
"chatId": "79001234567",
"isAdmin": true,
"isSuperAdmin": true
}
]
}
Gestion des participants : AddGroupParticipant, RemoveGroupParticipant, SetGroupAdmin, RemoveAdmin.
Méthodes utilitaires
- GetChats : Liste des chats (groupes ont chatId <0, phoneNumber=0).
[
{
"chatId": "-10000000000000",
"phoneNumber": 0
},
{
"chatId": "79001234567",
"phoneNumber": 79001234567
}
]
- CheckAccount : Statut d'enregistrement (existe, chatId). Limite stricte — risque élevé de ban.
- GetContacts : Contacts du carnet d'adresses.
[
{
"chatId": "79001234567",
"name": "Jean Dupont",
"contactName": "Jean",
"type": "user",
"phoneNumber": 79001234567
}
]
Implémentations pratiques
Modération de groupe : Analyser les notifications, vérifier les mots interdits, supprimer et répondre.
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,
"⚠️ Violation des règles du chat"
)
Auto-inviteur : Répartition par départements.
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
)
Générateur de rapports : Récupérer depuis le CRM, pousser vers le chat.
def send_daily_report():
stats = get_daily_statistics()
report = f"📊 Rapport quotidien du {date.today()} :\n"
report += f"Nouvelles commandes : {stats['orders']}\n"
report += f"Chiffre d'affaires : {stats['revenue']}€\n"
client.send_message(report_target_chat, report)
Points clés à retenir
- Respectez les limites : 50/sec pour l'envoi, 1/sec pour les groupes/historique — dépassement = bannissement.
- GetChatHistory : max 5000 messages/3 mois, utilisez les filtres de dates pour les gros chats.
- Groupes >100 membres : l'API affiche seulement les rôles bot, pas la liste complète des participants.
- Utilisez CheckAccount avec parcimonie — risque de ban de 2 semaines.
- PyMax comme alternative : open-source, sans SLA, auto-hébergé.
— Editorial Team
Aucun commentaire pour le moment.