Class: BasicsModule
- Inherits:
-
CoreBotModule
- Object
- CoreBotModule
- BasicsModule
- Defined in:
- /home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb
Overview
– vim:sw=2:et ++
:title: rbot basic management from IRC
- Author
-
Giuseppe “Oblomov” Bilotta <giuseppe.bilotta@gmail.com>
Instance Method Summary (collapse)
- - (Object) bot_action(m, param)
- - (Object) bot_channel_list(m, param)
- - (Object) bot_help(m, param)
- - (Object) bot_hide(m, param)
- - (Object) bot_join(m, param)
- - (Object) bot_mode(m, param)
- - (Object) bot_notify(m, param)
- - (Object) bot_part(m, param)
- - (Object) bot_ping(m, param)
- - (Object) bot_quiet(m, param)
- - (Object) bot_quit(m, param)
- - (Object) bot_reconnect(m, param)
- - (Object) bot_restart(m, param)
- - (Object) bot_say(m, param)
- - (Object) bot_talk(m, param)
-
- (Object) connect
on connect, we join the default channels unless we have to wait for identification.
- - (Object) ctcp_listen(m)
-
- (Object) help(cmd, topic = "")
handle help requests for “core” topics.
- - (Object) identified
- - (Object) invite(m)
- - (Object) join_channels
Instance Method Details
- (Object) bot_action(m, param)
110 111 112 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 110 def bot_action(m, param) @bot.action param[:where], param[:what].to_s end |
- (Object) bot_channel_list(m, param)
72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 72 def bot_channel_list(m, param) ret = _('I am in: ') # sort the channels by the base name and then map with prefixes for the # mode and display. ret << @bot.channels.compact.sort { |a,b| a.name.downcase <=> b.name.downcase }.map { |c| c.modes_of(@bot.myself).map{ |mo| m.server.prefix_for_mode(mo) }.to_s + c.name }.join(', ') m.reply ret end |
- (Object) bot_help(m, param)
144 145 146 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 144 def bot_help(m, param) m.reply @bot.help(param[:topic].join(" ")) end |
- (Object) bot_hide(m, param)
98 99 100 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 98 def bot_hide(m, param) @bot.join 0 end |
- (Object) bot_join(m, param)
50 51 52 53 54 55 56 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 50 def bot_join(m, param) if param[:pass] @bot.join param[:chan], param[:pass] else @bot.join param[:chan] end end |
- (Object) bot_mode(m, param)
114 115 116 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 114 def bot_mode(m, param) @bot.mode param[:where], param[:what], param[:who].join(" ") end |
- (Object) bot_notify(m, param)
106 107 108 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 106 def bot_notify(m, param) @bot.notice param[:where], param[:what].to_s end |
- (Object) bot_part(m, param)
64 65 66 67 68 69 70 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 64 def bot_part(m, param) if param[:chan] @bot.part param[:chan] else @bot.part m.target if m.public? end end |
- (Object) bot_ping(m, param)
118 119 120 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 118 def bot_ping(m, param) m.reply "pong" end |
- (Object) bot_quiet(m, param)
122 123 124 125 126 127 128 129 130 131 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 122 def bot_quiet(m, param) if param.has_key?(:where) @bot.set_quiet param[:where].sub(/^here$/, m.target.downcase) else @bot.set_quiet end # Make sense when the commmand is given in private or in a non-quieted # channel m.okay end |
- (Object) bot_quit(m, param)
86 87 88 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 86 def bot_quit(m, param) @bot.quit param[:msg].to_s end |
- (Object) bot_reconnect(m, param)
94 95 96 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 94 def bot_reconnect(m, param) @bot.reconnect param[:msg].to_s end |
- (Object) bot_restart(m, param)
90 91 92 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 90 def bot_restart(m, param) @bot.restart param[:msg].to_s end |
- (Object) bot_say(m, param)
102 103 104 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 102 def bot_say(m, param) @bot.say param[:where], param[:what].to_s end |
- (Object) bot_talk(m, param)
133 134 135 136 137 138 139 140 141 142 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 133 def bot_talk(m, param) if param.has_key?(:where) @bot.reset_quiet param[:where].sub(/^here$/, m.target.downcase) else @bot.reset_quiet end # Make sense when the commmand is given in private or in a non-quieted # channel m.okay end |
- (Object) connect
on connect, we join the default channels unless we have to wait for identification. Observe that this means the bot may not connect any channels until the 'identified' method gets delegated
32 33 34 35 36 37 38 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 32 def connect if @bot.config['irc.join_after_identify'] log "waiting for identififcation before JOINing default channels" else join_channels end end |
- (Object) ctcp_listen(m)
40 41 42 43 44 45 46 47 48 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 40 def ctcp_listen(m) who = m.private? ? "me" : m.target case m.ctcp.intern when :PING m.ctcp_reply m. when :TIME m.ctcp_reply Time.now.to_s end end |
- (Object) help(cmd, topic = "")
handle help requests for “core” topics
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 156 def help(cmd, topic="") case cmd when "quit" _("quit [<message>] => quit IRC with message <message>") when "restart" _("restart => completely stop and restart the bot (including reconnect)") when "reconnect" _("reconnect => ask the bot to disconnect and then connect again") when "join" _("join <channel> [<key>] => join channel <channel> with secret key <key> if specified. #{@bot.myself} also responds to invites if you have the required access level") when "part" _("part <channel> => part channel <channel>") when "hide" _("hide => part all channels") when "say" _("say <channel>|<nick> <message> => say <message> to <channel> or in private message to <nick>") when "action" _("action <channel>|<nick> <message> => does a /me <message> to <channel> or in private message to <nick>") when "quiet" _("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>") when "talk" _("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>") when "ping" _("ping => replies with a pong") when "mode" _("mode <channel> <mode> <nicks> => set channel modes for <nicks> on <channel> to <mode>") # when "botsnack" # return "botsnack => reward #{@bot.myself} for being good" # when "hello" # return "hello|hi|hey|yo [#{@bot.myself}] => greet the bot" else _("%{name}: quit, restart, join, part, hide, save, say, action, topic, quiet, talk, ping, mode") % {:name=>name} #, botsnack, hello end end |
- (Object) identified
25 26 27 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 25 def identified join_channels end |
- (Object) invite(m)
58 59 60 61 62 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 58 def invite(m) if @bot.auth.allow?(:basics::move::join", m.source, m.source) @bot.join m.channel end end |
- (Object) join_channels
14 15 16 17 18 19 20 21 22 23 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/core/basics.rb', line 14 def join_channels @bot.config['irc.join_channels'].each { |c| debug "autojoining channel #{c}" if(c =~ /^(\S+)\s+(\S+)$/i) @bot.join $1, $2 else @bot.join c if(c) end } end |