From 547a44a9fb502a308f596e6ffe1a90bd6c4607bc Mon Sep 17 00:00:00 2001 From: Dmitry Ilvokhin Date: Mon, 3 Mar 2025 21:31:10 +0000 Subject: Send message to Telegram --- messenger.go | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 messenger.go (limited to 'messenger.go') diff --git a/messenger.go b/messenger.go new file mode 100644 index 0000000..127ebc2 --- /dev/null +++ b/messenger.go @@ -0,0 +1,47 @@ +package main + +import ( + "encoding/json" + "fmt" + "io" + "net/http" + "net/url" +) + +type messenger struct { + Token string + ChatID string +} + +func (m *messenger) Send(f flat) error { + text := fmt.Sprintf("%v\n%v", f.Price, f.URL()) + data := url.Values{"chat_id": {m.ChatID}, "text": {text}} + resp, err := http.PostForm(m.makeURL(), data) + if err != nil { + return err + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + body, err := io.ReadAll(resp.Body) + if err != nil { + return err + } + type errorResponse struct { + ErrorCode int `json:"error_code"` + Description string `json:"description"` + } + errorResp := errorResponse{} + if err := json.Unmarshal(body, &errorResp); err != nil { + return err + } + return fmt.Errorf("Error code: %v, description: %v", + errorResp.ErrorCode, errorResp.Description) + } + return nil +} + +func (m *messenger) makeURL() string { + return fmt.Sprintf( + "https://api.telegram.org/bot%v/sendMessage", + m.Token) +} -- cgit v1.2.3-70-g09d2