X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Furl.rb;h=022553182e763660d01f1916af448e6675ad40f3;hb=6faf07c4cc86fbb4f3c07b3c0ef3136f477e9371;hp=d08c24e837fea4fe2bb88b6829a7ba5e322fef8a;hpb=1722077126d2b9407f0811dbe7298b730cabf178;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/url.rb b/data/rbot/plugins/url.rb index d08c24e8..02255318 100644 --- a/data/rbot/plugins/url.rb +++ b/data/rbot/plugins/url.rb @@ -28,7 +28,9 @@ class UrlPlugin < Plugin :default => ['localhost', '^192\.168\.', '^10\.', '^127\.', '^172\.(1[6-9]|2\d|31)\.'], :on_change => Proc.new { |bot, v| bot.plugins['url'].reset_no_info_hosts }, :desc => "A list of regular expressions matching hosts for which no info should be provided") - + Config.register Config::ArrayValue.new('url.only_on_channels', + :desc => "Show link info only on these channels", + :default => []) def initialize super @@ -120,7 +122,16 @@ class UrlPlugin < Plugin return extra.join(", ") if title or not @bot.config['url.titles_only'] end - def handle_urls(m, urls, display_info=@bot.config['url.display_link_info']) + def handle_urls(m, params={}) + opts = { + :display_info => @bot.config['url.display_link_info'] + }.merge params + urls = opts[:urls] + display_info= opts[:display_info] + unless (channels = @bot.config['url.only_on_channels']).empty? + return unless channels.map { |c| c.downcase }.include?(m.channel.downcase) + end + return if urls.empty? debug "found urls #{urls.inspect}" list = m.public? ? @registry[m.target] : nil @@ -128,7 +139,7 @@ class UrlPlugin < Plugin urls_displayed = 0 urls.each do |urlstr| debug "working on #{urlstr}" - next unless urlstr =~ /^https?:/ + next unless urlstr =~ /^https?:\/\/./ title = nil debug "Getting title for #{urlstr}..." reply = nil @@ -154,7 +165,8 @@ class UrlPlugin < Plugin if display_info > urls_displayed if reply - m.plainreply(reply, :overlong => :truncate) + m.reply reply, :overlong => :truncate, :to => :public, + :nick => (m.address? ? :auto : false) urls_displayed += 1 end end @@ -177,17 +189,16 @@ class UrlPlugin < Plugin def info(m, params) escaped = URI.escape(params[:urls].to_s, OUR_UNSAFE) urls = URI.extract(escaped) - Thread.new { handle_urls(m, urls, params[:urls].length) } + Thread.new { handle_urls(m, :urls => urls, :display_info => params[:urls].length) } end - def listen(m) - return unless m.kind_of?(PrivMessage) + def message(m) return if m.address? escaped = URI.escape(m.message, OUR_UNSAFE) urls = URI.extract(escaped, ['http', 'https']) return if urls.empty? - Thread.new { handle_urls(m, urls) } + Thread.new { handle_urls(m, :urls => urls) } end def reply_urls(opts={})