whatsapp-multi-devicewhatsapp-apiwhatsapprestgolanggogolang-whatsapp-apigolang-whatsappbotwhatsapp-web-multi-devicewhatsapp-api-gorest-api
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.1 KiB
42 lines
1.1 KiB
package services
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"github.com/aldinokemal/go-whatsapp-web-multidevice/structs"
|
|
"github.com/aldinokemal/go-whatsapp-web-multidevice/utils"
|
|
"github.com/gofiber/fiber/v2"
|
|
"go.mau.fi/whatsmeow"
|
|
waProto "go.mau.fi/whatsmeow/binary/proto"
|
|
"google.golang.org/protobuf/proto"
|
|
)
|
|
|
|
type SendServiceImpl struct {
|
|
WaCli *whatsmeow.Client
|
|
}
|
|
|
|
func NewSendService(waCli *whatsmeow.Client) SendService {
|
|
return &SendServiceImpl{
|
|
WaCli: waCli,
|
|
}
|
|
}
|
|
|
|
func (service SendServiceImpl) SendText(c *fiber.Ctx, request structs.SendMessageRequest) (response structs.SendMessageResponse, err error) {
|
|
msg := &waProto.Message{Conversation: proto.String(request.Message)}
|
|
recipient, ok := utils.ParseJID(request.PhoneNumber)
|
|
if !ok {
|
|
return response, errors.New("invalid JID " + request.PhoneNumber)
|
|
}
|
|
ts, err := service.WaCli.SendMessage(recipient, "", msg)
|
|
if err != nil {
|
|
return response, err
|
|
} else {
|
|
response.Status = fmt.Sprintf("Message sent (server timestamp: %s)", ts)
|
|
}
|
|
return response, nil
|
|
}
|
|
|
|
func (service SendServiceImpl) SendImage(c *fiber.Ctx) {
|
|
//TODO implement me
|
|
panic("implement me")
|
|
}
|