package main import ( "encoding/json" "fmt" "io" "log" "net/http" "strings" ) var api_token = "421791796:AAE4wPbcqfLP1GNeGR3RTBiyX16fCj3HPAM" func main() { fmt.Println("vim-go") http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusNotFound) }) http.HandleFunc("/zeexkfcsdjpmncirkyelwzotjmmefcqtcogrfwnafidionxiacwnslwuhbwfuppjgwzbmazd", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("ok")) body, err := io.ReadAll(r.Body) if err != nil { log.Println(err) return } log.Println(string(body)) update := struct { Message *struct { ID int `json:"message_id"` Chat struct { ID int `json:"id"` } Text string } CallbackQuery *struct { ID string `json:"id"` Message struct { ID int `json:"message_id"` Chat struct { ID int `json:"id"` } Data string } } `json:"callback_query"` }{} err = json.Unmarshal(body, &update) if err != nil { log.Println(err) return } if update.Message != nil { go sendButtonAndDelete(update.Message.Chat.ID, update.Message.ID, update.Message.Text) } else if update.CallbackQuery != nil { answer_url := fmt.Sprintf("https://api.telegram.org/bot%s/answerCallbackQuery?callback_query_id=%stext=ok", api_token, update.CallbackQuery.ID) resp, err := http.Get(answer_url) if err != nil { log.Println(err) return } body, err = io.ReadAll(resp.Body) if err != nil { log.Println(err) return } log.Println(string(body)) } }) port := 28923 log.Panic(http.ListenAndServe(fmt.Sprintf(":%v", port), nil)) } func sendButtonAndDelete(chatId int, messageId int, text string) { url := fmt.Sprintf("https://api.telegram.org/bot%s/sendMessage", api_token) editReqFmt := ` { "chat_id": "%d", "text": "ok", "reply_markup": { "inline_keyboard": [[ { "text": "%s", "callback_data": "42" } ]] } ` editReq := fmt.Sprintf(editReqFmt, chatId, text) resp, err := http.Post(url, "application/json", strings.NewReader(editReq)) if err != nil { log.Println(err) return } log.Println(resp) body, err := io.ReadAll(resp.Body) if err != nil { log.Println(err) return } log.Println(string(body)) delete_url := fmt.Sprintf("https://api.telegram.org/bot%s/deleteMessage?chat_id=%d&message_id=%d", api_token, chatId, messageId) resp, err = http.Get(delete_url) if err != nil { log.Println(err) return } body, err = io.ReadAll(resp.Body) if err != nil { log.Println(err) return } log.Println(string(body)) } /* update_id: 547400623 message: message_id: 869 from: id: 385713421 is_bot: false first_name: Balakrishnan language_code: en chat: id: -832015899 title: Playbot type: group all_members_are_administrators: true date: 1671850862 text: Hi update_id: 547400624 callback_query: id: "1656626530601531051" from: id: 385713421 is_bot: false first_name: Balakrishnan language_code: en message: message_id: 868 from: id: 421791796 is_bot: true first_name: grocery_guy username: grocery_guy_bot chat: id: -832015899 title: Playbot type: group all_members_are_administrators: true date: 1671074930 text: foo reply_markup: inline_keyboard: - - text: blah callback_data: "42" chat_instance: "5165047605234327446" data: "42" */