diff --git a/bot.go b/bot.go index d795925..b73ea29 100644 --- a/bot.go +++ b/bot.go @@ -91,7 +91,8 @@ func (b *Bot) BotHandlers() { b.bot.Handle("/help", botHelp) b.bot.Handle("/version", botVersion) - b.bot.Handle("/save", botSave) + b.bot.Handle("/save_config", botSaveConfig) + b.bot.Handle("/save_game", botSaveGame) b.bot.Handle("/reset", botReset) b.bot.Handle("/ready", botReady) @@ -162,6 +163,8 @@ func botHelp(m *tb.Message) { msg = fmt.Sprintf("%s/lorries - lorries graph\r\n", msg) msg = fmt.Sprintf("%s/ships - ships graph\r\n", msg) msg = fmt.Sprintf("%s/version - version\r\n", msg) + msg = fmt.Sprintf("%s/save_config - save configuration\r\n", msg) + msg = fmt.Sprintf("%s/save_game - save game\r\n", msg) msg = fmt.Sprintf("%s/help - this\r\n", msg) bot.SendChat(m.Chat.ID, msg) @@ -320,7 +323,7 @@ func botActuallyDelete(m *tb.Message) { func botCompanies(m *tb.Message) { str := "Companies :" for k, v := range srv.Status.Companies { - str = str + "\r\n" + fmt.Sprintf(" - %s (%d - %t)", v.Name, k, v.Protected) + str = str + "\r\n" + fmt.Sprintf(" - %s (id:%d - protected:%t)", v.Name, k, v.Protected) } bot.SendChat(m.Chat.ID, str) } @@ -394,6 +397,7 @@ func botActuallyReset(m *tb.Message) { cc.Online = false cc.TimeLeft = 0 } + cfg.Clients = make(map[int]*ClientConfig) bot.SendChat(m.Chat.ID, "Game resetted.") } delete(botActionMap, ref) @@ -636,13 +640,13 @@ func botVersion(m *tb.Message) { return } -func botSave(m *tb.Message) { +func botSaveConfig(m *tb.Message) { if m.Sender.ID != int(cfg.Telegram.AdminID) { bot.SendChat(m.Chat.ID, "Only the admin can use this command.") return } - r := regexp.MustCompile("^\\/save (?P[a-zA-Z0-9._\\/]+)") + r := regexp.MustCompile("^\\/save_config (?P[a-zA-Z0-9._\\/]+)") if !r.MatchString(m.Text) { bot.SendChat(m.Chat.ID, "Wrong usage.") @@ -661,6 +665,29 @@ func botSave(m *tb.Message) { return } +func botSaveGame(m *tb.Message) { + if m.Sender.ID != int(cfg.Telegram.AdminID) { + bot.SendChat(m.Chat.ID, "Only the admin can use this command.") + return + } + + r := regexp.MustCompile("^\\/savge (?P[0-9]+)") + + if !r.MatchString(m.Text) { + bot.SendChat(m.Chat.ID, "Wrong usage.") + return + } + + px := PacketAdminRCon{ + Packet: Packet{PType: AdminPacketAdminRCon}, + Command: fmt.Sprintf("save %d", r.ReplaceAllString(m.Text, "${Number}")), + } + + srv.Send(px.Bytes()) + + return +} + func botTransfer(m *tb.Message) { r := regexp.MustCompile("^\\/transfer @(?P[a-zA-Z0-9]+) (?P[a-z0-9]+)") diff --git a/config.go b/config.go index 6ad8f8f..779c5bb 100644 --- a/config.go +++ b/config.go @@ -4,7 +4,7 @@ import ( _ "embed" "encoding/json" "image/color" - "io/ioutil" + "os" "time" "github.com/tidwall/pretty" @@ -74,7 +74,7 @@ func (c *Config) Load(path string) error { return err } - b, err := ioutil.ReadFile(path) + b, err := os.ReadFile(path) if err != nil { return c.Save(path) } @@ -94,7 +94,7 @@ func (c *Config) Save(path string) error { return nil } - err = ioutil.WriteFile(path, b, 0644) + err = os.WriteFile(path, b, 0644) return err } diff --git a/version.go b/version.go index 120262a..a430ce6 100644 --- a/version.go +++ b/version.go @@ -1,6 +1,6 @@ // Code generated by version.sh (@generated) DO NOT EDIT. package main -var githash = "564e078" -var buildstamp = "2021-12-29_01:21:09" -var commits = "259" -var version = "564e078-b259 - 2021-12-29_01:21:09" +var githash = "162a59b" +var buildstamp = "2025-12-14_12:36:09" +var commits = "261" +var version = "162a59b-b261 - 2025-12-14_12:36:09"