Clean exit when Ctrl+C arrives
[midgaard_bot.git] / midgaard_bot.go
1 /*
2 midgaard_bot, a Telegram bot which sets a bridge to Midgaard Merc MUD
3 Copyright (C) 2017 by Javier Sancho Fernandez <jsf at jsancho dot org>
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 package main
20
21 import (
22         "context"
23         "log"
24         "os"
25         "os/signal"
26
27         "github.com/jessevdk/go-flags"
28 )
29
30 var config struct {
31         Token string `short:"t" long:"token" description:"Telegram API Token" required:"true"`
32 }
33
34 func main() {
35         _, err := flags.Parse(&config)
36         if err != nil {
37                 log.Panic(err)
38         }
39
40         ctx, cancel := context.WithCancel(context.Background())
41         defer cancel()
42
43         err = initSessions(ctx)
44         if err != nil {
45                 log.Panic(err)
46         }
47
48         err = initTelegramWorkers(config.Token, ctx)
49         if err != nil {
50                 log.Panic(err)
51         }
52
53         intChannel := make(chan os.Signal, 1)
54         signal.Notify(intChannel, os.Interrupt)
55         <-intChannel
56
57         log.Print("Exit")
58 }