You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.2 KiB
35 lines
1.2 KiB
package telegrampackage
|
|
|
|
import "strings"
|
|
|
|
func ParseTelegramBotCommand(fullCmd string) []string {
|
|
var results []string
|
|
currentInsideQuote := false
|
|
splitted := strings.Split(fullCmd, " ")
|
|
for _, currSplit := range splitted {
|
|
if !currentInsideQuote {
|
|
if strings.HasPrefix(currSplit, "\"") {
|
|
if len(currSplit) >= 2 && !strings.HasSuffix(currSplit, "\\\"") && strings.HasSuffix(currSplit, "\"") {
|
|
currSplit = strings.ReplaceAll(currSplit, "\\\"", "\"")
|
|
results = append(results, currSplit[1:len(currSplit)-1])
|
|
} else {
|
|
currentInsideQuote = true
|
|
currSplit = strings.ReplaceAll(currSplit, "\\\"", "\"")
|
|
results = append(results, currSplit[1:])
|
|
}
|
|
} else {
|
|
results = append(results, currSplit)
|
|
}
|
|
} else {
|
|
if !strings.HasSuffix(currSplit, "\\\"") && strings.HasSuffix(currSplit, "\"") {
|
|
currentInsideQuote = false
|
|
currSplit = strings.ReplaceAll(currSplit, "\\\"", "\"")
|
|
results[len(results)-1] = results[len(results)-1] + " " + currSplit[:len(currSplit)-1]
|
|
} else {
|
|
currSplit = strings.ReplaceAll(currSplit, "\\\"", "\"")
|
|
results[len(results)-1] = results[len(results)-1] + " " + currSplit
|
|
}
|
|
}
|
|
}
|
|
return results
|
|
}
|