update register/deregister
This commit is contained in:
parent
93de4325fd
commit
a100fb6c68
76
bot.go
76
bot.go
@ -52,6 +52,7 @@ func (b *Bot) BotHandlers() {
|
||||
b.bot.Handle("/pause", botPause)
|
||||
b.bot.Handle("/unpause", botUnpause)
|
||||
b.bot.Handle("/register", botRegister)
|
||||
b.bot.Handle("/deregister", botDeregister)
|
||||
b.bot.Handle("/delete", botDelete)
|
||||
b.bot.Handle("/companies", botCompanies)
|
||||
b.bot.Handle("/clients", botClients)
|
||||
@ -170,6 +171,35 @@ func botPlayers(m *tb.Message) {
|
||||
bot.SendChat(m.Chat.ID, str)
|
||||
}
|
||||
|
||||
func botDeregister(m *tb.Message) {
|
||||
cc, ok := cfg.Clients[m.Sender.ID]
|
||||
if !ok {
|
||||
cc = &ClientConfig{
|
||||
UserID: m.Sender.ID,
|
||||
Username: m.Sender.Username,
|
||||
CompanyID: 255,
|
||||
TimeLeft: 0,
|
||||
}
|
||||
cfg.Clients[m.Sender.ID] = cc
|
||||
bot.SendChat(m.Chat.ID, "User isn't registered.")
|
||||
return
|
||||
}
|
||||
if cc.CompanyID != 255 {
|
||||
for coID, co := range srv.Status.Companies {
|
||||
if coID == cc.CompanyID {
|
||||
cc.CompanyID = 255
|
||||
bot.SendChat(m.Chat.ID, fmt.Sprintf("Deregistered from %s. %s playable left.", co.Name, cc.TimeLeft))
|
||||
return
|
||||
}
|
||||
}
|
||||
logInfoAlert("botRegister : %s : no such CompanyID : %d", cc.Username, cc.CompanyID)
|
||||
cc.CompanyID = 255
|
||||
bot.SendChat(m.Chat.ID, fmt.Sprintf("Registered company didn't exist anymore. %s playable left.", cc.TimeLeft))
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func botRegister(m *tb.Message) {
|
||||
cc, ok := cfg.Clients[m.Sender.ID]
|
||||
if !ok {
|
||||
@ -177,9 +207,22 @@ func botRegister(m *tb.Message) {
|
||||
UserID: m.Sender.ID,
|
||||
Username: m.Sender.Username,
|
||||
CompanyID: 255,
|
||||
TimeLeft: 0,
|
||||
}
|
||||
cfg.Clients[m.Sender.ID] = cc
|
||||
} else {
|
||||
if cc.CompanyID != 255 {
|
||||
for coID, co := range srv.Status.Companies {
|
||||
if coID == cc.CompanyID {
|
||||
bot.SendChat(m.Chat.ID, fmt.Sprintf("Already registered %s. Please /deregister first.", co.Name))
|
||||
return
|
||||
}
|
||||
}
|
||||
logInfoAlert("botRegister : %s : no such CompanyID : %d", cc.Username, cc.CompanyID)
|
||||
cc.CompanyID = 255
|
||||
}
|
||||
}
|
||||
|
||||
coList := make(map[uint8]struct{})
|
||||
for coID, _ := range srv.Status.Companies {
|
||||
coList[coID] = struct{}{}
|
||||
@ -195,15 +238,44 @@ func botRegister(m *tb.Message) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if len(coList) == 0 {
|
||||
bot.SendChat(m.Chat.ID, "No company to register")
|
||||
return
|
||||
}
|
||||
|
||||
r := regexp.MustCompile("^\\/register( )+(?P<Company>[a-zA-Z\\.\\-0-9 ]+)$")
|
||||
if r.MatchString(m.Text) {
|
||||
// we have a parameter
|
||||
coName := r.ReplaceAllString(m.Text, "${Company}")
|
||||
for coID, co := range srv.Status.Companies {
|
||||
if co.Name == coName {
|
||||
for _, c := range cfg.Clients {
|
||||
if c.CompanyID == coID {
|
||||
bot.SendChat(m.Chat.ID, fmt.Sprintf("Company %s is already registered to @%s", coName, c.Username))
|
||||
return
|
||||
}
|
||||
}
|
||||
cc.CompanyID = coID
|
||||
if cc.TimeLeft == 0 {
|
||||
days := int(time.Now().Sub(cfg.Game.StartDate).Hours() / 24)
|
||||
cc.TimeLeft = cfg.Game.StartingAllotment + cfg.Game.DailyAllotment*time.Duration(days)
|
||||
}
|
||||
bot.SendChat(m.Chat.ID, fmt.Sprintf("@%s registered %s (with %s playable)", cc.Username, srv.Status.Companies[cc.CompanyID].Name, cc.TimeLeft))
|
||||
return
|
||||
}
|
||||
}
|
||||
bot.SendChat(m.Chat.ID, fmt.Sprintf("Can't find company %s", coName))
|
||||
return
|
||||
}
|
||||
|
||||
if len(coList) == 1 {
|
||||
for id, _ := range coList {
|
||||
cc.CompanyID = id
|
||||
days := int(time.Now().Sub(cfg.Game.StartDate).Hours() / 24)
|
||||
cc.TimeLeft = cfg.Game.StartingAllotment + cfg.Game.DailyAllotment*time.Duration(days)
|
||||
if cc.TimeLeft == 0 {
|
||||
days := int(time.Now().Sub(cfg.Game.StartDate).Hours() / 24)
|
||||
cc.TimeLeft = cfg.Game.StartingAllotment + cfg.Game.DailyAllotment*time.Duration(days)
|
||||
}
|
||||
bot.SendChat(m.Chat.ID, fmt.Sprintf("@%s registered %s (with %s playable)", cc.Username, srv.Status.Companies[cc.CompanyID].Name, cc.TimeLeft))
|
||||
return
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
// Code generated by version.sh (@generated) DO NOT EDIT.
|
||||
package main
|
||||
var githash = "38a1d8a"
|
||||
var buildstamp = "2021-11-08_14:54:17"
|
||||
var commits = "174"
|
||||
var version = "38a1d8a-b174 - 2021-11-08_14:54:17"
|
||||
var githash = "93de432"
|
||||
var buildstamp = "2021-11-09_05:24:29"
|
||||
var commits = "175"
|
||||
var version = "93de432-b175 - 2021-11-09_05:24:29"
|
||||
|
Loading…
Reference in New Issue
Block a user