]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - lib/rbot/message.rb
gettext support: initial works for language -> locale mappings
[user/henk/code/ruby/rbot.git] / lib / rbot / message.rb
index 521d62dcba703139eb8ff253c328f8bd1b7678bd..3292cb8323a1f9aad8c638c25a69059002a40fda 100644 (file)
@@ -14,10 +14,11 @@ module Irc
     :desc => "when replying with nick put this character after the nick of the user the bot is replying to"
   )
 
-  Color = "\003"
   Bold = "\002"
   Underline = "\037"
   Reverse = "\026"
+  Color = "\003"
+  ColorRx = /#{Color}\d\d?(?:,\d\d?)?/
 
   # base user message class, all user messages derive from this
   # (a user message is defined as having a source hostmask, a target
@@ -64,8 +65,8 @@ module Irc
       @server = server
 
       @identified = false
-      if @msg_wants_id && @server.capabilities["identify-msg".to_sym]
-        if @message =~ /([-+])(.*)/
+      if @msg_wants_id && @server.capabilities[:"identify-msg"]
+        if @message =~ /^([-+])(.*)/
           @identified = ($1=="+")
           @message = $2
         else
@@ -112,7 +113,7 @@ module Irc
     # strip mIRC colour escapes from a string
     def BasicUserMessage.stripcolour(string)
       return "" unless string
-      ret = string.gsub(/\cC\d\d?(?:,\d\d?)?/, "")
+      ret = string.gsub(ColorRx, "")
       #ret.tr!("\x00-\x1f", "")
       ret
     end
@@ -214,27 +215,27 @@ module Irc
     # <tt>@bot.say m.replyto, string</tt>
     # So if the message is private, it will reply to the user. If it was
     # in a channel, it will reply in the channel.
-    def plainreply(string)
-      @bot.say @replyto, string
+    def plainreply(string, options={})
+      @bot.say @replyto, string, options
       @replied = true
     end
 
     # Same as reply, but when replying in public it adds the nick of the user
     # the bot is replying to
-    def nickreply(string)
+    def nickreply(string, options={})
       extra = self.public? ? "#{@source}#{@bot.config['core.nick_postfix']} " : ""
-      @bot.say @replyto, extra + string
+      @bot.say @replyto, extra + string, options
       @replied = true
     end
 
     # the default reply style is to nickreply unless the reply already contains
     # the nick or core.reply_with_nick is set to false
     #
-    def reply(string)
+    def reply(string, options={})
       if @bot.config['core.reply_with_nick'] and not string =~ /\b#{@source}\b/
-        return nickreply(string)
+        return nickreply(string, options)
       end
-      plainreply(string)
+      plainreply(string, options)
     end
 
     # convenience method to reply to a message with an action. It's the
@@ -242,8 +243,8 @@ module Irc
     # <tt>@bot.action m.replyto, string</tt>
     # So if the message is private, it will reply to the user. If it was
     # in a channel, it will reply in the channel.
-    def act(string)
-      @bot.action @replyto, string
+    def act(string, options={})
+      @bot.action @replyto, string, options
       @replied = true
     end