afk/main.go

62 lines
1.3 KiB
Go

package main
import (
"flag"
"os"
"github.com/Tnze/go-mc/bot"
"github.com/Tnze/go-mc/bot/basic"
"github.com/Tnze/go-mc/chat"
"github.com/Tnze/go-mc/yggdrasil"
"github.com/google/uuid"
"github.com/peterbourgon/ff/v3"
"github.com/peterbourgon/ff/v3/fftoml"
"go.jolheiser.com/beaver"
)
func main() {
fs := flag.NewFlagSet("afk", flag.ExitOnError)
emailFlag := fs.String("email", "", "Login Email")
passwordFlag := fs.String("password", "", "Login Password")
ipFlag := fs.String("ip", "", "Server IP")
if err := ff.Parse(fs, os.Args[1:],
ff.WithEnvVarPrefix("AFK"),
ff.WithConfigFileFlag("config"),
ff.WithAllowMissingConfigFile(true),
ff.WithConfigFileParser(fftoml.New().Parse),
); err != nil {
beaver.Fatal(err)
return
}
client := bot.NewClient()
auth, err := yggdrasil.Authenticate(*emailFlag, *passwordFlag)
if err != nil {
panic(err)
}
client.Auth.UUID, client.Auth.Name = auth.SelectedProfile()
client.Auth.AsTk = auth.AccessToken()
err = client.JoinServer(*ipFlag)
if err != nil {
beaver.Fatal(err)
}
beaver.Info("Login success")
basic.EventsListener{
ChatMsg: onChatMsg,
}.Attach(client)
err = client.HandleGame()
if err != nil {
beaver.Fatal(err)
}
}
func onChatMsg(c chat.Message, _ byte, _ uuid.UUID) error {
beaver.Info(c)
return nil
}