mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-11-23 11:09:23 +01:00
Add conf.supybot.plugins.Karma.allowUnaddressedKarma
This commit is contained in:
parent
4a6740fbca
commit
a7bdd631e3
@ -34,6 +34,9 @@ Plugin for handling Karma stuff for a channel.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
__revision__ = "$Id$"
|
__revision__ = "$Id$"
|
||||||
|
__contributors__ = {
|
||||||
|
supybot.authors.jamessan: ['allowUnaddressedKarma'],
|
||||||
|
}
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sets
|
import sets
|
||||||
@ -42,6 +45,7 @@ from itertools import imap
|
|||||||
import supybot.conf as conf
|
import supybot.conf as conf
|
||||||
import supybot.utils as utils
|
import supybot.utils as utils
|
||||||
import supybot.plugins as plugins
|
import supybot.plugins as plugins
|
||||||
|
import supybot.ircmsgs as ircmsgs
|
||||||
import supybot.ircutils as ircutils
|
import supybot.ircutils as ircutils
|
||||||
import supybot.privmsgs as privmsgs
|
import supybot.privmsgs as privmsgs
|
||||||
import supybot.registry as registry
|
import supybot.registry as registry
|
||||||
@ -70,6 +74,9 @@ conf.registerChannelValue(conf.supybot.plugins.Karma, 'mostDisplay',
|
|||||||
conf.registerChannelValue(conf.supybot.plugins.Karma, 'allowSelfRating',
|
conf.registerChannelValue(conf.supybot.plugins.Karma, 'allowSelfRating',
|
||||||
registry.Boolean(False, """Determines whether users can adjust the karma
|
registry.Boolean(False, """Determines whether users can adjust the karma
|
||||||
of their nick."""))
|
of their nick."""))
|
||||||
|
conf.registerChannelValue(conf.supybot.plugins.Karma, 'allowUnaddressedKarma',
|
||||||
|
registry.Boolean(False, """Determines whether the bot will
|
||||||
|
increase/decrease karma without being addressed."""))
|
||||||
|
|
||||||
class SqliteKarmaDB(object):
|
class SqliteKarmaDB(object):
|
||||||
def _getDb(self, channel):
|
def _getDb(self, channel):
|
||||||
@ -200,10 +207,10 @@ def KarmaDB():
|
|||||||
return SqliteKarmaDB()
|
return SqliteKarmaDB()
|
||||||
|
|
||||||
class Karma(callbacks.PrivmsgCommandAndRegexp):
|
class Karma(callbacks.PrivmsgCommandAndRegexp):
|
||||||
addressedRegexps = ['increaseKarma', 'decreaseKarma']
|
regexps = ['increaseKarma', 'decreaseKarma']
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.db = KarmaDB()
|
self.db = KarmaDB()
|
||||||
callbacks.PrivmsgCommandAndRegexp.__init__(self)
|
super(Karma, self).__init__()
|
||||||
|
|
||||||
def karma(self, irc, msg, args):
|
def karma(self, irc, msg, args):
|
||||||
"""[<channel>] [<thing> [<thing> ...]]
|
"""[<channel>] [<thing> [<thing> ...]]
|
||||||
@ -294,12 +301,34 @@ class Karma(callbacks.PrivmsgCommandAndRegexp):
|
|||||||
irc.replySuccess()
|
irc.replySuccess()
|
||||||
clear = privmsgs.checkChannelCapability(clear, 'op')
|
clear = privmsgs.checkChannelCapability(clear, 'op')
|
||||||
|
|
||||||
|
def getName(self, nick, msg, match):
|
||||||
|
addressed = callbacks.addressed(nick, msg)
|
||||||
|
name = callbacks.addressed(nick,
|
||||||
|
ircmsgs.IrcMsg(prefix='',
|
||||||
|
args=(msg.args[0], match.group(1)),
|
||||||
|
msg=msg))
|
||||||
|
if not name:
|
||||||
|
name = match.group(1)
|
||||||
|
if not addressed:
|
||||||
|
if not self.registryValue('allowUnaddressedKarma'):
|
||||||
|
return ''
|
||||||
|
if not msg.args[1].startswith(match.group(1)):
|
||||||
|
return ''
|
||||||
|
name = match.group(1)
|
||||||
|
elif addressed:
|
||||||
|
if not addressed.startswith(name):
|
||||||
|
return ''
|
||||||
|
name = name.strip('()')
|
||||||
|
return name
|
||||||
|
|
||||||
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).strip('()')
|
name = self.getName(irc.nick, msg, match)
|
||||||
|
if not name:
|
||||||
|
return
|
||||||
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 +337,13 @@ 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).strip('()')
|
name = self.getName(irc.nick, msg, match)
|
||||||
|
if not name:
|
||||||
|
return
|
||||||
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
|
||||||
|
@ -39,7 +39,7 @@ except ImportError:
|
|||||||
sqlite = None
|
sqlite = None
|
||||||
|
|
||||||
if sqlite is not None:
|
if sqlite is not None:
|
||||||
class KarmaTestCase(ChannelPluginTestCase, PluginDocumentation):
|
class KarmaTestCase(ChannelPluginTestCase):
|
||||||
plugins = ('Karma',)
|
plugins = ('Karma',)
|
||||||
def testKarma(self):
|
def testKarma(self):
|
||||||
self.assertError('karma')
|
self.assertError('karma')
|
||||||
@ -194,6 +194,24 @@ if sqlite is not None:
|
|||||||
self.assertNoResponse('(foo bar)++', 1)
|
self.assertNoResponse('(foo bar)++', 1)
|
||||||
self.assertRegexp('karma "foo bar"', '1')
|
self.assertRegexp('karma "foo bar"', '1')
|
||||||
|
|
||||||
|
def testUnaddressedKarma(self):
|
||||||
|
karma = conf.supybot.plugins.Karma
|
||||||
|
resp = karma.response()
|
||||||
|
unaddressed = karma.allowUnaddressedKarma()
|
||||||
|
try:
|
||||||
|
karma.response.setValue(True)
|
||||||
|
karma.allowUnaddressedKarma.setValue(True)
|
||||||
|
for m in ('++', '--'):
|
||||||
|
self.assertRegexp('foo%s' % m, 'operation')
|
||||||
|
self.assertSnarfRegexp('foo%s' % m, 'operation')
|
||||||
|
self.assertNoResponse('foo bar%s' % m)
|
||||||
|
self.assertSnarfNoResponse('foo bar%s' % m)
|
||||||
|
self.assertRegexp('(foo bar)%s' % m, 'operation')
|
||||||
|
self.assertSnarfRegexp('(foo bar)%s' % m, 'operation')
|
||||||
|
finally:
|
||||||
|
karma.response.setValue(resp)
|
||||||
|
karma.allowUnaddressedKarma.setValue(unaddressed)
|
||||||
|
|
||||||
|
|
||||||
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78:
|
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78:
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user