askcompu

Untitled

Sep 10th, 2015
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.22 KB | None | 0 0
  1. #!/usr/bin/env python
  2. """
  3. seen.py - Phenny seen module
  4. """
  5. import sqlite3 as lite
  6. import os
  7. import datetime
  8. import time
  9.  
  10. def db_connect(db):
  11.     return lite.connect(db, check_same_thread = False)
  12.  
  13. def setup(phenny):
  14.     seen_db = os.path.join(os.path.expanduser('~/.phenny'), 'seen.db')
  15.     seen_conn = db_connect(seen_db)
  16.     c = seen_conn.cursor()
  17.     c.execute('''create table if not exists seen(
  18.        nick    varchar(31) NOT NULL PRIMARY KEY,
  19.        channel varchar(31) NOT NULL,
  20.        message text,
  21.        event   varchar(10) NOT NULL,
  22.        time    DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL
  23.        );''')
  24.     c.close()
  25.     seen_conn.commit()
  26.     seen_conn.close()
  27. setup.thread = False
  28.  
  29. def smart_truncate(content):
  30.     suffix='...'
  31.     length=int(150)
  32.     if len(content) <= length:
  33.         return content
  34.     else:
  35.         return content[:length].rsplit(' ', 1)[0]+suffix
  36.  
  37. def seen(phenny, input):
  38.     """Gives when a user was last seen."""
  39.     inputnick = input.group(2)
  40.  
  41.     seen_db = os.path.join(os.path.expanduser('~/.phenny'), 'seen.db')
  42.     seen_conn = db_connect(seen_db)
  43.     conn = db_connect(seen_db)
  44.     c = conn.cursor()
  45.     query = (inputnick,)
  46.     c.execute("SELECT * FROM seen WHERE nick LIKE ?;", query)
  47.     results = c.fetchall()
  48.    
  49.     try:
  50.         nick = results[0]
  51.         channel = results[1]
  52.         message = results[2]
  53.         event = results[3]
  54.         seentime = results[4]
  55.     except:
  56.         nick = None
  57.    
  58.     if not nick:
  59.         phenny.say("Sorry I haven't seen " + inputnick)
  60.     else:
  61.        
  62.         message = smart_truncate(message)
  63.         if event == "PRIVMSG":
  64.             phenny.say(nick + " was last seen in " + channel + 'saying "' + message + '" at ' + seentime)
  65.         elif event == "JOIN":
  66.             phenny.say(nick + " was last seen joining " + channel + " at " + seentime)
  67.         elif event == "PART":
  68.             phenny.say(nick + " was last seen leaving " + channel + ' with message "' + message + '" at ' + seentime)
  69.         elif event == "QUIT":
  70.             phenny.say(nick + ' was last seen quitting with message "' + message + '" at ' + seentime)
  71.     c.close()
  72. seen.commands = ['seen']
  73. seen.example = ".seen somenick"
  74.  
  75. def seenstore(phenny, input, event):
  76.     nick = input.nick
  77.     channel = input.sender
  78.     if event == "JOIN":
  79.         message = None
  80.     else:
  81.         message = input.group()
  82.     seen_db = os.path.join(os.path.expanduser('~/.phenny'), 'seen.db')
  83.     seen_conn = db_connect(seen_db)
  84.     conn = db_connect(seen_db)
  85.     c = conn.cursor()
  86.     entry = (nick, channel, message, event)
  87.     c.execute("INSERT INTO seen VALUES(?, ?, ?, ?)", entry)
  88.     conn.commit()
  89.     c.close()
  90.     conn.close()
  91.  
  92. def seenmsg(phenny, input):
  93.     event = "PRIVMSG"
  94.     seenstore(phenny, input, event)
  95. seenmsg.rule = r'.*'
  96.  
  97. def seenjoin(phenny, input):
  98.     event = "JOIN"
  99.     seenstore(phenny, input, event)
  100. seenjoin.event = 'JOIN'
  101. seenjoin.rule = r'.*'
  102.  
  103. def seenquit(phenny, input):
  104.     event = "QUIT"
  105.     seenstore(phenny, input, event)
  106. seenquit.event = 'QUIT'
  107. seenquit.rule = r'.*'
  108.  
  109. def seenpart(phenny, input):
  110.     event = "PART"
  111.     seenstore(phenny, input, event)
  112. seenquit.event = 'PART'
  113. seenquit.rule = r'.*'
Advertisement
Add Comment
Please, Sign In to add comment