]> git.jsancho.org Git - midgaard_bot.git/blobdiff - midgaard_bot.go
GPLv3 license
[midgaard_bot.git] / midgaard_bot.go
index d4c3410d81e4b188c49bd3bd078dc07c9fbda800..a11ab8af639d019d6993ebaf2d20e44663356e1d 100644 (file)
@@ -1,10 +1,27 @@
+/*
+midgaard_bot, a Telegram bot which sets a bridge to Midgaard Merc MUD
+Copyright (C) 2017 by Javier Sancho Fernandez <jsf at jsancho dot org>
+
+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 <http://www.gnu.org/licenses/>.
+*/
+
 package main
 
 import (
        "context"
        "log"
 
-       "github.com/go-telegram-bot-api/telegram-bot-api"
        "github.com/jessevdk/go-flags"
 )
 
@@ -12,55 +29,29 @@ var config struct {
        Token string `short:"t" long:"token" description:"Telegram API Token" required:"true"`
 }
 
-func recv_task(bot *tgbotapi.BotAPI, sendChannel chan tgbotapi.Chattable, ctx context.Context) {
-       u := tgbotapi.NewUpdate(0)
-       u.Timeout = 60
-
-       updates, _ := bot.GetUpdatesChan(u)
-
-       for {
-               select {
-               case update := <-updates:
-                       log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text)
-
-                       msg := tgbotapi.NewMessage(update.Message.Chat.ID, update.Message.Text)
-                       msg.ReplyToMessageID = update.Message.MessageID
-                       sendChannel <- msg
-               case <-ctx.Done():
-                       return
-               }
-       }
-}
-
-func send_task(bot *tgbotapi.BotAPI, sendChannel chan tgbotapi.Chattable, ctx context.Context) {
-       for {
-               select {
-               case msg := <-sendChannel:
-                       bot.Send(msg)
-               case <-ctx.Done():
-                       return
-               }
-       }
-}
-
 func main() {
        _, err := flags.Parse(&config)
        if err != nil {
                log.Panic(err)
        }
 
-       bot, err := tgbotapi.NewBotAPI(config.Token)
+       ctx, cancel := context.WithCancel(context.Background())
+       defer cancel()
+
+       err = initSessions(ctx)
        if err != nil {
                log.Panic(err)
        }
 
-       bot.Debug = true
-
-       log.Printf("Authorized on account %s", bot.Self.UserName)
+       err = initTelegramWorkers(config.Token, ctx)
+       if err != nil {
+               log.Panic(err)
+       }
 
-       ctx, cancel := context.WithCancel(context.Background())
-       sendChannel := make(chan tgbotapi.Chattable)
-       go send_task(bot, sendChannel, ctx)
-       recv_task(bot, sendChannel, ctx)
-       cancel()
+       for {
+               select {
+               case <-ctx.Done():
+                       break
+               }
+       }
 }