diff options
Diffstat (limited to 'data/rbot/plugins/usermodes.rb')
-rw-r--r-- | data/rbot/plugins/usermodes.rb | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/data/rbot/plugins/usermodes.rb b/data/rbot/plugins/usermodes.rb new file mode 100644 index 00000000..5f6e9bff --- /dev/null +++ b/data/rbot/plugins/usermodes.rb @@ -0,0 +1,114 @@ +class OpPlugin < Plugin + + def help(plugin, topic="") + return "'op [<user>] [<channel>]' => grant user> (if ommitted yourself) ops in <channel> (or in the current channel if no channel is specified). Use deop instead of op to remove the privilege." + end + + def op(m, params) + channel = params[:channel] + user = params[:user] + do_mode(m, channel, user, "+o") + end + + def opme(m, params) + params[:user] = m.sourcenick + op(m, params) + end + + def deop(m, params) + channel = params[:channel] + user = params[:user] + do_mode(m, channel, user, "-o") + end + + def deopme(m, params) + params[:user] = m.sourcenick + deop(m, params) + end + + def hop(m, params) + channel = params[:channel] + user = params[:user] + do_mode(m, channel, user, "+h") + end + + def hopme(m, params) + params[:user] = m.sourcenick + hop(m, params) + end + + def dehop(m, params) + channel = params[:channel] + user = params[:user] + do_mode(m, channel, user, "-h") + end + + def dehopme(m, params) + params[:user] = m.sourcenick + dehop(m, params) + end + + def voice(m, params) + channel = params[:channel] + user = params[:user] + do_mode(m, channel, user, "+v") + end + + def voiceme(m, params) + params[:user] = m.sourcenick + voice(m, params) + end + + def devoice(m, params) + channel = params[:channel] + user = params[:user] + do_mode(m, channel, user, "-v") + end + + def devoiceme(m, params) + params[:user] = m.sourcenick + deop(m, params) + end + + def do_mode(m, channel, user, mode) + unless channel + if m.private? + target = user.nil? ? "you" : user + m.reply "You should tell me where you want me to #{mode} #{target}." + return + else + channel = m.channel + end + else + channel = m.server.channel(channel) + + unless channel.has_user?(@bot.nick) + m.reply "I am not in that channel" + return + end + end + + unless user + user = m.sourcenick + end + + m.okay unless channel == m.channel.to_s + @bot.mode(channel, mode, user) + end +end + +plugin = OpPlugin.new +plugin.map("op [:user] [:channel]") +plugin.map("opme [:channel]") # For backwards compatibility with 0.9.10 +plugin.map("deop [:user] [:channel]") +plugin.map("deopme [:channel]") # For backwards compatibility with 0.9.10 +plugin.map("hop [:user] [:channel]") +plugin.map("hopme [:channel]") +plugin.map("dehop [:user] [:channel]") +plugin.map("dehopme [:channel]") +plugin.map("voice [:user] [:channel]") +plugin.map("voiceme [:channel]") +plugin.map("devoice [:user] [:channel]") +plugin.map("devoiceme [:channel]") +plugin.default_auth("*",false) + |