-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfunction.go
52 lines (41 loc) · 999 Bytes
/
function.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package ilber
import (
"encoding/json"
"log"
"net/http"
"os"
"github.com/igungor/ilber/bot"
"github.com/igungor/ilber/command"
"github.com/igungor/telegram"
)
var ilber *bot.Bot
func init() {
logger := log.New(os.Stdout, "ilber: ", log.LstdFlags|log.Lshortfile)
var err error
ilber, err = bot.New(logger)
if err != nil {
logger.Fatalf("Could not initialize the bot: %v\n", err)
}
}
func MainHandler(w http.ResponseWriter, r *http.Request) {
defer w.WriteHeader(http.StatusOK)
var u telegram.Update
_ = json.NewDecoder(r.Body).Decode(&u)
msg := &u.Message
if msg.IsService() {
ilber.Logger.Printf("incoming service message: %v", msg)
return
}
cmdname := msg.Command()
if cmdname == "" {
ilber.Logger.Printf("no command found from message: %v", msg)
return
}
// is the command even registered?
cmd := command.Lookup(cmdname)
if cmd == nil {
ilber.Logger.Printf("unregistered command %v: %v", cmdname, msg)
return
}
cmd.Run(r.Context(), ilber, msg)
}