Added optional <id> argument to FunDB's excuse

This commit is contained in:
Stéphan Kochen 2003-10-22 19:52:05 +00:00
parent f7caf3f4fd
commit 5c1fc0114d
2 changed files with 27 additions and 8 deletions

View File

@ -182,15 +182,29 @@ class FunDB(callbacks.Privmsg):
irc.reply(msg, ', '.join(words))
def excuse(self, irc, msg, args):
"""takes no arguments
"""[<id>]
Gives you a standard BOFH excuse.
Gives you a standard, random BOFH excuse or the excuse with the given
<id>.
"""
id = privmsgs.getArgs(args, needed=0, optional=1)
cursor = self.db.cursor()
cursor.execute("""SELECT id, excuse FROM excuses
WHERE excuse NOTNULL
ORDER BY random()
LIMIT 1""")
if id:
try:
id = int(id)
except ValueError:
irc.error(msg, 'The <id> argument must be an integer.')
return
cursor.execute("""SELECT id, excuse FROM excuses WHERE id=%s""",
id)
if cursor.rowcount == 0:
irc.error(msg, 'There is no such excuse.')
return
else:
cursor.execute("""SELECT id, excuse FROM excuses
WHERE excuse NOTNULL
ORDER BY random()
LIMIT 1""")
if cursor.rowcount == 0:
irc.error(msg, 'There are currently no available excuses.')
else:

View File

@ -72,11 +72,16 @@ if sqlite is not None:
def testExcuse(self):
self.assertNotError('dbadd excuse Power failure')
self.assertNotError('excuse')
self.assertNotError('excuse a few random words')
self.assertResponse('excuse', 'Power failure (#1)')
self.assertError('excuse a few random words')
self.assertNotError('dbnum excuse')
self.assertNotError('dbadd excuse /pub/lunch')
self.assertResponse('excuse 1', 'Power failure (#1)')
self.assertNotError('dbremove excuse 1')
self.assertNotError('dbnum excuse')
self.assertResponse('excuse', '/pub/lunch (#2)')
self.assertNotError('dbremove excuse 2')
self.assertNotError('dbnum excuse')
self.assertError('excuse')
def testInsult(self):