Pacote Rhymen/Go-Whatsapp implementa a API da Web WhatsApp para fornecer uma interface limpa para os desenvolvedores. Muito obrigado a todos os colaboradores do projeto Sigalor/WhatsApp-Web-Reveng. A API oficial de negócios do WhatsApp foi lançada em agosto de 2018. Você pode conferir aqui.
Este pacote não está sendo mantido ativamente atualmente e em breve será inutilizado como atualizações do WhatsApp para vários dispositivos. Veja o Tulir/WhatsMeow para uma API da Web Whatsapp que é mantida ativamente e suporta o Whatsapp Multi-Device.
go get github.com/Rhymen/go-whatsapp import (
whatsapp "github.com/Rhymen/go-whatsapp"
)
wac , err := whatsapp . NewConn ( 20 * time . Second )A duração passada para a função NewConn é usada para tempo limite de login. Se você tiver uma conexão ruim à Internet, use um valor de tempo limite mais alto. Essa função cria apenas uma conexão do WebSocket, ela não lida com a autenticação.
qrChan := make ( chan string )
go func () {
fmt . Printf ( "qr code: %v n " , <- qrChan )
//show qr code or save it somewhere to scan
}()
sess , err := wac . Login ( qrChan )O processo de autenticação exige que você digitalize o código QR, que é enviado pelo canal, com o dispositivo em que você está usando o WhatsApp. A estrutura da sessão retornada pode ser salva e usada para restaurar o login sem digitalizar o código QR novamente. O código QR tem um TTL de 20 segundos e a função de login lança um ERR de tempo limite se o tempo tiver passado ou qualquer outra solicitação falhar.
newSess , err := wac . RestoreWithSession ( sess )A função Restore precisa de uma sessão válida e retorna a nova sessão criada.
type myHandler struct {}
func ( myHandler ) HandleError ( err error ) {
fmt . Fprintf ( os . Stderr , "%v" , err )
}
func ( myHandler ) HandleTextMessage ( message whatsapp. TextMessage ) {
fmt . Println ( message )
}
func ( myHandler ) HandleImageMessage ( message whatsapp. ImageMessage ) {
fmt . Println ( message )
}
func ( myHandler ) HandleDocumentMessage ( message whatsapp. DocumentMessage ) {
fmt . Println ( message )
}
func ( myHandler ) HandleVideoMessage ( message whatsapp. VideoMessage ) {
fmt . Println ( message )
}
func ( myHandler ) HandleAudioMessage ( message whatsapp. AudioMessage ){
fmt . Println ( message )
}
func ( myHandler ) HandleJsonMessage ( message string ) {
fmt . Println ( message )
}
func ( myHandler ) HandleContactMessage ( message whatsapp. ContactMessage ) {
fmt . Println ( message )
}
func ( myHandler ) HandleBatteryMessage ( message whatsapp. BatteryMessage ) {
fmt . Println ( message )
}
func ( myHandler ) HandleNewContact ( contact whatsapp. Contact ) {
fmt . Println ( contact )
}
wac . AddHandler ( myHandler {})Os manipuladores de mensagens são todos opcionais, você não precisa implementar nada além do manipulador de erros para implementar a interface. O ImageMessage, Videomessage, Audiomessage e DocumentMessage fornece uma função de download para obter os dados da mídia.
text := whatsapp. TextMessage {
Info : whatsapp. MessageInfo {
RemoteJid : "[email protected]" ,
},
Text : "Hello Whatsapp" ,
}
err := wac . Send ( text ) contactMessage := whatsapp. ContactMessage {
Info : whatsapp. MessageInfo {
RemoteJid : "[email protected]" ,
},
DisplayName : "Luke Skylwallker" ,
Vcard : "BEGIN:VCARD n VERSION:3.0 n N:Skyllwalker;Luke;; n FN:Luke Skywallker n item1.TEL;waid=0123456789:+1 23 456789789 n item1.X-ABLabel:Mobile n END:VCARD" ,
}
id , error := client . WaConn . Send ( contactMessage )A mensagem será enviada sobre o WebSocket. Os atributos vistos acima são os necessários. Todos os outros atributos relevantes (ID, registro de data e hora, Fromme, Status) são definidos se estiverem ausentes na estrutura. Por enquanto, apoiamos apenas mensagens de texto, mas outros tipos estão planejados para o futuro próximo.
Esse código não é de forma alguma afiliado, autorizado, mantido, patrocinado ou endossado pelo WhatsApp ou por qualquer uma de suas afiliadas ou subsidiárias. Este é um software independente e não oficial. Use por sua conta e risco.
A licença do MIT (MIT)
Copyright (c) 2018
A permissão é concedida, gratuita, a qualquer pessoa que obtenha uma cópia deste software e arquivos de documentação associados (o "software"), para lidar com o software sem restrição, inclusive sem limitação os direitos de usar, copiar, modificar, mesclar, publicar, distribuir, mobilizar o software e/ou vender cópias do software e permitir que as pessoas a quem
O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos em todas as cópias ou em partes substanciais do software.
O software é fornecido "como está", sem garantia de qualquer tipo, expresso ou implícito, incluindo, entre outros, as garantias de comercialização, aptidão para uma finalidade específica e não innoculação. Em nenhum caso os autores ou detentores de direitos autorais serão responsáveis por qualquer reclamação, danos ou outro passivo, seja em uma ação de contrato, delito ou não, decorrente de, fora ou em conexão com o software ou o uso ou outras negociações no software.