From e516a51ebe8ef7a72d557071af17d8321cefe58e Mon Sep 17 00:00:00 2001 From: Vaala Cat <-e> Date: Wed, 17 May 2023 16:14:11 +0800 Subject: [PATCH] feat: add msg name --- services/handler.go | 12 ++++++---- services/mc/mc.go | 53 ++++++++++++++++++++----------------------- services/tgbot/bot.go | 7 ++++-- 3 files changed, 37 insertions(+), 35 deletions(-) diff --git a/services/handler.go b/services/handler.go index 7304d4d..080e9b3 100644 --- a/services/handler.go +++ b/services/handler.go @@ -7,10 +7,12 @@ import ( ) func Run() { - go tgbot.Run(mc.SendMsg) - for { - if err := mc.Run(); err != nil { - utils.SendMsg("致命错误:" + err.Error()) + go func() { + for { + if err := mc.Run(); err != nil { + utils.SendMsg("致命错误:" + err.Error()) + } } - } + }() + tgbot.Run(mc.SendMsg) } diff --git a/services/mc/mc.go b/services/mc/mc.go index 9223321..2c3f7d6 100644 --- a/services/mc/mc.go +++ b/services/mc/mc.go @@ -1,7 +1,6 @@ package mc import ( - "errors" "fmt" "log" "strings" @@ -16,6 +15,7 @@ import ( "github.com/Tnze/go-mc/chat" "github.com/Tnze/go-mc/data/item" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" + "github.com/sirupsen/logrus" ) func Run() error { @@ -51,17 +51,7 @@ func Run() error { log.Println("Login success") - var perr bot.PacketHandlerError - for { - if err = client.HandleGame(); err == nil { - return errors.New("handle game error") - } - if errors.As(err, &perr) { - return err - } else { - return err - } - } + return client.HandleGame() } func SendMsg(msg string) error { @@ -72,28 +62,37 @@ func SendMsg(msg string) error { } func onSystemMsg(msg chat.Message, overlay bool) error { - log.Printf("System: %v", msg) - m := tgbotapi.NewMessage(conf.GetBotSettings().GroupID, fmt.Sprintf("%v", msg)) - conf.Bot.Send(m) + go func() { + log.Printf("System: %v", msg) + m := tgbotapi.NewMessage(conf.GetBotSettings().GroupID, fmt.Sprintf("%v", msg)) + conf.Bot.Send(m) + }() return nil } func onPlayerMsg(msg chat.Message, validated bool) error { - log.Printf("Player: %s", msg) - s := strings.Split(msg.String(), " ") - if len(s) > 1 { - if s[0] != fmt.Sprintf("<%v>", conf.GetBotSettings().MCBotName) { - m := tgbotapi.NewMessage(conf.GetBotSettings().GroupID, fmt.Sprintf("%v", msg)) - conf.Bot.Send(m) + go func() { + log.Printf("Player: %s", msg) + s := strings.Split(msg.String(), " ") + if len(s) > 1 { + if s[0] != fmt.Sprintf("<%v>", conf.GetBotSettings().MCBotName) { + m := tgbotapi.NewMessage(conf.GetBotSettings().GroupID, fmt.Sprintf("%v", msg)) + _, err := conf.Bot.Send(m) + if err != nil { + logrus.Error(err) + } + } } - } + }() return nil } func onDisguisedMsg(msg chat.Message) error { - log.Printf("Disguised: %v", msg) - m := tgbotapi.NewMessage(conf.GetBotSettings().GroupID, fmt.Sprintf("%v", msg)) - conf.Bot.Send(m) + go func() { + log.Printf("Disguised: %v", msg) + m := tgbotapi.NewMessage(conf.GetBotSettings().GroupID, fmt.Sprintf("%v", msg)) + conf.Bot.Send(m) + }() return nil } @@ -112,9 +111,6 @@ func onDeath() error { func onGameStart() error { log.Println("Game start") - if err := conf.ChatHandler.SendMessage("Hello, world"); err != nil { - return err - } return nil // if err isn't nil, HandleGame() will return it. } @@ -153,5 +149,6 @@ func (d DisconnectErr) Error() string { func onDisconnect(reason chat.Message) error { // return an error value so that we can stop main loop + logrus.Error("Disconnected: ", reason) return DisconnectErr{Reason: reason} } diff --git a/services/tgbot/bot.go b/services/tgbot/bot.go index d19df30..f134f60 100644 --- a/services/tgbot/bot.go +++ b/services/tgbot/bot.go @@ -1,6 +1,7 @@ package tgbot import ( + "fmt" "log" "net/http" "net/url" @@ -30,7 +31,7 @@ func Run(sendFunc func(string) error) { log.Panic(err) } - conf.Bot.Debug = true + conf.Bot.Debug = false log.Printf("Authorized on account %s", conf.Bot.Self.UserName) @@ -43,7 +44,9 @@ func Run(sendFunc func(string) error) { logrus.Infof("[%s] %s", update.Message.From.UserName, update.Message.Text) if update.Message.Command() == "talk" { logrus.Infof("id is %d", update.Message.Chat.ID) - sendFunc(update.Message.CommandArguments()) + m := fmt.Sprintf("%v: %v", update.Message.From.UserName, update.Message.CommandArguments()) + err := sendFunc(m) + logrus.WithError(err).Error("send message error") } if update.Message.Command() == "list" { logrus.Infof("id is %d", update.Message.Chat.ID)