end
- # Define standard IRC attriubtes (not so standard actually,
+ # Define standard IRC attributes (not so standard actually,
# but the closest thing we have ...)
Bold = "\002"
Underline = "\037"
:dark_gray => 14,
:lightgray => 15,
:light_gray => 15,
- :white => 16
+ :white => 0
}
# Convert a String or Symbol into a color number
ret << ' plainmessage=' << plainmessage.inspect
ret << fields if fields
ret << ' (identified)' if identified?
- ret << ' (addressed to me)' if address?
+ if address?
+ ret << ' (addressed to me'
+ ret << ', with prefix' if prefixed?
+ ret << ')'
+ end
ret << ' (replied)' if replied?
ret << ' (ignored)' if ignored?
ret << ' (in thread)' if in_thread?
@bot = bot
@source = source
@address = false
+ @prefixed = false
@target = target
@message = message || ""
@replied = false
return @address
end
+ # returns true if the messaged was addressed to the bot via the address
+ # prefix. This can be used to tell appart "!do this" from "botname, do this"
+ def prefixed?
+ return @prefixed
+ end
+
# strip mIRC colour escapes from a string
def BasicUserMessage.stripcolour(string)
return "" unless string
bot.config['core.address_prefix'].each {|mprefix|
if @message.gsub!(/^#{Regexp.escape(mprefix)}\s*/, "")
@address = true
+ @prefixed = true
break
end
}
@bot.ctcp_notice @source, @ctcp, string, options
end
- # convenience method to reply "okay" in the current language to the
- # message
- def plainokay
- self.reply @bot.lang.get("okay"), :nick => false
+ # convenience method to reply a literal message in the current language to the message
+ def plain_literal(ident)
+ self.reply @bot.lang.get(ident), :nick => false
end
# Like the above, but append the username
- def nickokay
- str = @bot.lang.get("okay").dup
+ def nick_literal(ident)
+ str = @bot.lang.get(ident).dup
if self.public?
# remove final punctuation
str.gsub!(/[!,.]$/,"")
end
# the default okay style is the same as the default reply style
- #
def okay
- @bot.config['core.reply_with_nick'] ? nickokay : plainokay
+ @bot.config['core.reply_with_nick'] ? nick_literal('okay') : plain_literal('okay')
+ end
+
+ # thanks the user in reply
+ def thanks
+ @bot.config['core.reply_with_nick'] ? nick_literal('thanks') : plain_literal('thanks')
end
# send a NOTICE to the message source
end
end
+ # class to manage LIST replies
+ class ListMessage < BasicUserMessage
+ attr_accessor :list
+ def initialize(bot, server, source, target, list=Hash.new)
+ super(bot, server, source, target, "")
+ @list = []
+ end
+
+ def inspect
+ fields = ' list=' << list.inspect
+ super(fields)
+ end
+ end
+
+
# class to manage NAME replies
class NamesMessage < BasicUserMessage
attr_accessor :users