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