mirror of
https://github.com/Mikaela/Limnoria.git
synced 2025-11-26 20:57:21 +01:00
Add support for multi-word karmas
This commit is contained in:
parent
c77daeac5c
commit
30d36aae1f
@ -494,7 +494,7 @@ class Infobot(callbacks.PrivmsgCommandAndRegexp):
|
|||||||
return s
|
return s
|
||||||
|
|
||||||
_forceRe = re.compile(r'^no[,: -]+', re.I)
|
_forceRe = re.compile(r'^no[,: -]+', re.I)
|
||||||
_karmaRe = re.compile(r'^\S+(?:\+\+|--)(?:\s+)?$')
|
_karmaRe = re.compile(r'^(?:\S+|\(.+\))(?:\+\+|--)(?:\s+)?$')
|
||||||
def doPrivmsg(self, irc, msg):
|
def doPrivmsg(self, irc, msg):
|
||||||
try:
|
try:
|
||||||
if ircmsgs.isCtcp(msg):
|
if ircmsgs.isCtcp(msg):
|
||||||
|
|||||||
@ -131,7 +131,7 @@ class SqliteKarmaDB(object):
|
|||||||
cursor.execute("""SELECT name, added-subtracted FROM karma
|
cursor.execute("""SELECT name, added-subtracted FROM karma
|
||||||
ORDER BY added-subtracted ASC LIMIT %s""", limit)
|
ORDER BY added-subtracted ASC LIMIT %s""", limit)
|
||||||
return [(t[0], int(t[1])) for t in cursor.fetchall()]
|
return [(t[0], int(t[1])) for t in cursor.fetchall()]
|
||||||
|
|
||||||
def rank(self, channel, thing):
|
def rank(self, channel, thing):
|
||||||
db = self._getDb(channel)
|
db = self._getDb(channel)
|
||||||
cursor = db.cursor()
|
cursor = db.cursor()
|
||||||
@ -150,7 +150,7 @@ class SqliteKarmaDB(object):
|
|||||||
cursor = db.cursor()
|
cursor = db.cursor()
|
||||||
cursor.execute("""SELECT COUNT(*) FROM karma""")
|
cursor.execute("""SELECT COUNT(*) FROM karma""")
|
||||||
return int(cursor.fetchone()[0])
|
return int(cursor.fetchone()[0])
|
||||||
|
|
||||||
def increment(self, channel, name):
|
def increment(self, channel, name):
|
||||||
db = self._getDb(channel)
|
db = self._getDb(channel)
|
||||||
cursor = db.cursor()
|
cursor = db.cursor()
|
||||||
@ -160,7 +160,7 @@ class SqliteKarmaDB(object):
|
|||||||
cursor.execute("""UPDATE karma SET added=added+1
|
cursor.execute("""UPDATE karma SET added=added+1
|
||||||
WHERE normalized=%s""", normalized)
|
WHERE normalized=%s""", normalized)
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
def decrement(self, channel, name):
|
def decrement(self, channel, name):
|
||||||
db = self._getDb(channel)
|
db = self._getDb(channel)
|
||||||
cursor = db.cursor()
|
cursor = db.cursor()
|
||||||
@ -194,11 +194,11 @@ class SqliteKarmaDB(object):
|
|||||||
cursor.execute("""UPDATE karma SET subtracted=0, added=0
|
cursor.execute("""UPDATE karma SET subtracted=0, added=0
|
||||||
WHERE normalized=%s""", normalized)
|
WHERE normalized=%s""", normalized)
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
|
|
||||||
def KarmaDB():
|
def KarmaDB():
|
||||||
return SqliteKarmaDB()
|
return SqliteKarmaDB()
|
||||||
|
|
||||||
class Karma(callbacks.PrivmsgCommandAndRegexp):
|
class Karma(callbacks.PrivmsgCommandAndRegexp):
|
||||||
addressedRegexps = ['increaseKarma', 'decreaseKarma']
|
addressedRegexps = ['increaseKarma', 'decreaseKarma']
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -295,11 +295,11 @@ class Karma(callbacks.PrivmsgCommandAndRegexp):
|
|||||||
clear = privmsgs.checkChannelCapability(clear, 'op')
|
clear = privmsgs.checkChannelCapability(clear, 'op')
|
||||||
|
|
||||||
def increaseKarma(self, irc, msg, match):
|
def increaseKarma(self, irc, msg, match):
|
||||||
r"^(\S+)\+\+\s*$"
|
r"^(\S+|\(.+\))\+\+\s*$"
|
||||||
channel = msg.args[0]
|
channel = msg.args[0]
|
||||||
if not ircutils.isChannel(channel):
|
if not ircutils.isChannel(channel):
|
||||||
return
|
return
|
||||||
name = match.group(1)
|
name = match.group(1).strip('()')
|
||||||
if not self.registryValue('allowSelfRating', msg.args[0]):
|
if not self.registryValue('allowSelfRating', msg.args[0]):
|
||||||
if ircutils.strEqual(name, msg.nick):
|
if ircutils.strEqual(name, msg.nick):
|
||||||
return
|
return
|
||||||
@ -308,11 +308,11 @@ class Karma(callbacks.PrivmsgCommandAndRegexp):
|
|||||||
irc.replySuccess()
|
irc.replySuccess()
|
||||||
|
|
||||||
def decreaseKarma(self, irc, msg, match):
|
def decreaseKarma(self, irc, msg, match):
|
||||||
r"^(\S+)--\s*$"
|
r"^(\S+|\(.+\))--\s*$"
|
||||||
channel = msg.args[0]
|
channel = msg.args[0]
|
||||||
if not ircutils.isChannel(channel):
|
if not ircutils.isChannel(channel):
|
||||||
return
|
return
|
||||||
name = match.group(1)
|
name = match.group(1).strip('()')
|
||||||
if not self.registryValue('allowSelfRating', msg.args[0]):
|
if not self.registryValue('allowSelfRating', msg.args[0]):
|
||||||
if ircutils.strEqual(name, msg.nick):
|
if ircutils.strEqual(name, msg.nick):
|
||||||
return
|
return
|
||||||
|
|||||||
@ -185,11 +185,15 @@ if sqlite is not None:
|
|||||||
self.assertNotError('karma clear foo')
|
self.assertNotError('karma clear foo')
|
||||||
self.assertRegexp('karma foo', '0')
|
self.assertRegexp('karma foo', '0')
|
||||||
self.assertNotRegexp('karma foo', '1')
|
self.assertNotRegexp('karma foo', '1')
|
||||||
|
|
||||||
def testNoKarmaDunno(self):
|
def testNoKarmaDunno(self):
|
||||||
self.assertNotError('load Infobot')
|
self.assertNotError('load Infobot')
|
||||||
self.assertNoResponse('foo++')
|
self.assertNoResponse('foo++')
|
||||||
|
|
||||||
|
def testMultiWordKarma(self):
|
||||||
|
self.assertNoResponse('(foo bar)++', 1)
|
||||||
|
self.assertRegexp('karma "foo bar"', '1')
|
||||||
|
|
||||||
|
|
||||||
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78:
|
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78:
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user