mirror of
https://github.com/grassrootseconomics/farmstar-survey-backend.git
synced 2024-11-16 15:26:46 +01:00
53 lines
818 B
Go
53 lines
818 B
Go
|
package telegram
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"errors"
|
||
|
|
||
|
"github.com/carlmjohnson/requests"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
endpoint = "https://api.telegram.org"
|
||
|
)
|
||
|
|
||
|
type (
|
||
|
TelegramClient struct {
|
||
|
endpoint string
|
||
|
chatID string
|
||
|
}
|
||
|
|
||
|
MessageInput struct {
|
||
|
ChatID string `json:"chat_id"`
|
||
|
Text string `json:"text"`
|
||
|
}
|
||
|
|
||
|
TgResponse struct {
|
||
|
Ok bool `json:"ok"`
|
||
|
}
|
||
|
)
|
||
|
|
||
|
func New(apiKey string) *TelegramClient {
|
||
|
return &TelegramClient{
|
||
|
endpoint: endpoint + "/bot" + apiKey + "/",
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (tg *TelegramClient) SendMessage(ctx context.Context, payload MessageInput) (bool, error) {
|
||
|
var resp TgResponse
|
||
|
|
||
|
if err := requests.
|
||
|
URL(tg.endpoint + "sendMessage").
|
||
|
BodyJSON(&payload).
|
||
|
ToJSON(&resp).
|
||
|
Fetch(ctx); err != nil {
|
||
|
return false, err
|
||
|
}
|
||
|
|
||
|
if !resp.Ok {
|
||
|
return false, errors.New("telegram error")
|
||
|
}
|
||
|
|
||
|
return true, nil
|
||
|
}
|