add save game

This commit is contained in:
shoopea
2025-12-14 13:37:46 +01:00
parent 162a59b665
commit 8554b4ea2a
3 changed files with 38 additions and 11 deletions

35
bot.go
View File

@@ -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<Filename>[a-zA-Z0-9._\\/]+)")
r := regexp.MustCompile("^\\/save_config (?P<Filename>[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<Number>[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<Username>[a-zA-Z0-9]+) (?P<Duration>[a-z0-9]+)")