Automatizace MAX přes Green-API: metody, limity a kód pro userboty
Userbot v MAX je klientský účet s ověřeným číslem, který řídí skript bez oficiálního API. Green-API nabízí HTTP rozhraní pro odesílání zpráv, parsování historie, správu skupin. Limity: 50 zpráv/sek, 1 požadavek/sek na historii a skupiny. Kontrola frekvence je nutná k vyhnutí se banům.
Základní metody práce se zprávami
Odesílání podporuje text až 4000 znaků, soubory přes URL nebo upload, geolokace, kontakty vCard.
- SendMessage: základní odeslání textu s emodži.
- SendFileByUrl: média přes externí odkaz.
- SendFileByUpload: lokální soubory přes multipart/form-data.
- SendLocation: šířka, délka, název místa.
- SendContact: kontaktní karta.
Stahování souborů z chatů: DownloadFile pro obrázky, dokumenty, audio, video.
Parsování historie: GetChatHistory vytahuje až 5000 zpráv za 3 měsíce s filtrem podle data.
POST {{apiUrl}}/waInstance{{idInstance}}/getChatHistory/{{apiTokenInstance}}
Parametry:
url = "https://3100.api.green-api.com/waInstance{id}/getChatHistory/{token}"
payload = {
"chatId": "-730*******5943",
"count": 500
}
headers = {
'Content-Type': 'application/json'
}
Odpověď obsahuje typ zprávy (incoming/outgoing), idMessage, timestamp, textMessage, extendedTextMessage s detaily.
[
{
"type": "outgoing",
"idMessage": "1763115112345",
"timestamp": 1754999812,
"typeMessage": "extendedTextMessage",
"chatId": "10000000",
"textMessage": "Používám GREEN-API k odeslání této zprávy!",
"extendedTextMessage": {
"text": "Používám GREEN-API k odeslání této zprávy!",
"description": "",
"title": "",
"jpegThumbnail": "",
"forwardingScore": 0,
"isForwarded": false
},
"statusMessage": "",
"sendByApi": true
}
]
Další: GetMessage podle ID, LastIncomingMessages, LastOutgoingMessages.
Limity pro zprávy:
- Odesílání zpráv/souborů/lokací/kontaktů: ≤50/sek.
- Nahrávání souborů, historie chatu, skupiny: ≤1/sek.
- Editace: ≤50/sek.
Správa skupin
Vytvoření: CreateGroup s okamžitým přidáním účastníků (AddGroupParticipant), nastavením avatara (SetGroupPicture).
Aktualizace: UpdateGroupName, UpdateGroupSettings pro oprávnění.
{
"chatId": "-10000000000000",
"allowParticipantsAddMembers": true,
"allowParticipantsEditGroupSettings": false,
"allowParticipantsPinMessages": true
}
GetGroupData vrací:
- chatId, owner, subject, description.
- creation (Unix timestamp).
- groupInviteLink (pokud je dostupný).
- Oprávnění: addMembers, editSettings, pinMessages.
- size (počet účastníků).
- participants (admini; plný seznam při <100 účastnících).
{
"chatId": "-10000000000000",
"owner": "79001234567",
"subject": "Název skupiny",
"description": "Popis skupiny",
"creation": 1764637936,
"groupInviteLink": "https://invite.link/abc123",
"allowParticipantsAddMembers": true,
"allowParticipantsEditGroupSettings": false,
"allowParticipantsPinMessages": true,
"size": 150,
"participants": [
{
"chatId": "79001234567",
"isAdmin": true,
"isSuperAdmin": true
}
]
}
Správa účastníků: AddGroupParticipant, RemoveGroupParticipant, SetGroupAdmin, RemoveAdmin.
Servisní metody
- GetChats: seznam dialogů (skupiny s chatId <0, phoneNumber=0).
[
{
"chatId": "-10000000000000",
"phoneNumber": 0
},
{
"chatId": "79001234567",
"phoneNumber": 79001234567
}
]
- CheckAccount: stav registrace (exist, chatId). Limit je přísný — riziko banu.
- GetContacts: kontakty z telefonního seznamu.
[
{
"chatId": "79001234567",
"name": "Ivan Petrov",
"contactName": "Ivan",
"type": "user",
"phoneNumber": 79001234567
}
]
Praktické realizace
Moderace skupiny: Parsování notifikací, kontrola stop-slov, mazání a odpověď.
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,
"⚠️ Porušení pravidel chatu"
)
Auto-inviter: Rozdělení podle oddělení.
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
)
Generátor reportů: Sběr z CRM, push do chatu.
def send_daily_report():
stats = get_daily_statistics()
report = f"📊 Report za {date.today()}:\n"
report += f"Nové objednávky: {stats['orders']}\n"
report += f"Tržby: {stats['revenue']} Kč\n"
client.send_message(report_target_chat, report)
Co je důležité
- Kontrolujte limity: 50/sek na odesílání, 1/sek na skupiny/historii — překročení vede k banu.
- GetChatHistory: max 5000 zpráv/3 měsíce, filtr podle data je nutný pro velké chaty.
- Skupiny >100 účastníků: API vrací jen role bota, plný pars nejsou dostupné.
- CheckAccount používejte zřídka — riziko 2týdenního banu.
- PyMax jako alternativa: open-source, ale bez SLA, vyžaduje vlastní nastavení.
— Editorial Team
Zatím žádné komentáře.