Automatyzacja MAX za pomocą Green-API: metody, limity i kod dla userbotów
Userbot w MAX to konto klienckie z zweryfikowanym numerem telefonu, sterowane skryptem bez oficjalnego API. Green-API oferuje interfejs HTTP do wysyłania wiadomości, parsowania historii, zarządzania grupami. Limity: 50 wiadomości/sek, 1 żądanie/sek na historię i grupy. Kontrola częstotliwości jest kluczowa, by uniknąć banów.
Podstawowe metody pracy z wiadomościami
Wysyłanie obsługuje tekst do 4000 znaków, pliki z URL lub upload, geolokalizacje, kontakty vCard.
- SendMessage: podstawowe wysyłanie tekstu z emoji.
- SendFileByUrl: multimedia z zewnętrznego linku.
- SendFileByUpload: lokalne pliki przez multipart/form-data.
- SendLocation: szerokość, długość geograficzna, nazwa miejsca.
- SendContact: karta kontaktu.
Pobieranie plików z czatów: DownloadFile dla obrazów, dokumentów, audio, wideo.
Parsowanie historii: GetChatHistory pobiera do 5000 wiadomości z 3 miesięcy z filtrem po dacie.
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'
}
Odpowiedź zawiera typ wiadomości (incoming/outgoing), idMessage, timestamp, textMessage, extendedTextMessage z szczegółami.
[
{
"type": "outgoing",
"idMessage": "1763115112345",
"timestamp": 1754999812,
"typeMessage": "extendedTextMessage",
"chatId": "10000000",
"textMessage": "Używam GREEN-API do wysłania tej wiadomości!",
"extendedTextMessage": {
"text": "Używam GREEN-API do wysłania tej wiadomości!",
"description": "",
"title": "",
"jpegThumbnail": "",
"forwardingScore": 0,
"isForwarded": false
},
"statusMessage": "",
"sendByApi": true
}
]
Dodatkowo: GetMessage po ID, LastIncomingMessages, LastOutgoingMessages.
Limity wiadomości:
- Wysyłanie wiadomości/plików/lokalizacji/kontaktów: ≤50/sek.
- Pobieranie plików, historia czatu, grupy: ≤1/sek.
- Edycja: ≤50/sek.
Zarządzanie grupami
Tworzenie: CreateGroup z natychmiastowym dodaniem uczestników (AddGroupParticipant), ustawieniem avatara (SetGroupPicture).
Aktualizacja: UpdateGroupName, UpdateGroupSettings dla uprawnień.
{
"chatId": "-10000000000000",
"allowParticipantsAddMembers": true,
"allowParticipantsEditGroupSettings": false,
"allowParticipantsPinMessages": true
}
GetGroupData zwraca:
- chatId, owner, subject, description.
- creation (Unix timestamp).
- groupInviteLink (jeśli dostępne).
- Uprawnienia: addMembers, editSettings, pinMessages.
- size (liczba uczestników).
- participants (admini; pełna lista przy <100 uczestnikach).
{
"chatId": "-10000000000000",
"owner": "79001234567",
"subject": "Nazwa grupy",
"description": "Opis grupy",
"creation": 1764637936,
"groupInviteLink": "https://invite.link/abc123",
"allowParticipantsAddMembers": true,
"allowParticipantsEditGroupSettings": false,
"allowParticipantsPinMessages": true,
"size": 150,
"participants": [
{
"chatId": "79001234567",
"isAdmin": true,
"isSuperAdmin": true
}
]
}
Zarządzanie uczestnikami: AddGroupParticipant, RemoveGroupParticipant, SetGroupAdmin, RemoveAdmin.
Metody serwisowe
- GetChats: lista dialogów (grupy z chatId <0, phoneNumber=0).
[
{
"chatId": "-10000000000000",
"phoneNumber": 0
},
{
"chatId": "79001234567",
"phoneNumber": 79001234567
}
]
- CheckAccount: status rejestracji (exist, chatId). Limit surowy — ryzyko bana.
- GetContacts: kontakty z książki telefonicznej.
[
{
"chatId": "79001234567",
"name": "Jan Kowalski",
"contactName": "Jan",
"type": "user",
"phoneNumber": 79001234567
}
]
Praktyczne implementacje
Moderacja grupy: Parsowanie powiadomień, sprawdzanie słów zakazanych, usuwanie i odpowiedź.
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,
"⚠️ Naruszenie zasad czatu"
)
Auto-inviter: Rozdzielanie po działach.
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
)
Generator raportów: Zbieranie z CRM, push do czatu.
def send_daily_report():
stats = get_daily_statistics()
report = f"📊 Raport za {date.today()}:\n"
report += f"Nowe zamówienia: {stats['orders']}\n"
report += f"Przychody: {stats['revenue']} zł.\n"
client.send_message(report_target_chat, report)
Co ważne
- Kontroluj limity: 50/sek na wysyłanie, 1/sek na grupy/historię — przekroczenie prowadzi do bana.
- GetChatHistory: max 5000 wiadomości/3 miesiące, filtr po dacie obowiązkowy dla dużych czatów.
- Grupy >100 uczestników: API zwraca tylko role bota, pełny parsing niedostępny.
- CheckAccount używaj rzadko — ryzyko 2-tygodniowego bana.
- PyMax jako alternatywa: open-source, ale bez SLA, wymaga samodzielnej konfiguracji.
— Editorial Team
Brak komentarzy.