diff --git a/.gitignore b/.gitignore index 7dda685..55927c0 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ github/ gitlab/ rss/ factorial/ +dictionary/ diff --git a/matrix/commands.go b/matrix/commands.go index 4263334..bd0d184 100644 --- a/matrix/commands.go +++ b/matrix/commands.go @@ -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) diff --git a/matrix/matrix.go b/matrix/matrix.go index 0bf5a01..18ec999 100644 --- a/matrix/matrix.go +++ b/matrix/matrix.go @@ -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 {