# File rbot/plugins/quotes.rb, line 105
  def listen(m)
    return unless(m.kind_of? PrivMessage)

    command = m.message.dup
    if(m.address? && m.private?)
      case command
        when (/^addquote\s+(#\S+)\s+(.*)/)
          channel = $1
          quote = $2
          if(@bot.auth.allow?("addquote", m.source, m.replyto))
            if(channel =~ /^#/)
              num = addquote(m.source, channel, quote)
              m.reply "added the quote (##{num})"
            end
          end
        when (/^getquote\s+(#\S+)$/)
          channel = $1
          if(@bot.auth.allow?("getquote", m.source, m.replyto))
            quote, total = getquote(m.source, channel)
            if(quote)
              m.reply "[#{quote.num}] #{quote.quote}"
            else
              m.reply "quote not found!"
            end
          end
        when (/^getquote\s+(#\S+)\s+(\d+)$/)
          channel = $1
          num = $2.to_i
          if(@bot.auth.allow?("getquote", m.source, m.replyto))
            quote, total = getquote(m.source, channel, num)
            if(quote)
              m.reply "[#{quote.num}] #{quote.quote}"
            else
              m.reply "quote not found!"
            end
          end
        when (/^whoquote\s+(#\S+)\s+(\d+)$/)
          channel = $1
          num = $2.to_i
          if(@bot.auth.allow?("getquote", m.source, m.replyto))
            quote, total = getquote(m.source, channel, num)
            if(quote)
              m.reply "quote #{quote.num} added by #{quote.source}"
            else
              m.reply "quote not found!"
            end
          end
        when (/^whenquote\s+(#\S+)\s+(\d+)$/)
          channel = $1
          num = $2.to_i
          if(@bot.auth.allow?("getquote", m.source, m.replyto))
            quote, total = getquote(m.source, channel, num)
            if(quote)
              m.reply "quote #{quote.num} added on #{quote.date}"
            else
              m.reply "quote not found!"
            end
          end
        when (/^topicquote\s+(#\S+)$/)
          channel = $1
          if(@bot.auth.allow?("topicquote", m.source, m.replyto))
            quote, total = getquote(m.source, channel)
            if(quote)
              @bot.topic channel, "[#{quote.num}] #{quote.quote}"
            else
              m.reply "quote not found!"
            end
          end
        when (/^topicquote\s+(#\S+)\s+(\d+)$/)
          channel = $1
          num = $2.to_i
          if(@bot.auth.allow?("topicquote", m.source, m.replyto))
            quote, total = getquote(m.source, channel, num)
            if(quote)
              @bot.topic channel, "[#{quote.num}] #{quote.quote}"
            else
              m.reply "quote not found!"
            end
          end
        when (/^delquote\s+(#\S+)\s+(\d+)$/)
          channel = $1
          num = $2.to_i
          if(@bot.auth.allow?("delquote", m.source, m.replyto))
            if(delquote(channel, num))
              @bot.okay m.replyto
            else
              m.reply "quote not found!"
            end
          end
        when (/^searchquote\s+(#\S+)\s+(.*)$/)
          channel = $1
          reg = $2
          if(@bot.auth.allow?("getquote", m.source, m.replyto))
            quote, total = searchquote(m.source, channel, reg)
            if(quote)
              m.reply "[#{quote.num}] #{quote.quote}"
            else
              m.reply "quote not found!"
            end
          end
        when (/^countquote$/)
          if(@bot.auth.allow?("getquote", m.source, m.replyto))
            total = countquote(m.source)
            m.reply "#{total} quotes"
          end
        when (/^countquote\s+(#\S+)\s*(.*)$/)
          channel = $1
          reg = $2
          if(@bot.auth.allow?("getquote", m.source, m.replyto))
            total = countquote(m.source, channel, reg)
            if(reg.length > 0)
              m.reply "#{total} quotes match: #{reg}"
            else
              m.reply "#{total} quotes"
            end
          end
      end
    elsif (m.address? || (@bot.config["QUOTE_LISTEN"] && command.gsub!(/^!/, "")))
      case command
        when (/^addquote\s+(.+)/)
          if(@bot.auth.allow?("addquote", m.source, m.replyto))
            num = addquote(m.source, m.target, $1)
            m.reply "added the quote (##{num})"
          end
        when (/^getquote$/)
          if(@bot.auth.allow?("getquote", m.source, m.replyto))
            quote, total = getquote(m.source, m.target)
            if(quote)
              m.reply "[#{quote.num}] #{quote.quote}"
            else
              m.reply "no quotes found!"
            end
          end
        when (/^getquote\s+(\d+)$/)
          num = $1.to_i
          if(@bot.auth.allow?("getquote", m.source, m.replyto))
            quote, total = getquote(m.source, m.target, num)
            if(quote)
              m.reply "[#{quote.num}] #{quote.quote}"
            else
              m.reply "quote not found!"
            end
          end
        when (/^whenquote\s+(\d+)$/)
          num = $1.to_i
          if(@bot.auth.allow?("getquote", m.source, m.replyto))
            quote, total = getquote(m.source, m.target, num)
            if(quote)
              m.reply "quote #{quote.num} added on #{quote.date}"
            else
              m.reply "quote not found!"
            end
          end
        when (/^whoquote\s+(\d+)$/)
          num = $1.to_i
          if(@bot.auth.allow?("getquote", m.source, m.replyto))
            quote, total = getquote(m.source, m.target, num)
            if(quote)
              m.reply "quote #{quote.num} added by #{quote.source}"
            else
              m.reply "quote not found!"
            end
          end
        when (/^topicquote$/)
          if(@bot.auth.allow?("topicquote", m.source, m.replyto))
            quote, total = getquote(m.source, m.target)
            if(quote)
              @bot.topic m.target, "[#{quote.num}] #{quote.quote}"
            else
              m.reply "no quotes found!"
            end
          end
        when (/^topicquote\s+(\d+)$/)
          num = $1.to_i
          if(@bot.auth.allow?("topicquote", m.source, m.replyto))
            quote, total = getquote(m.source, m.target, num)
            if(quote)
              @bot.topic m.target, "[#{quote.num}] #{quote.quote}"
            else
              m.reply "quote not found!"
            end
          end
        when (/^delquote\s+(\d+)$/)
          num = $1.to_i
          if(@bot.auth.allow?("delquote", m.source, m.replyto))
            if(delquote(m.target, num))
              @bot.okay m.replyto
            else
              m.reply "quote not found!"
            end
          end
        when (/^searchquote\s+(.*)$/)
          reg = $1
          if(@bot.auth.allow?("getquote", m.source, m.replyto))
            quote, total = searchquote(m.source, m.target, reg)
            if(quote)
              m.reply "[#{quote.num}] #{quote.quote}"
            else
              m.reply "quote not found!"
            end
          end
        when (/^countquote(?:\s+(.*))?$/)
          reg = $1
          if(@bot.auth.allow?("getquote", m.source, m.replyto))
            total = countquote(m.source, m.target, reg)
            if(reg && reg.length > 0)
              m.reply "#{total} quotes match: #{reg}"
            else
              m.reply "#{total} quotes"
            end
          end
      end
    end
  end