56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
// +build ignore
|
|
|
|
/**
|
|
* Webhook example
|
|
*/
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
|
|
"github.com/neonxp/tamtam"
|
|
)
|
|
|
|
func main() {
|
|
// Initialisation
|
|
api := tamtam.New(os.Getenv("TOKEN"))
|
|
host := os.Getenv("HOST")
|
|
|
|
// Some methods demo:
|
|
info, err := api.Bots.GetBot()
|
|
log.Printf("Get me: %#v %#v", info, err)
|
|
|
|
subs, _ := api.Subscriptions.GetSubscriptions()
|
|
for _, s := range subs.Subscriptions {
|
|
_, _ = api.Subscriptions.Unsubscribe(s.Url)
|
|
}
|
|
subscriptionResp, err := api.Subscriptions.Subscribe(host+"/webhook", []string{})
|
|
log.Printf("Subscription: %#v %#v", subscriptionResp, err)
|
|
|
|
ch := make(chan interface{}) // Channel with updates from TamTam
|
|
|
|
http.HandleFunc("/webhook", api.GetHandler(ch))
|
|
go func() {
|
|
for {
|
|
upd := <-ch
|
|
log.Printf("Received: %#v", upd)
|
|
switch upd := upd.(type) {
|
|
case tamtam.MessageCreatedUpdate:
|
|
err := api.Messages.Send(
|
|
tamtam.NewMessage().
|
|
SetUser(upd.Message.Sender.UserId).
|
|
SetText(fmt.Sprintf("Hello, %s! Your message: %s", upd.Message.Sender.Name, upd.Message.Body.Text)),
|
|
)
|
|
log.Printf("Answer: %#v", err)
|
|
default:
|
|
log.Printf("Unknown type: %#v", upd)
|
|
}
|
|
}
|
|
}()
|
|
|
|
http.ListenAndServe(":10888", nil)
|
|
}
|