From 50191e20efb9916695336adcf7fe9b3e811aad6f Mon Sep 17 00:00:00 2001 From: Vaala Cat <-e> Date: Wed, 17 May 2023 15:14:31 +0800 Subject: [PATCH] feat: add get users --- conf/bot.go | 9 +++++++++ conf/mc.go | 15 +++++++++++++++ services/handler.go | 3 ++- services/mc/mc.go | 32 +++++++++++++++----------------- services/tgbot/bot.go | 24 ++++++++++-------------- services/utils/mc.go | 11 +++++++++++ services/utils/tg.go | 13 +++++++++++++ 7 files changed, 75 insertions(+), 32 deletions(-) create mode 100644 conf/bot.go create mode 100644 conf/mc.go create mode 100644 services/utils/mc.go create mode 100644 services/utils/tg.go diff --git a/conf/bot.go b/conf/bot.go new file mode 100644 index 0000000..242bf69 --- /dev/null +++ b/conf/bot.go @@ -0,0 +1,9 @@ +package conf + +import ( + tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" +) + +var ( + Bot *tgbotapi.BotAPI +) diff --git a/conf/mc.go b/conf/mc.go new file mode 100644 index 0000000..a3f6fc4 --- /dev/null +++ b/conf/mc.go @@ -0,0 +1,15 @@ +package conf + +import ( + "github.com/Tnze/go-mc/bot" + "github.com/Tnze/go-mc/bot/basic" + "github.com/Tnze/go-mc/bot/msg" + "github.com/Tnze/go-mc/bot/playerlist" +) + +var ( + Client *bot.Client + Player *basic.Player + ChatHandler *msg.Manager + PlayerList *playerlist.PlayerList +) diff --git a/services/handler.go b/services/handler.go index d1d3b40..dfbd37b 100644 --- a/services/handler.go +++ b/services/handler.go @@ -3,6 +3,7 @@ package services import ( "tg-mc/services/mc" "tg-mc/services/tgbot" + "tg-mc/services/utils" "github.com/sirupsen/logrus" ) @@ -11,7 +12,7 @@ func Run() { go tgbot.Run(mc.SendMsg) for { if err := mc.Run(); err != nil { - tgbot.SendMsg("致命错误:" + err.Error()) + utils.SendMsg("致命错误:" + err.Error()) logrus.Panic(err) } } diff --git a/services/mc/mc.go b/services/mc/mc.go index d4ff804..26cab9e 100644 --- a/services/mc/mc.go +++ b/services/mc/mc.go @@ -6,29 +6,23 @@ import ( "log" "strings" "tg-mc/conf" - "tg-mc/services/tgbot" "github.com/Tnze/go-mc/bot" "github.com/Tnze/go-mc/bot/basic" "github.com/Tnze/go-mc/bot/msg" "github.com/Tnze/go-mc/bot/playerlist" "github.com/Tnze/go-mc/chat" -) - -var ( - client *bot.Client - player *basic.Player - chatHandler *msg.Manager - playerList *playerlist.PlayerList + tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" ) func Run() error { - client = bot.NewClient() - client.Auth.Name = conf.GetBotSettings().MCBotName + conf.Client = bot.NewClient() + conf.Client.Auth.Name = conf.GetBotSettings().MCBotName + client := conf.Client - player = basic.NewPlayer(client, basic.DefaultSettings, basic.EventsListener{}) - playerList = playerlist.New(client) - chatHandler = msg.New(client, player, playerList, msg.EventsHandler{ + conf.Player = basic.NewPlayer(client, basic.DefaultSettings, basic.EventsListener{}) + conf.PlayerList = playerlist.New(client) + conf.ChatHandler = msg.New(client, conf.Player, conf.PlayerList, msg.EventsHandler{ SystemChat: onSystemMsg, PlayerChatMessage: onPlayerMsg, DisguisedChat: onDisguisedMsg, @@ -58,7 +52,7 @@ func Run() error { } func SendMsg(msg string) error { - if err := chatHandler.SendMessage(msg); err != nil { + if err := conf.ChatHandler.SendMessage(msg); err != nil { return err } return nil @@ -66,7 +60,8 @@ func SendMsg(msg string) error { func onSystemMsg(msg chat.Message, overlay bool) error { log.Printf("System: %v", msg) - tgbot.SendMsg(msg.String()) + m := tgbotapi.NewMessage(conf.GetBotSettings().GroupID, fmt.Sprintf("%v", msg)) + conf.Bot.Send(m) return nil } @@ -75,7 +70,8 @@ func onPlayerMsg(msg chat.Message, validated bool) error { s := strings.Split(msg.String(), " ") if len(s) > 1 { if s[0] != fmt.Sprintf("<%v>", conf.GetBotSettings().MCBotName) { - tgbot.SendMsg(msg.String()) + m := tgbotapi.NewMessage(conf.GetBotSettings().GroupID, fmt.Sprintf("%v", msg)) + conf.Bot.Send(m) } } return nil @@ -83,6 +79,8 @@ func onPlayerMsg(msg chat.Message, validated bool) error { func onDisguisedMsg(msg chat.Message) error { log.Printf("Disguised: %v", msg) - tgbot.SendMsg(msg.String()) + m := tgbotapi.NewMessage(conf.GetBotSettings().GroupID, fmt.Sprintf("%v", msg)) + conf.Bot.Send(m) return nil } + diff --git a/services/tgbot/bot.go b/services/tgbot/bot.go index a791cb4..d19df30 100644 --- a/services/tgbot/bot.go +++ b/services/tgbot/bot.go @@ -5,15 +5,12 @@ import ( "net/http" "net/url" "tg-mc/conf" + "tg-mc/services/utils" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" "github.com/sirupsen/logrus" ) -var ( - bot *tgbotapi.BotAPI -) - func Run(sendFunc func(string) error) { var err error @@ -24,7 +21,7 @@ func Run(sendFunc func(string) error) { } client := &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(proxyUrl)}} - bot, err = tgbotapi.NewBotAPIWithClient( + conf.Bot, err = tgbotapi.NewBotAPIWithClient( conf.GetBotSettings().BotToken, tgbotapi.APIEndpoint, client) @@ -33,13 +30,13 @@ func Run(sendFunc func(string) error) { log.Panic(err) } - bot.Debug = true + conf.Bot.Debug = true - log.Printf("Authorized on account %s", bot.Self.UserName) + log.Printf("Authorized on account %s", conf.Bot.Self.UserName) u := tgbotapi.NewUpdate(0) u.Timeout = 60 - updates := bot.GetUpdatesChan(u) + updates := conf.Bot.GetUpdatesChan(u) for update := range updates { if update.Message != nil { @@ -48,12 +45,11 @@ func Run(sendFunc func(string) error) { logrus.Infof("id is %d", update.Message.Chat.ID) sendFunc(update.Message.CommandArguments()) } + if update.Message.Command() == "list" { + logrus.Infof("id is %d", update.Message.Chat.ID) + m := tgbotapi.NewMessage(update.Message.Chat.ID, utils.GetAlivePlayer()) + conf.Bot.Send(m) + } } } } - -func SendMsg(msg string) error { - msgT := tgbotapi.NewMessage(conf.GetBotSettings().GroupID, msg) - _, err := bot.Send(msgT) - return err -} diff --git a/services/utils/mc.go b/services/utils/mc.go new file mode 100644 index 0000000..757c172 --- /dev/null +++ b/services/utils/mc.go @@ -0,0 +1,11 @@ +package utils + +import "tg-mc/conf" + +func GetAlivePlayer() string { + ans := "当前在线玩家:\n" + for _, v := range conf.PlayerList.PlayerInfos { + ans += v.Name + "\n" + } + return ans +} diff --git a/services/utils/tg.go b/services/utils/tg.go new file mode 100644 index 0000000..67a3ece --- /dev/null +++ b/services/utils/tg.go @@ -0,0 +1,13 @@ +package utils + +import ( + "tg-mc/conf" + + tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" +) + +func SendMsg(msg string) error { + msgT := tgbotapi.NewMessage(conf.GetBotSettings().GroupID, msg) + _, err := conf.Bot.Send(msgT) + return err +}