diff options
Diffstat (limited to 'data/rbot/plugins')
-rw-r--r-- | data/rbot/plugins/note.rb | 46 |
1 files changed, 46 insertions, 0 deletions
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 <nick> <string> => stores a note (<string>) for <nick>" + 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' |