summaryrefslogtreecommitdiff
path: root/data/rbot/plugins/nickserv.rb
diff options
context:
space:
mode:
authorTom Gilbert <tom@linuxbrit.co.uk>2005-07-28 23:55:59 +0000
committerTom Gilbert <tom@linuxbrit.co.uk>2005-07-28 23:55:59 +0000
commit8caeee3853ef66dd0e326ff17906f9ca544b8a35 (patch)
tree03faa650efa4ca6ed11bcc4faec1f2ee4ab3a9dc /data/rbot/plugins/nickserv.rb
parentda8e3efa6400c25f4e572c4187a15a37c72af6b8 (diff)
Thu Jul 28 23:45:26 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
* Reworked the Timer module. The Timer now has a smart thread manager to start/stop the tick() thread. This means the timer isn't called every 0.1 seconds to see what needs doing, which is much more efficient * reworked the ircsocket queue mechanism to use a Timer * reworked the nickserv plugin to use maps * made server.reconnect_wait configurable * added Class tracing mechanism to bin/rbot, use --trace Classname for debugging
Diffstat (limited to 'data/rbot/plugins/nickserv.rb')
-rw-r--r--data/rbot/plugins/nickserv.rb92
1 files changed, 41 insertions, 51 deletions
diff --git a/data/rbot/plugins/nickserv.rb b/data/rbot/plugins/nickserv.rb
index 1ef2baf7..246f253c 100644
--- a/data/rbot/plugins/nickserv.rb
+++ b/data/rbot/plugins/nickserv.rb
@@ -17,6 +17,15 @@ class NickServPlugin < Plugin
end
end
+ def genpasswd
+ # generate a random password
+ passwd = ""
+ 8.times do
+ passwd += (rand(26) + (rand(2) == 0 ? 65 : 97) ).chr
+ end
+ return passwd
+ end
+
def initialize
super
# this plugin only wants to store strings!
@@ -29,49 +38,34 @@ class NickServPlugin < Plugin
end
end
end
-
- def privmsg(m)
- return unless m.params
-
- case m.params
- when (/^password\s*(\S*)\s*(.*)$/)
- nick = $1
- passwd = $2
- @registry[nick] = passwd
- m.okay
- when (/^register$/)
- passwd = genpasswd
- @bot.sendmsg "PRIVMSG", "NickServ", "REGISTER " + passwd
- @registry[@bot.nick] = passwd
- m.okay
- when (/^register\s*(\S*)\s*(.*)$/)
- passwd = $1
- email = $2
- @bot.sendmsg "PRIVMSG", "NickServ", "REGISTER " + passwd + " " + email
- @registry[@bot.nick] = passwd
- m.okay
- when (/^register\s*(.*)\s*$/)
- passwd = $1
- @bot.sendmsg "PRIVMSG", "NickServ", "REGISTER " + passwd
- @registry[@bot.nick] = passwd
+
+ def password(m, params)
+ @registry[params[:nick]] = params[:passwd]
+ m.okay
+ end
+ def nick_register(m, params)
+ passwd = params[:passwd] ? params[:passwd] : genpasswd
+ message = "REGISTER #{passwd}"
+ message += " #{params[:email]}" if params[:email]
+ @bot.sendmsg "PRIVMSG", "NickServ", message
+ @registry[@bot.nick] = passwd
+ m.okay
+ end
+ def listnicks(m, params)
+ if @registry.length > 0
+ @registry.each {|k,v|
+ @bot.say m.sourcenick, "#{k} => #{v}"
+ }
+ else
+ m.reply "none known"
+ end
+ end
+ def identify(m, params)
+ if @registry.has_key?(@bot.nick)
+ @bot.sendmsg "PRIVMSG", "NickServ", "IDENTIFY #{@registry[@bot.nick]}"
m.okay
- when (/^listnicks$/)
- if @bot.auth.allow?("config", m.source, m.replyto)
- if @registry.length > 0
- @registry.each {|k,v|
- @bot.say m.sourcenick, "#{k} => #{v}"
- }
- else
- m.reply "none known"
- end
- end
- when (/^identify$/)
- if @registry.has_key?(@bot.nick)
- @bot.sendmsg "PRIVMSG", "NickServ", "IDENTIFY " + @registry[@bot.nick]
- m.okay
- else
- m.reply "I dunno the nickserv password for the nickname #{@bot.nick} :("
- end
+ else
+ m.reply "I dunno the nickserv password for the nickname #{@bot.nick} :("
end
end
@@ -86,14 +80,10 @@ class NickServPlugin < Plugin
end
end
- def genpasswd
- # generate a random password
- passwd = ""
- 8.times do
- passwd += (rand(26) + (rand(2) == 0 ? 65 : 97) ).chr
- end
- return passwd
- end
end
plugin = NickServPlugin.new
-plugin.register("nickserv")
+plugin.map 'nickserv password :nick :passwd'
+plugin.map 'nickserv register :passwd :email', :action => 'nick_register',
+ :defaults => {:passwd => false, :email => false}
+plugin.map 'nickserv listnicks'
+plugin.map 'nickserv identify'