first commit
This commit is contained in:
		
							
								
								
									
										90
									
								
								services/mc/mc.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								services/mc/mc.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,90 @@
 | 
			
		||||
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
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user