package mc import ( "errors" "fmt" "log" "strings" "tg-mc/conf" "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" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" ) func Run() error { conf.Client = bot.NewClient() conf.Client.Auth.Name = conf.GetBotSettings().MCBotName client := conf.Client 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, }) 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 := conf.ChatHandler.SendMessage(msg); err != nil { return err } return nil } 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) 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) } } 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) return nil }