listen (QuotePlugin)

    # 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