// Helper to parse incoming messages and return JarvisBot messages func (j *JarvisBot) parseMessage(msg *telebot.Message) *message { cmd := "" args := []string{} if msg.IsReply() { // We use a hack. All reply-to messages have the command it's replying to as the // part of the message. r := regexp.MustCompile(`\/\w*`) res := r.FindString(msg.ReplyTo.Text) for k, _ := range j.fmap { if res == k { cmd = k args = strings.Split(msg.Text, " ") break } } } else { msgTokens := strings.Split(msg.Text, " ") cmd, args = strings.ToLower(msgTokens[0]), msgTokens[1:] // Deal with commands of the form command@JarvisBot, which appear in // group chats. if strings.Contains(cmd, "@") { c := strings.Split(cmd, "@") cmd = c[0] } } return &message{Cmd: cmd, Args: args, Message: msg} }
// Helper to parse incoming messages and return MorningBot messages func (m *MorningBot) parseMessage(msg *telebot.Message) *message { cmd := "" args := []string{} if msg.IsReply() { // We use a hack. All reply-to messages have the command it's replying to as the // part of the message. r := regexp.MustCompile(`\/\w*`) res := r.FindString(msg.ReplyTo.Text) for k, _ := range m.fmap { if res == k { cmd = k args = strings.Split(msg.Text, " ") break } } } else if msg.Text != "" { msgTokens := strings.Split(msg.Text, " ") cmd, args = strings.ToLower(msgTokens[0]), msgTokens[1:] } return &message{Cmd: cmd, Args: args, Message: msg} }