X-Git-Url: https://git.jsancho.org/?p=midgaard_bot.git;a=blobdiff_plain;f=midgaard_bot.go;h=10aab4b06a134f37768ac8a2df5302416de89b72;hp=a311c97e54c31553ae52b0e910de83b9e2a14f72;hb=HEAD;hpb=54d3318115d6fd32364f5993ff67d0461c162aef diff --git a/midgaard_bot.go b/midgaard_bot.go index a311c97..10aab4b 100644 --- a/midgaard_bot.go +++ b/midgaard_bot.go @@ -1,18 +1,47 @@ +/* +midgaard_bot, a Telegram bot which sets a bridge to Midgaard Merc MUD +Copyright (C) 2017 by Javier Sancho Fernandez + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + package main import ( "context" "log" + "os" + "os/signal" "github.com/jessevdk/go-flags" ) -var config struct { +type TelegramConfig struct { Token string `short:"t" long:"token" description:"Telegram API Token" required:"true"` } +type MercConfig struct { + Host string `short:"h" long:"host" description:"Host and port for Merc MUD" required:"true"` +} + +var Config struct { + Telegram TelegramConfig `group:"Telegram config"` + Merc MercConfig `group:"Merc MUD config"` +} + func main() { - _, err := flags.Parse(&config) + _, err := flags.Parse(&Config) if err != nil { log.Panic(err) } @@ -20,20 +49,19 @@ func main() { ctx, cancel := context.WithCancel(context.Background()) defer cancel() - err = initSessions(ctx) + err = initSessions(Config.Merc.Host, ctx) if err != nil { log.Panic(err) } - err = initTelegramWorkers(config.Token, ctx) + err = initTelegramWorkers(Config.Telegram.Token, ctx) if err != nil { log.Panic(err) } - for { - select { - case <-ctx.Done(): - break - } - } + intChannel := make(chan os.Signal, 1) + signal.Notify(intChannel, os.Interrupt) + <-intChannel + + log.Print("Exit") }