Fix active command matching

This commit is contained in:
Tulir Asokan 2018-09-21 23:33:37 +03:00
parent b805641ea4
commit f06c6dd767
3 changed files with 7 additions and 3 deletions

1
.gitignore vendored
View file

@ -16,3 +16,4 @@ github/
gitlab/
rss/
factorial/
dictionary/

View file

@ -43,6 +43,7 @@ func (pc *ParsedCommand) parseCommandSyntax(command maubot.Command) error {
argumentEncountered := false
regexBuilder.WriteString("^!")
swBuilder.WriteRune('!')
words := strings.Split(command.Syntax, " ")
for i, word := range words {
argument, ok := command.Arguments[word]
@ -50,8 +51,10 @@ func (pc *ParsedCommand) parseCommandSyntax(command maubot.Command) error {
if ok && len(word) > 0 /*&& word[0] == '$'*/ {
argumentEncountered = true
regex := argument.Matches
if argument.Required {
if !argument.Required {
regex = fmt.Sprintf("(?:%s)?", regex)
} else {
regex = fmt.Sprintf("(%s)", regex)
}
pc.Arguments = append(pc.Arguments, word)
regexBuilder.WriteString(regex)

View file

@ -104,11 +104,11 @@ func (client *Client) GetEvent(roomID, eventID string) *maubot.Event {
func (client *Client) TriggerCommand(command *ParsedCommand, evt *maubot.Event) maubot.CommandHandlerResult {
handlers, ok := client.handlers[command.Name]
if !ok {
log.Warnf("Command %s triggered by %s doesn't have any handlers.\n", command.Name, evt.Sender)
log.Warnf("Command `%s` triggered by %s doesn't have any handlers.\n", command.Name, evt.Sender)
return maubot.Continue
}
log.Debugf("Command %s on client %s triggered by %s\n", command.Name, client.UserID, evt.Sender)
log.Debugf("Command `%s` on client %s triggered by %s\n", command.Name, client.UserID, evt.Sender)
for _, handler := range handlers {
result := handler(evt)
if result == maubot.StopCommandPropagation {