mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-11-02 17:29:22 +01:00
getopt-ified seen to use nicks by default and users only if given the --user option.
This commit is contained in:
parent
3891360527
commit
f9a7bf0609
@ -40,6 +40,7 @@ from baseplugin import *
|
|||||||
import re
|
import re
|
||||||
import sets
|
import sets
|
||||||
import time
|
import time
|
||||||
|
import getopt
|
||||||
|
|
||||||
import sqlite
|
import sqlite
|
||||||
|
|
||||||
@ -115,6 +116,11 @@ class ChannelDB(callbacks.PrivmsgCommandAndRegexp, ChannelDBHandler):
|
|||||||
modes INTEGER,
|
modes INTEGER,
|
||||||
topics INTEGER
|
topics INTEGER
|
||||||
)""")
|
)""")
|
||||||
|
cursor.execute("""CREATE TABLE nick_seen (
|
||||||
|
name TEXT UNIQUE ON CONFLICT REPLACE,
|
||||||
|
last_seen TIMESTAMP,
|
||||||
|
last_msg TEXT
|
||||||
|
)""")
|
||||||
cursor.execute("""INSERT INTO channel_stats
|
cursor.execute("""INSERT INTO channel_stats
|
||||||
VALUES (0, 0, 0, 0, 0,
|
VALUES (0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0)""")
|
0, 0, 0, 0, 0, 0)""")
|
||||||
@ -139,6 +145,7 @@ class ChannelDB(callbacks.PrivmsgCommandAndRegexp, ChannelDBHandler):
|
|||||||
isAction = ircmsgs.isAction(msg)
|
isAction = ircmsgs.isAction(msg)
|
||||||
frowns = len(frownre.findall(s))
|
frowns = len(frownre.findall(s))
|
||||||
smileys = len(smileyre.findall(s))
|
smileys = len(smileyre.findall(s))
|
||||||
|
s = ircmsgs.prettyPrint(msg)
|
||||||
cursor.execute("""UPDATE channel_stats
|
cursor.execute("""UPDATE channel_stats
|
||||||
SET smileys=smileys+%s,
|
SET smileys=smileys+%s,
|
||||||
frowns=frowns+%s,
|
frowns=frowns+%s,
|
||||||
@ -147,6 +154,8 @@ class ChannelDB(callbacks.PrivmsgCommandAndRegexp, ChannelDBHandler):
|
|||||||
msgs=msgs+1,
|
msgs=msgs+1,
|
||||||
actions=actions+%s""",
|
actions=actions+%s""",
|
||||||
smileys, frowns, chars, words, int(isAction))
|
smileys, frowns, chars, words, int(isAction))
|
||||||
|
cursor.execute("""INSERT INTO nick_seen VALUES (%s, %s, %s)""",
|
||||||
|
msg.nick, int(time.time()), s)
|
||||||
try:
|
try:
|
||||||
name = ircdb.users.getUser(msg.prefix).name
|
name = ircdb.users.getUser(msg.prefix).name
|
||||||
except KeyError:
|
except KeyError:
|
||||||
@ -160,7 +169,7 @@ class ChannelDB(callbacks.PrivmsgCommandAndRegexp, ChannelDBHandler):
|
|||||||
NULL, %s, %s, %s, %s, %s,
|
NULL, %s, %s, %s, %s, %s,
|
||||||
%s, %s, 1, %s,
|
%s, %s, 1, %s,
|
||||||
0, 0, 0, 0, 0, 0 )""",
|
0, 0, 0, 0, 0, 0 )""",
|
||||||
name, int(time.time()), msg.args[1],
|
name, int(time.time()), s,
|
||||||
smileys, frowns, chars, words, int(isAction))
|
smileys, frowns, chars, words, int(isAction))
|
||||||
else:
|
else:
|
||||||
cursor.execute("""UPDATE user_stats SET
|
cursor.execute("""UPDATE user_stats SET
|
||||||
@ -267,32 +276,37 @@ class ChannelDB(callbacks.PrivmsgCommandAndRegexp, ChannelDBHandler):
|
|||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
def seen(self, irc, msg, args):
|
def seen(self, irc, msg, args):
|
||||||
"""[<channel>] <nick>
|
"""[<channel>] [--user] <name>
|
||||||
|
|
||||||
Returns the last time <nick> was seen and what <nick> was last seen
|
Returns the last time <name> was seen and what <name> was last seen
|
||||||
saying. <channel> is only necessary if the message isn't sent on the
|
saying. --user will look for user <name> instead of using <name> as
|
||||||
|
a nick (registered users, remember, can be recognized under any number
|
||||||
|
of names) <channel> is only necessary if the message isn't sent on the
|
||||||
channel itself.
|
channel itself.
|
||||||
"""
|
"""
|
||||||
channel = privmsgs.getChannel(msg, args)
|
channel = privmsgs.getChannel(msg, args)
|
||||||
name = privmsgs.getArgs(args)
|
|
||||||
if not ircdb.users.hasUser(name):
|
|
||||||
try:
|
|
||||||
hostmask = irc.state.nickToHostmask(name)
|
|
||||||
name = ircdb.users.getUser(hostmask).name
|
|
||||||
except KeyError:
|
|
||||||
irc.error(msg, conf.replyNoUser)
|
|
||||||
return
|
|
||||||
db = self.getDb(channel)
|
db = self.getDb(channel)
|
||||||
cursor = db.cursor()
|
cursor = db.cursor()
|
||||||
cursor.execute("""SELECT last_seen, last_msg FROM user_stats
|
(optlist, rest) = getopt.getopt(args, '', ['user'])
|
||||||
WHERE name=%s""", name)
|
name = privmsgs.getArgs(rest)
|
||||||
|
if '--user' in optlist:
|
||||||
|
if not ircdb.users.hasUser(name):
|
||||||
|
try:
|
||||||
|
hostmask = irc.state.nickToHostmask(name)
|
||||||
|
name = ircdb.users.getUser(hostmask).name
|
||||||
|
table = 'user_stats'
|
||||||
|
except KeyError:
|
||||||
|
irc.error(msg, conf.replyNoUser)
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
table = 'nick_seen'
|
||||||
|
sql = """SELECT last_seen, last_msg FROM %s WHERE name=%%s""" % table
|
||||||
|
cursor.execute(sql, name)
|
||||||
if cursor.rowcount == 0:
|
if cursor.rowcount == 0:
|
||||||
irc.reply(msg, 'I have no stats for that user.')
|
irc.reply(msg, 'I have not seen %s.' % name)
|
||||||
else:
|
else:
|
||||||
(seen, m) = cursor.fetchone()
|
(seen, m) = cursor.fetchone()
|
||||||
seen = int(seen)
|
seen = int(seen)
|
||||||
if m.startswith('\x01ACTION') and m.endswith('\x01'):
|
|
||||||
m = '* %s%s' % (name, m[7:-1])
|
|
||||||
s = '%s was last seen here %s ago saying %s' % \
|
s = '%s was last seen here %s ago saying %s' % \
|
||||||
(name, utils.timeElapsed(time.time() - seen), m)
|
(name, utils.timeElapsed(time.time() - seen), m)
|
||||||
irc.reply(msg, s)
|
irc.reply(msg, s)
|
||||||
|
Loading…
Reference in New Issue
Block a user