package mc import ( "errors" "fmt" "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" "github.com/sirupsen/logrus" ) var ( client *bot.Client player *basic.Player chatHandler *msg.Manager playerList *playerlist.PlayerList ) func Run() error { client = bot.NewClient() client.Auth.Name = conf.GetBotSettings().MCBotName player = basic.NewPlayer(client, basic.DefaultSettings, basic.EventsListener{}) playerList = playerlist.New(client) chatHandler = msg.New(client, player, playerList, msg.EventsHandler{ SystemChat: onSystemMsg, PlayerChatMessage: onPlayerMsg, DisguisedChat: onDisguisedMsg, }) err := client.JoinServer( conf.GetBotSettings().MCServer, ) if err != nil { log.Fatal(err) } 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) { log.Print(perr) } else { return err } } } func SendMsg(msg string) error { if err := chatHandler.SendMessage(msg); err != nil { return err } return nil } func onSystemMsg(msg chat.Message, overlay bool) error { log.Printf("System: %v", msg) tgbot.SendMsg(msg.String()) return nil } func onPlayerMsg(msg chat.Message, validated bool) error { log.Printf("Player: %s", msg) s := strings.Split(msg.String(), " ") if len(s) > 1 { logrus.Error(s[0]) if s[0] != fmt.Sprintf("<%v>", conf.GetBotSettings().MCBotName) { tgbot.SendMsg(msg.String()) } } return nil } func onDisguisedMsg(msg chat.Message) error { log.Printf("Disguised: %v", msg) tgbot.SendMsg(msg.String()) return nil }