X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Flinkbot.rb;h=f36aa9197ae0915112ea1764fa3c8052575b9b5b;hb=1e841175468b3e0357ab278a226a237fe4d7687e;hp=3c2f42b78d61ec38a475202703285f5e5b3e726e;hpb=6f5528a63b44e610a3d25d7fe583399163d7d2da;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/linkbot.rb b/data/rbot/plugins/linkbot.rb index 3c2f42b7..f36aa919 100644 --- a/data/rbot/plugins/linkbot.rb +++ b/data/rbot/plugins/linkbot.rb @@ -28,13 +28,17 @@ class LinkBot < Plugin Config.register Config::ArrayValue.new('linkbot.message_patterns', :default => ['^<(\S+?)@(\S+?)>\s+(.*)$', '^\((\S+?)@(\S+?)\)\s+(.*)$'], - :desc => "List of regexp which match linkbot messages; each regexp needs to have three captures, which in order are the nickname of the original speaker, network, and original message") + :desc => "List of regexp which match linkbot messages; each regexp needs to have three captures, which in order are the nickname of the original speaker, network, and original message", + :on_change => proc {|bot, v| bot.plugins['linkbot'].update_patterns}) # TODO use template strings instead of regexp for user friendliness # Initialize the plugin def initialize super - + update_patterns + end + + def update_patterns @message_patterns = @bot.config['linkbot.message_patterns'].map {|p| Regexp.new(p) } @@ -48,12 +52,15 @@ class LinkBot < Plugin return unless m.kind_of?(PrivMessage) # Now we know that _m_ is a PRIVMSG from a linkbot. Let's split it # in nick, network, message - if @message_patterns.any? {|p| m.message.match p} + if @message_patterns.any? {|p| m.message =~ p} # if the regexp doesn't contain all parts, the default values get used new_nick = $1 || 'unknown_nick' network = $2 || 'unknown_network' message = $3 || 'unknown_message' - + # strip any formatting codes in the new_nick. some people configure their linkbots + # to embed these codes in nicknames (such as to\B\Bm), to avoid triggering the + # person's highlight + new_nick.gsub!(/[#{Bold}#{Underline}#{Reverse}#{Italic}#{NormalText}]/, '') debug "#{m.sourcenick} reports that #{new_nick} said #{message.inspect} on #{network}" # One way to pass the new message back to the bot is to create a PrivMessage # and delegate it to the plugins