add help and transfer
This commit is contained in:
		
							parent
							
								
									9614fccb68
								
							
						
					
					
						commit
						cd98db8489
					
				
							
								
								
									
										66
									
								
								bot.go
									
									
									
									
									
								
							
							
						
						
									
										66
									
								
								bot.go
									
									
									
									
									
								
							@ -73,6 +73,8 @@ func (b *Bot) BotHandlers() {
 | 
			
		||||
	b.bot.Handle("/take", botTake)
 | 
			
		||||
	b.bot.Handle("/passwd", botPasswd)
 | 
			
		||||
	b.bot.Handle("/say", botSay)
 | 
			
		||||
	b.bot.Handle("/help", botHelp)
 | 
			
		||||
	b.bot.Handle("/transfer", botTransfer)
 | 
			
		||||
 | 
			
		||||
	b.bot.Handle(tb.OnPhoto, botPhoto)
 | 
			
		||||
	b.bot.Handle(tb.OnChannelPost, botChannelPost)
 | 
			
		||||
@ -268,6 +270,48 @@ func botGive(m *tb.Message) {
 | 
			
		||||
	bot.SendChat(m.Chat.ID, fmt.Sprintf("@%s now has %s left.", uStr, cc.TimeLeft))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func botTransfer(m *tb.Message) {
 | 
			
		||||
	r := regexp.MustCompile("^/transfer @(?P<Username>[a-zA-Z0-9]+) (?P<Duration>[a-z0-9]+)")
 | 
			
		||||
 | 
			
		||||
	ccFrom, ok := cfg.Clients[m.Sender.ID]
 | 
			
		||||
	if !ok {
 | 
			
		||||
		bot.SendChat(m.Chat.ID, "Client not registered.")
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	dStr := r.ReplaceAllString(m.Text, "${Duration}")
 | 
			
		||||
	d, err := time.ParseDuration(dStr)
 | 
			
		||||
	logErrorDebug(err, "botTransfer : time.ParseDuration")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		bot.SendChat(m.Chat.ID, "Cannot parse duration.")
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ccFrom.TimeLeft < d {
 | 
			
		||||
		bot.SendChat(m.Chat.ID, "Not enough time left for user.")
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	uStr := r.ReplaceAllString(m.Text, "${Username}")
 | 
			
		||||
	var toID int
 | 
			
		||||
 | 
			
		||||
	for ccID, cc := range cfg.Clients {
 | 
			
		||||
		if cc.Username == uStr {
 | 
			
		||||
			toID = ccID
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if toID == 0 {
 | 
			
		||||
		bot.SendChat(m.Chat.ID, "No such user found.")
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ccTo := cfg.Clients[toID]
 | 
			
		||||
	ccTo.TimeLeft += d
 | 
			
		||||
	ccFrom.TimeLeft -= d
 | 
			
		||||
 | 
			
		||||
	bot.SendChat(m.Chat.ID, fmt.Sprintf("@%s now has %s left.\r\n@%s has %s left.", uStr, ccTo.TimeLeft, ccFrom.Username, ccFrom.TimeLeft))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func botTake(m *tb.Message) {
 | 
			
		||||
	if m.Sender.ID != int(cfg.Telegram.AdminID) {
 | 
			
		||||
		bot.SendChat(m.Chat.ID, "Only the admin can use this command.")
 | 
			
		||||
@ -298,6 +342,7 @@ func botTake(m *tb.Message) {
 | 
			
		||||
	logErrorDebug(err, "botGive : time.ParseDuration")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		bot.SendChat(m.Chat.ID, "Cannot parse duration.")
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cc := cfg.Clients[u]
 | 
			
		||||
@ -306,6 +351,27 @@ func botTake(m *tb.Message) {
 | 
			
		||||
	bot.SendChat(m.Chat.ID, fmt.Sprintf("@%s now has %s left.", uStr, cc.TimeLeft))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func botHelp(m *tb.Message) {
 | 
			
		||||
	msg := ""
 | 
			
		||||
	msg = fmt.Sprintf("%s/pause      - pause the game\r\n", msg)
 | 
			
		||||
	msg = fmt.Sprintf("%s/unpause    - unpause the game\r\n", msg)
 | 
			
		||||
	msg = fmt.Sprintf("%s/register   - register company\r\n", msg)
 | 
			
		||||
	msg = fmt.Sprintf("%s/deregister - deregister company\r\n", msg)
 | 
			
		||||
	msg = fmt.Sprintf("%s/delete     - delete company\r\n", msg)
 | 
			
		||||
	msg = fmt.Sprintf("%s/companies  - list companies\r\n", msg)
 | 
			
		||||
	msg = fmt.Sprintf("%s/clients    - list clients\r\n", msg)
 | 
			
		||||
	msg = fmt.Sprintf("%s/players    - list players\r\n", msg)
 | 
			
		||||
	msg = fmt.Sprintf("%s/give       - give time to player\r\n", msg)
 | 
			
		||||
	msg = fmt.Sprintf("%s/take       - take time from player\r\n", msg)
 | 
			
		||||
	msg = fmt.Sprintf("%s/transfer   - transfer time to player\r\n", msg)
 | 
			
		||||
	msg = fmt.Sprintf("%s/passwd     - change passwd\r\n", msg)
 | 
			
		||||
	msg = fmt.Sprintf("%s/say        - send msg to the game\r\n", msg)
 | 
			
		||||
	msg = fmt.Sprintf("%s/help       - this\r\n", msg)
 | 
			
		||||
 | 
			
		||||
	bot.SendChat(m.Chat.ID, msg)
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func botSay(m *tb.Message) {
 | 
			
		||||
	r := regexp.MustCompile("^\\/say( )+(?P<Message>.+)$")
 | 
			
		||||
	if !r.MatchString(m.Text) {
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
// Code generated by version.sh (@generated) DO NOT EDIT.
 | 
			
		||||
package main
 | 
			
		||||
var githash = "d09710e"
 | 
			
		||||
var buildstamp = "2021-11-26_00:35:33"
 | 
			
		||||
var commits = "207"
 | 
			
		||||
var version = "d09710e-b207 - 2021-11-26_00:35:33"
 | 
			
		||||
var githash = "9614fcc"
 | 
			
		||||
var buildstamp = "2021-11-28_10:31:27"
 | 
			
		||||
var commits = "208"
 | 
			
		||||
var version = "9614fcc-b208 - 2021-11-28_10:31:27"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user