This commit is contained in:
adman
2026-07-16 14:02:28 +02:00
parent 5c5c391aa6
commit 7baa9990cb
7 changed files with 267 additions and 10 deletions
+2 -1
View File
@@ -4,6 +4,7 @@ import (
"encoding/json"
"errors"
"flag"
"log/slog"
"os"
"github.com/admin-else/strom/mc/api"
@@ -52,7 +53,7 @@ func Run(args []string) (err error) {
return
}
} else {
err = PleaseProvideArgumentErr
slog.Info("account", "name", a.Name, "uuid", a.Uuid)
return
}
err = json.NewEncoder(os.Stdout).Encode(data)
+11
View File
@@ -0,0 +1,11 @@
package cmd_util
import "github.com/admin-else/strom/mc/api"
func Account(s string) (a *api.Account, err error) {
if len(s) > 16 {
return api.NewAccountFromYGG(s)
}
a = api.NewOfflineAccount(s)
return
}
+1 -1
View File
@@ -77,7 +77,7 @@ func Help(args []string) (err error) {
func mainE() (err error) {
subcommands["help"] = Help
args := os.Args
args = []string{"TEST", "messenger", "-addr", "localhost"}
//args = []string{"TEST", "messenger", "-addr", "localhost"}
if len(args) < 2 {
err = ExpectedASubcommandErr
+24 -5
View File
@@ -3,7 +3,9 @@ package messenger
import (
"flag"
"github.com/admin-else/strom/mc/api"
"github.com/admin-else/strom/cmd/strom/cmd_util"
"github.com/admin-else/strom/mc/bot/chat"
"github.com/admin-else/strom/mc/bot/keepalive"
"github.com/admin-else/strom/mc/client"
"github.com/admin-else/strom/mc/event"
"github.com/admin-else/strom/mc/proto"
@@ -13,11 +15,12 @@ import (
var (
cmd = flag.NewFlagSet("status", flag.ContinueOnError)
connectToFlag = cmd.String("addr", "", "server address to connect to")
nameFlag = cmd.String("name", "strom_messenger", "the name to use")
accFlag = cmd.String("acc", "strom_messenger", "the name to use if longer will be treated as ygg token")
)
type Messenger struct {
*proto.Conn
chat *chat.Module
}
func (m *Messenger) OnChat(e *v1_21_11.PlayToClientPacketPlayerChat) (err error) {
@@ -36,22 +39,38 @@ func (m *Messenger) OnChatSystem(e *v1_21_11.PlayToClientPacketSystemChat) (err
}
func (m *Messenger) OnStdin(e event.Stdin) (err error) {
return m.Send(&v1_21_11.PlayToServerPacketChatMessage{Message: e.Val})
return m.chat.SendMessage(e.Val)
}
func Run(args []string) (err error) {
err = cmd.Parse(args)
if err != nil {
return
}
c, err := client.Login(*connectToFlag, api.NewOfflineAccount(*nameFlag))
acc, err := cmd_util.Account(*accFlag)
if err != nil {
return
}
c, err := client.Login(*connectToFlag, acc)
if err != nil {
return
}
defer c.Close()
m := Messenger{Conn: c}
chatMod, err := chat.Start(c, acc)
if err != nil {
return
}
m := &Messenger{
Conn: c,
chat: chatMod,
}
event.StartListingStdin(m.Loop)
m.Register(m.OnStdin)
m.RegisterUntilLatest(m.OnChat, m.OnChatUnsigned, m.OnChatSystem)
keepalive.Start(m.Conn)
return m.StartConn()
}