Class: Irc::BasicUserMessage
- Inherits:
-
Object
- Object
- Irc::BasicUserMessage
- Defined in:
- /home/apoc/projects/ruby/rbot/lib/rbot/message.rb,
/home/apoc/projects/ruby/rbot/lib/rbot/core/utils/extends.rb
Overview
base user message class, all user messages derive from this (a user message is defined as having a source hostmask, a target nick/channel and a message part)
Direct Known Subclasses
BanlistMessage, InviteMessage, JoinMessage, KickMessage, ListMessage, ModeChangeMessage, MotdMessage, NamesMessage, NickMessage, NoSuchTargetMessage, QuitMessage, TopicMessage, UnknownMessage, UserMessage, WelcomeMessage, WhoisMessage
Instance Attribute Summary (collapse)
-
- (Object) bot
readonly
associated bot.
-
- (Object) ignored
(also: #ignored?)
should the message be ignored?.
-
- (Object) in_thread
(also: #in_thread?)
set this to true if the method that delegates the message is run in a thread.
-
- (Object) logmessage
contents of the message (for logging purposes).
-
- (Object) message
contents of the message (stripped of initial/final format codes).
-
- (Object) plainmessage
contents of the message (stripped of all formatting).
-
- (Object) replied
(also: #replied?)
has the message been replied to/handled by a plugin?.
-
- (Object) server
readonly
associated server.
-
- (Object) source
readonly
User that originated the message.
-
- (Object) target
readonly
User/Channel message was sent to.
-
- (Object) time
readonly
when the message was received.
Class Method Summary (collapse)
- + (Object) strip_formatting(string)
- + (Object) strip_initial_formatting(string)
-
+ (Object) stripcolour(string)
strip mIRC colour escapes from a string.
Instance Method Summary (collapse)
-
- (Boolean) address?
returns true if the message was addressed to the bot.
-
- (Object) botuser
Access the botuser corresponding to the source, if any.
-
- (Boolean) identified?
Was the message from an identified user?.
-
- (BasicUserMessage) initialize(bot, server, source, target, message)
constructor
- instantiate a new Message bot
- associated bot class server
- Server where the message took place source
- User that sent the message target
- User/Channel is destined for message
-
actual message.
- - (Object) inspect(fields = nil)
-
- (Object) parse_channel_list(string)
We extend the BasicUserMessage class with a method that parses a string which is a channel list as matched by IN_CHAN(_LIST) and co.
-
- (Boolean) prefixed?
returns true if the messaged was addressed to the bot via the address prefix.
-
- (Object) recurse_depth
The recurse depth of a message, for fake messages.
-
- (Object) recurse_depth=(val)
Set the recurse depth of a message, for fake messages.
-
- (Object) sourceaddress
Access the user@host of the source.
-
- (Object) sourcenick
Access the nick of the source.
Constructor Details
- (BasicUserMessage) initialize(bot, server, source, target, message)
instantiate a new Message
- bot
-
associated bot class
- server
-
Server where the message took place
- source
-
User that sent the message
- target
-
User/Channel is destined for
- message
-
actual message
179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 179 def initialize(bot, server, source, target, ) @msg_wants_id = false unless defined? @msg_wants_id @time = Time.now @bot = bot @source = source @address = false @prefixed = false @target = target @message = || "" @replied = false @server = server @ignored = false @in_thread = false @identified = false if @msg_wants_id && @server.capabilities[:identify-msg"] if @message =~ /^([-+])(.*)/ @identified = ($1=="+") @message = $2 else warning "Message does not have identification" end end @logmessage = @message.dup @plainmessage = BasicUserMessage.strip_formatting(@message) @message = BasicUserMessage.strip_initial_formatting(@message) if target && target == @bot.myself @address = true end end |
Instance Attribute Details
- (Object) bot (readonly)
associated bot
115 116 117 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 115 def bot @bot end |
- (Object) ignored Also known as: ignored?
should the message be ignored?
143 144 145 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 143 def ignored @ignored end |
- (Object) in_thread Also known as: in_thread?
set this to true if the method that delegates the message is run in a thread
147 148 149 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 147 def in_thread @in_thread end |
- (Object) logmessage
contents of the message (for logging purposes)
133 134 135 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 133 def @logmessage end |
- (Object) message
contents of the message (stripped of initial/final format codes)
130 131 132 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 130 def @message end |
- (Object) plainmessage
contents of the message (stripped of all formatting)
136 137 138 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 136 def @plainmessage end |
- (Object) replied Also known as: replied?
has the message been replied to/handled by a plugin?
139 140 141 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 139 def replied @replied end |
- (Object) server (readonly)
associated server
118 119 120 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 118 def server @server end |
- (Object) source (readonly)
User that originated the message
124 125 126 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 124 def source @source end |
- (Object) target (readonly)
User/Channel message was sent to
127 128 129 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 127 def target @target end |
- (Object) time (readonly)
when the message was received
121 122 123 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 121 def time @time end |
Class Method Details
+ (Object) strip_formatting(string)
264 265 266 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 264 def BasicUserMessage.strip_formatting(string) string.gsub(FormattingRx,"") end |
+ (Object) strip_initial_formatting(string)
259 260 261 262 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 259 def BasicUserMessage.strip_initial_formatting(string) return "" unless string ret = string.gsub(/^#{FormattingRx}|#{FormattingRx}$/,"") end |
+ (Object) stripcolour(string)
strip mIRC colour escapes from a string
252 253 254 255 256 257 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 252 def BasicUserMessage.stripcolour(string) return "" unless string ret = string.gsub(ColorRx, "") #ret.tr!("\x00-\x1f", "") ret end |
Instance Method Details
- (Boolean) address?
returns true if the message was addressed to the bot. This includes any private message to the bot, or any public message which looks like it's addressed to the bot, e.g. “bot: foo”, “bot, foo”, a kick message when bot was kicked etc.
241 242 243 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 241 def address? return @address end |
- (Object) botuser
Access the botuser corresponding to the source, if any
227 228 229 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 227 def botuser source.botuser rescue @bot.auth.everyone end |
- (Boolean) identified?
Was the message from an identified user?
233 234 235 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 233 def identified? return @identified end |
- (Object) inspect(fields = nil)
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 150 def inspect(fields=nil) ret = self.__to_s__[0..-2] ret << ' bot=' << @bot.__to_s__ ret << ' server=' << server.to_s ret << ' time=' << time.to_s ret << ' source=' << source.to_s ret << ' target=' << target.to_s ret << ' message=' << .inspect ret << ' logmessage=' << .inspect ret << ' plainmessage=' << .inspect ret << fields if fields ret << ' (identified)' if identified? 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? ret << '>' end |
- (Object) parse_channel_list(string)
We extend the BasicUserMessage class with a method that parses a string which is a channel list as matched by IN_CHAN(_LIST) and co. The method returns an array of channel names, where 'private' or 'pvt' is replaced by the Symbol :“?”, 'here' is replaced by the channel of the message or by :“?” (depending on whether the message target is the bot or a Channel), and 'anywhere' and 'everywhere' are replaced by Symbol :*
441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/utils/extends.rb', line 441 def parse_channel_list(string) return [:*] if [:anywhere, :everywhere].include? string.to_sym string.scan( /(?:^|,?(?:\s+and)?\s+)(?:in|on\s+)?(#{Regexp::Irc::GEN_CHAN}|here|private|pvt)/ ).map { |chan_ar| chan = chan_ar.first case chan.to_sym when :private, :pvt :?" when :here case self.target when Channel self.target.name else :?" end else chan end }.uniq end |
- (Boolean) prefixed?
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”
247 248 249 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 247 def prefixed? return @prefixed end |
- (Object) recurse_depth
The recurse depth of a message, for fake messages. 0 means an original message
465 466 467 468 469 470 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/utils/extends.rb', line 465 def recurse_depth unless defined? @recurse_depth @recurse_depth = 0 end @recurse_depth end |
- (Object) recurse_depth=(val)
Set the recurse depth of a message, for fake messages. 0 should only be used by original messages
474 475 476 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/utils/extends.rb', line 474 def recurse_depth=(val) @recurse_depth = val end |
- (Object) sourceaddress
Access the user@host of the source
221 222 223 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 221 def sourceaddress "#{@source.user}@#{@source.host}" rescue @source.to_s end |
- (Object) sourcenick
Access the nick of the source
215 216 217 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/message.rb', line 215 def sourcenick @source.nick rescue @source.to_s end |