diff --git a/Bantracker/plugin.py b/Bantracker/plugin.py index aaff341..d05088e 100644 --- a/Bantracker/plugin.py +++ b/Bantracker/plugin.py @@ -1599,10 +1599,18 @@ class Bantracker(callbacks.Plugin): banremove = wrap(banremove, ['something', 'text']) def baninfo(self, irc, msg, args, id): - """ + """[] - Show ban information. + Show ban information. If is not given shows the ids of bans set to + expire. """ + + if id is None: + count = len(self.managedBans) + L = [ str(item.ban.id) for item in self.managedBans ] + irc.reply("%s bans set to expire: %s" % (count, ', '.join(L))) + return + L = self.db_run("SELECT mask, channel, removal FROM bans WHERE id = %s", id, expect_result=True) if not L: @@ -1639,7 +1647,7 @@ class Bantracker(callbacks.Plugin): irc.reply("[%s] %s - %s - %s" % (id, type, mask, channel)) - baninfo = wrap(baninfo, ['id']) + baninfo = wrap(baninfo, [optional('id')]) def banlink(self, irc, msg, args, id, highlight): """ [] diff --git a/Bantracker/test.py b/Bantracker/test.py index 5739b33..772d319 100644 --- a/Bantracker/test.py +++ b/Bantracker/test.py @@ -509,4 +509,13 @@ class BantrackerTestCase(ChannelPluginTestCase): 'op!user@host.net')) self.assertResponse('baninfo 1', '[1] ban - asd!*@* - #test - not active') + def testBaninfoGeneral(self): + cb = self.getCallback() + self.feedBan('asd!*@*') + self.feedBan('qwe!*@*') + self.assertNotError('banremove 1 1d') + self.assertResponse('baninfo', "1 bans set to expire: 1") + self.assertNotError('banremove 2 1d') + self.assertResponse('baninfo', "2 bans set to expire: 1, 2") +