Go-библиотека для работы с WhatsApp через whatsmeow. Пакет предоставляет минимальный API, пригодный для собственных Go-приложений и для использования через ctypes в Python.
pkg/waclient— основная логика соединения, отправки и получения сообщений.cmd/wa-bridge— точка сборкиc-shared, экспортирующая функцииWaRunиWaFree.examples/python/client.py— пример вызова общей библиотеки из Python.main.go— демонстрация использования пакета напрямую из Go.
go run ./main.goПеред запуском задайте номер телефона и текст сообщения в main.go. При первой авторизации появится QR-код, который нужно отсканировать в WhatsApp.
Чтобы подключить библиотеку в другом проекте:
import "github.com/Alias1177/What-s-up-braeker/pkg/waclient"mkdir -p dist
go build -buildmode=c-shared -o dist/libwa.so ./cmd/wa-bridgeКоманда создаст dist/libwa.so и заголовок dist/libwa.h. В средах с ограниченными правами на запись в глобальные кэши можно использовать локальные каталоги:
GOTOOLCHAIN=go1.24.0 \
GOMODCACHE=$PWD/.gomodcache \
GOCACHE=$PWD/.gocache \
go build -buildmode=c-shared -o dist/libwa.so ./cmd/wa-bridgeПосле сборки библиотеки:
python3 examples/python/client.py \
--phone 79991234567 \
--message "Hello from Python!" \
--read-limit 5 \
--listen-seconds 8Флаги --read-limit и --listen-seconds позволяют регулировать, сколько входящих сообщений будет собрано и как долго ждать отве
тов. Передайте --read-only, чтобы ничего не отправлять и просто прочитать чат. Флаг --lib позволяет указать путь к .so, а -- db-uri — строку подключения к SQLite с сохранённой сессией WhatsApp.
from pathlib import Path
from python import WhatsAppBridge
bridge = WhatsAppBridge(Path("dist/libwa.so"))
# Отправить сообщение и подождать до 3 ответов не дольше 15 секунд
response = bridge.send_message(
db_uri="file:whatsapp.db?_foreign_keys=on",
phone="79991234567",
text="Привет!",
read_limit=3,
listen_seconds=15,
)
# Только прочитать сообщения — будет использован JSON-пейлоад без текста
history = bridge.read_messages(
db_uri="file:whatsapp.db?_foreign_keys=on",
phone="79991234567",
read_limit=10,
)Под капотом WhatsAppBridge формирует JSON-параметры для функции WaRun. Доступные поля:
send_text— текст сообщения, который нужно отправить (если опущен, работает режим чтения);read_limit— сколько входящих сообщений вернуть (по умолчанию библиотека берёт разумное значение; сначала выгружается имеющаяся история чата, затем собираются новые сообщения за время сессии);listen_seconds— максимальное время ожидания новых сообщений (дробное число секунд);filter_chat— идентификатор чата (JID), который нужно слушать; если опущен, используется номер из аргументаphone;include_from_me— возвращать ли собственные сообщения в выдаче (по умолчаниюtrue).
- Go 1.24+ (для зависимостей
whatsmeow); - база WhatsApp (
whatsapp.db) рядом с бинарём; - Python 3.8+ (для примера).
- В
pkg/waclient.Configможно управлять тайм-аутами, логами и выводом QR. WaRunвозвращает JSON со статусом, ID отправленного сообщения, собранными в сессии сообщениями и флагомrequires_qr.- При необходимости можно передать JSON-строку напрямую в
message(например,{"send_text":"hi","read_limit":5}).