Skip to content

Instantly share code, notes, and snippets.

@wuriyanto48
Created July 1, 2025 02:20
Show Gist options
  • Save wuriyanto48/429706e6619eda274c828d887caa34d2 to your computer and use it in GitHub Desktop.
Save wuriyanto48/429706e6619eda274c828d887caa34d2 to your computer and use it in GitHub Desktop.
How to set Telegram Webhook

Set Webhook with specific URL

POST https://api.telegram.org/bot1xxxxxxx:AAGxxxxxxxxxxxxxxxxxxxxxxxxxxxx/setWebhook?url=https://api.mycompamy.co/telegram/webhook/111

Check Webhook info

GET https://api.telegram.org/bot1xxxxxxx:AAGxxxxxxxxxxxxxxxxxxxxxxxxxxxx/getWebhookInfo

Result

{
  "ok": true,
  "result": {
    "url": "https://api.mycompamy.co/telegram/webhook/111",
    "has_custom_certificate": false,
    "pending_update_count": 0,
    "max_connections": 40,
    "ip_address": "180.77.44.55",
    "allowed_updates": [
      "message"
    ]
  }
}
package main
import (
"log"
"net/http"
"os"
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
)
func main() {
// Bot token
botToken := os.Getenv("TELEGRAM_BOT_TOKEN") // atau langsung "1027xxxx:xxx"
publicURL := "https://api.mycompamy.co/telegram/webhook/111" // domain yang bisa diakses Telegram
bot, err := tgbotapi.NewBotAPI(botToken)
if err != nil {
log.Fatalf("Failed to create bot: %v", err)
}
// Set webhook ke Telegram
_, err = bot.Request(tgbotapi.NewWebhook(publicURL))
if err != nil {
log.Fatalf("Failed to set webhook: %v", err)
}
// Pastikan Telegram bisa akses /telegram endpoint
info, err := bot.GetWebhookInfo()
if err != nil {
log.Fatalf("Failed to get webhook info: %v", err)
}
if info.URL != publicURL {
log.Printf("⚠️ Webhook not active! Expected %s, got %s", publicURL, info.URL)
}
// Handler untuk terima update dari Telegram
http.HandleFunc("/telegram", func(w http.ResponseWriter, r *http.Request) {
update := tgbotapi.Update{}
if err := tgbotapi.ParseUpdate(r, &update); err != nil {
log.Printf("Could not parse update: %v", err)
return
}
if update.Message != nil {
log.Printf("Received message from %s: %s", update.Message.From.UserName, update.Message.Text)
msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Halo juga 👋")
bot.Send(msg)
}
})
log.Println("🚀 Bot server listening on :8080")
log.Fatal(http.ListenAndServe(":8080", nil))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment