mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-11-23 11:09:23 +01:00
MoobotFactoids should be pretty dang close to finished now. Got the "_is_"
syntax working just fine.
This commit is contained in:
parent
0c96bf73a7
commit
f0b850118b
@ -186,6 +186,7 @@ class MoobotFactoids(callbacks.PrivmsgCommandAndRegexp):
|
||||
|
||||
def invalidCommand(self, irc, msg, tokens):
|
||||
key = ' '.join(tokens)
|
||||
key = key.rstrip('?!')
|
||||
if key.startswith('\x01'):
|
||||
return
|
||||
# Check the factoid db for an appropriate reply
|
||||
@ -211,7 +212,15 @@ class MoobotFactoids(callbacks.PrivmsgCommandAndRegexp):
|
||||
return True
|
||||
|
||||
def addFactoid(self, irc, msg, match):
|
||||
r"^(?!no\s+)(.+)\s+is\s+(?!also)(.+)"
|
||||
r"^(.+)\s+(?:is|_is_)\s+(.+)"
|
||||
# First, check and see if the entire message matches a factoid key
|
||||
cursor = self.db.cursor()
|
||||
cursor.execute("""SELECT * FROM factoids WHERE key LIKE %s""",
|
||||
match.group().rstrip('?! '))
|
||||
if cursor.rowcount != 0:
|
||||
self.invalidCommand(irc, msg, callbacks.tokenize(match.group()))
|
||||
return
|
||||
# Okay, we are REALLY adding stuff
|
||||
# Must be registered!
|
||||
try:
|
||||
id = ircdb.users.getUserId(msg.prefix)
|
||||
@ -219,13 +228,16 @@ class MoobotFactoids(callbacks.PrivmsgCommandAndRegexp):
|
||||
irc.error(msg, conf.replyNotRegistered)
|
||||
return
|
||||
key, fact = match.groups()
|
||||
# These are okay, unless there's an _is_ in there, in which case
|
||||
# we split on the leftmost one.
|
||||
if '_is_' in match.group():
|
||||
key, fact = map(str.strip, match.group().split('_is_', 1))
|
||||
# Strip the key of punctuation and spaces
|
||||
key = key.strip('?!')
|
||||
cursor = self.db.cursor()
|
||||
key = key.rstrip('?! ')
|
||||
# Check and make sure it's not in the DB already
|
||||
cursor.execute("""SELECT * FROM factoids WHERE key LIKE %s""", key)
|
||||
if cursor.rowcount != 0:
|
||||
irc.error(msg, "Factoid %r already exists." % key)
|
||||
irc.error(msg, 'Factoid %r already exists.' % key)
|
||||
return
|
||||
# Otherwise,
|
||||
cursor.execute("""INSERT INTO factoids VALUES
|
||||
|
@ -75,6 +75,12 @@ if sqlite is not None:
|
||||
self.assertResponse('MOO', 'foo')
|
||||
self.assertResponse('mOo', 'foo')
|
||||
self.assertResponse('MoO', 'foo')
|
||||
# Check the "_is_" ability
|
||||
self.assertNotError('delete moo')
|
||||
self.assertNotError('moo _is_ <reply>foo')
|
||||
self.assertResponse('moo', 'foo')
|
||||
self.assertNotError('foo is bar _is_ baz')
|
||||
self.assertResponse('foo is bar', 'foo is bar is baz')
|
||||
|
||||
def testFactinfo(self):
|
||||
self.assertNotError('moo is <reply>foo')
|
||||
|
Loading…
Reference in New Issue
Block a user