From 05fd07d54769b435e837d7dd9ec4dfc1f6a6a5c2 Mon Sep 17 00:00:00 2001 From: dmitry kim Date: Sat, 6 Jun 2009 16:08:30 +0400 Subject: + (plugins) note --- data/rbot/plugins/note.rb | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 data/rbot/plugins/note.rb (limited to 'data') diff --git a/data/rbot/plugins/note.rb b/data/rbot/plugins/note.rb new file mode 100644 index 00000000..16c98e78 --- /dev/null +++ b/data/rbot/plugins/note.rb @@ -0,0 +1,46 @@ +Note = Struct.new('Note', :time, :from, :private, :text) + +class NotePlugin < Plugin + def help(plugin, topic="") + "note => stores a note () for " + end + + def listen(m) + begin + return if !m.kind_of?(PrivMessage) || !@registry.has_key?(m.sourcenick) + pub = [] + priv = [] + @registry[m.sourcenick].each do |n| + s = "[#{n.time.strftime('%H:%M')}] <#{n.from}> #{n.text}" + (n.private ? priv : pub).push(s) + end + if !pub.empty? + @bot.say m.replyto, "#{m.sourcenick}, you have notes! " + + pub.join(' ') + end + + if !priv.empty? + @bot.say m.sourcenick, "you have notes! " + priv.join(' ') + end + @registry.delete(m.sourcenick) + rescue Exception => e + m.reply e.message + end + end + + def note(m, params) + begin + q = @registry[params[:nick]] || Array.new + s = params[:string].join(' ') + raise 'cowardly discarding the empty note' if s.empty? || !s =~ /\S/ + q.push Note.new(Time.now, m.sourcenick, + m.private?, params[:string].join(' ')) + @registry[params[:nick]] = q + m.okay + rescue Exception => e + m.reply "error: #{e.message}" + end + end +end +plugin = NotePlugin.new +plugin.map 'note :nick *string' -- cgit v1.2.3