+#-- vim:sw=2:et
+#++
+#
+# :title: IRC message datastructures
+
module Irc
BotConfig.register BotConfigArrayValue.new('core.address_prefix',
:default => [], :wizard => true,
"#{@source.user}@#{@source.host}" rescue @source.to_s
end
+ # Access the botuser corresponding to the source, if any
+ #
+ def botuser
+ @bot.auth.autologin(@source) rescue @bot.auth.everyone
+ end
+
+
# Was the message from an identified user?
def identified?
return @identified
@address = true
end
- if(@message =~ /^\001(\S+)\s(.+)\001/)
+ if(@message =~ /^\001(\S+)(\s(.+))?\001/)
@ctcp = $1
- @message = $2
+ # FIXME need to support quoting of NULL and CR/LF, see
+ # http://www.irchelp.org/irchelp/rfc/ctcpspec.html
+ @message = $3 || String.new
@action = @ctcp == 'ACTION'
debug "Received CTCP command #{@ctcp} with options #{@message} (action? #{@action})"
end
@replied = true
end
- # send a CTCP response, i.e. a private notice to the sender
- def ctcp_reply(command, string, options={})
- @bot.ctcp_notice @source, command, string, options
+ # send a CTCP response, i.e. a private NOTICE to the sender
+ # with the same CTCP command and the reply as a parameter
+ def ctcp_reply(string, options={})
+ @bot.ctcp_notice @source, @ctcp, string, options
end
# convenience method to reply "okay" in the current language to the