5 class BasicsModule < CoreBotModule
\r
8 return unless m.kind_of?(PrivMessage)
\r
9 if m.message =~ /^\001PING\s+(.+)\001/
\r
12 @bot.notice m.source, "\001PING #{ping_id}\001"
\r
13 @bot.irclog "@ #{m.source} pinged me"
\r
15 @bot.notice m.source, "\001PING #{ping_id}\001"
\r
16 @bot.irclog "@ #{m.source} pinged #{m.target}"
\r
21 def bot_join(m, param)
\r
23 @bot.join param[:chan], param[:pass]
\r
25 @bot.join param[:chan]
\r
29 def bot_part(m, param)
\r
31 @bot.part param[:chan]
\r
33 @bot.part m.target if m.public?
\r
37 def bot_quit(m, param)
\r
38 @bot.quit(param[:msg] ? param[:msg].join(" ") : nil)
\r
41 def bot_restart(m, param)
\r
42 @bot.restart(param[:msg] ? param[:msg].join(" ") : nil)
\r
45 def bot_hide(m, param)
\r
49 def bot_say(m, param)
\r
50 @bot.say param[:where], param[:what].join(" ")
\r
53 def bot_action(m, param)
\r
54 @bot.action param[:where], param[:what].join(" ")
\r
57 def bot_mode(m, param)
\r
58 @bot.mode param[:where], param[:what], param[:who].join(" ")
\r
61 def bot_ping(m, param)
\r
65 def bot_quiet(m, param)
\r
66 if param.has_key?(:where)
\r
67 @bot.set_quiet param[:where].sub(/^here$/, m.target.downcase)
\r
71 # Make sense when the commmand is given in private or in a non-quieted
\r
76 def bot_talk(m, param)
\r
77 if param.has_key?(:where)
\r
78 @bot.reset_quiet param[:where].sub(/^here$/, m.target.downcase)
\r
82 # Make sense when the commmand is given in private or in a non-quieted
\r
87 def bot_help(m, param)
\r
88 m.reply @bot.help(param[:topic].join(" "))
\r
91 #TODO move these to a "chatback" plugin
\r
92 # when (/^(botsnack|ciggie)$/i)
\r
93 # @bot.say m.replyto, @lang.get("thanks_X") % m.sourcenick if(m.public?)
\r
94 # @bot.say m.replyto, @lang.get("thanks") if(m.private?)
\r
95 # when (/^(hello|howdy|hola|salut|bonjour|sup|niihau|hey|hi(\W|$)|yo(\W|$)).*/i)
\r
96 # @bot.say m.replyto, @lang.get("hello_X") % m.sourcenick if(m.public?)
\r
97 # @bot.say m.replyto, @lang.get("hello") if(m.private?)
\r
98 # when (/^\s*(hello|howdy|hola|salut|bonjour|sup|niihau|hey|hi|yo(\W|$))[\s,-.]+#{Regexp.escape(@bot.nick)}$/i)
\r
99 # @bot.say m.replyto, @lang.get("hello_X") % m.sourcenick
\r
100 # when (/^#{Regexp.escape(@bot.nick)}!*$/)
\r
101 # @bot.say m.replyto, @lang.get("hello_X") % m.sourcenick
\r
103 # handle help requests for "core" topics
\r
104 def help(cmd, topic="")
\r
107 return "quit [<message>] => quit IRC with message <message>"
\r
109 return "restart => completely stop and restart the bot (including reconnect)"
\r
111 return "join <channel> [<key>] => join channel <channel> with secret key <key> if specified. #{myself} also responds to invites if you have the required access level"
\r
113 return "part <channel> => part channel <channel>"
\r
115 return "hide => part all channels"
\r
117 return "save => save current dynamic data and configuration"
\r
119 return "rescan => reload modules and static facts"
\r
121 return "nick <nick> => attempt to change nick to <nick>"
\r
123 return "say <channel>|<nick> <message> => say <message> to <channel> or in private message to <nick>"
\r
125 return "action <channel>|<nick> <message> => does a /me <message> to <channel> or in private message to <nick>"
\r
127 return "quiet [in here|<channel>] => with no arguments, stop speaking in all channels, if \"in here\", stop speaking in this channel, or stop speaking in <channel>"
\r
129 return "talk [in here|<channel>] => with no arguments, resume speaking in all channels, if \"in here\", resume speaking in this channel, or resume speaking in <channel>"
\r
131 return "version => describes software version"
\r
133 return "ping => replies with a pong"
\r
135 # return "botsnack => reward #{myself} for being good"
\r
137 # return "hello|hi|hey|yo [#{myself}] => greet the bot"
\r
139 return "#{name}: quit, restart, join, part, hide, save, rescan, nick, say, action, topic, quiet, talk, version, ping"#, botsnack, hello"
\r
144 basics = BasicsModule.new
\r
146 basics.map "quit *msg",
\r
147 :action => 'bot_quit',
\r
148 :defaults => { :msg => nil },
\r
149 :auth_path => 'quit'
\r
150 basics.map "restart *msg",
\r
151 :action => 'bot_restart',
\r
152 :defaults => { :msg => nil },
\r
153 :auth_path => 'quit'
\r
155 basics.map "quiet [in] [:where]",
\r
156 :action => 'bot_quiet',
\r
157 :auth_path => 'talk::set'
\r
158 basics.map "talk [in] [:where]",
\r
159 :action => 'bot_talk',
\r
160 :auth_path => 'talk::set'
\r
162 basics.map "say :where *what",
\r
163 :action => 'bot_say',
\r
164 :auth_path => 'talk::do'
\r
165 basics.map "action :where *what",
\r
166 :action => 'bot_action',
\r
167 :auth_path => 'talk::do'
\r
168 basics.map "mode :where :what *who",
\r
169 :action => 'bot_mode',
\r
170 :auth_path => 'talk::do'
\r
172 basics.map "join :chan :pass",
\r
173 :action => 'bot_join',
\r
174 :defaults => {:pass => nil},
\r
175 :auth_path => 'move'
\r
176 basics.map "part :chan",
\r
177 :action => 'bot_part',
\r
178 :defaults => {:chan => nil},
\r
179 :auth_path => 'move'
\r
181 :action => 'bot_hide',
\r
182 :auth_path => 'move'
\r
185 :action => 'bot_ping',
\r
186 :auth_path => '!ping!'
\r
187 basics.map "help *topic",
\r
188 :action => 'bot_help',
\r
189 :defaults => { :topic => [""] },
\r
190 :auth_path => '!help!'
\r
192 basics.default_auth('*', false)
\r