From bbc86c98c589ba479fcbe060e96877a27cbdf71e Mon Sep 17 00:00:00 2001 From: Sfan5 Date: Tue, 22 Oct 2013 20:35:33 +0200 Subject: [PATCH] Sqlite3 database for seen.py --- seen.py | 81 +++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 50 insertions(+), 31 deletions(-) diff --git a/seen.py b/seen.py index 49c6377..4257a24 100755 --- a/seen.py +++ b/seen.py @@ -2,7 +2,7 @@ """ seen.py - Phenny Seen Module Copyright 2008, Sean B. Palmer, inamidst.com -Modified by Sfan5 2013 +Modified by sfan5 2013 Licensed under the Eiffel Forum License 2. http://inamidst.com/phenny/ @@ -10,43 +10,62 @@ http://inamidst.com/phenny/ import time from tools import deprecated +import sqlite3 + +def opendb(): + db = sqlite3.connect("seen.sqlite") + c = db.cursor() + c.execute('''CREATE TABLE IF NOT EXISTS seen (nick text, channel text, time int)''') + c.close() + return db def seen(phenny, input): - """.seen - Reports when was last seen.""" - for x in phenny.bot.commands["high"].values(): - if x[0].__name__ == "aa_hook": - if x[0](phenny, input): - return # Abort function - nick = input.group(2) - if not nick: - return phenny.reply("Need a nickname to search for...") - nick = nick.lower() - - print("[LOG]: %s queried Seen Result for %s" % (input.nick,nick)) - if not hasattr(phenny, 'seen'): - return phenny.reply("?") + """.seen - Reports when was last seen.""" + for x in phenny.bot.commands["high"].values(): + if x[0].__name__ == "aa_hook": + if x[0](phenny, input): + return # Abort function + nick = input.group(2) + if not nick: + return phenny.reply("Need a nickname to search for...") + nick = nick.lower() - if phenny.seen.has_key(nick): - channel, t = phenny.seen[nick] - t = time.strftime('%Y-%m-%d %H:%M:%S UTC', time.gmtime(t)) + print("[LOG]: %s queried Seen Result for %s" % (input.nick,nick)) + + db = opendb() + c = db.cursor() + c.execute("SELECT channel, time FROM seen WHERE nick = ?", (nick,)) + r = c.fetchone() + c.close() + db.close() + if r: + channel, t = r[0], r[1] + t = time.strftime('%Y-%m-%d %H:%M:%S UTC', time.gmtime(t)) + + msg = "%s was last seen at %s on %s" % (nick, t, channel) + phenny.reply(msg) + else: + phenny.reply("Sorry, I haven't seen %s around." % nick) - msg = "%s was last seen at %s on %s" % (nick, t, channel) - phenny.reply(msg) - else: phenny.reply("Sorry, I haven't seen %s around." % nick) seen.rule = (['seen'], r'(\S+)') -@deprecated -def f_note(self, origin, match, args): - def note(self, origin, match, args): - if not hasattr(self.bot, 'seen'): - self.bot.seen = {} - if origin.sender.startswith('#'): - self.seen[origin.nick.lower()] = (origin.sender, time.time()) +def note(phenny, input): + db = opendb() + if input.sender.startswith('#'): + c = db.cursor() + c.execute("SELECT * FROM seen WHERE nick = ?", (input.nick.lower(),)) + if c.fetchone() != None: + d = (input.sender, int(time.time()), input.nick.lower()) + c.execute('UPDATE seen SET channel = ?, time = ? WHERE nick = ?', d) + else: + d = (input.nick.lower(), input.sender, int(time.time())) + c.execute('INSERT INTO seen VALUES (?,?,?)', d) + db.commit() + c.close() + db.close() - try: note(self, origin, match, args) - except Exception, e: print e -f_note.rule = r'(.*)' -f_note.priority = 'low' +note.rule = r'.*' +note.priority = 'low' if __name__ == '__main__': print __doc__.strip()