-class OpPlugin < Plugin
+#-- vim:sw=2:et
+#++
+#
+# :title: Usermodes plugin
+#
+# Author:: Giuseppe "Oblomov" Bilotta <giuseppe.bilotta@gmail.com>
+# Copyright:: (C) 2007 Giuseppe Bilotta
+# License:: rbot's licence
+#
+
+class UserModesPlugin < Plugin
+ Config.register Config::StringValue.new('irc.usermodes',
+ :default => '',
+ :desc => "User modes to set when connecting to the server")
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."
+ "handles automatic usermode settings on connect. See the config variable irc.usermodes"
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)
+ def connect
+ modes = @bot.config['irc.usermodes']
+ @bot.mode(@bot.nick, modes, '') unless modes.empty?
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)
-
+plugin = UserModesPlugin.new