add a simple @baninfo command for check when a ban expires.

This commit is contained in:
Elián Hanisch 2012-07-13 13:45:37 -03:00
parent bf93f42503
commit c283e6b924
2 changed files with 41 additions and 0 deletions

View File

@ -1490,6 +1490,41 @@ class Bantracker(callbacks.Plugin):
banremove = wrap(banremove, ['id', 'text'])
def baninfo(self, irc, msg, args, id):
"""<id>
Show ban information.
"""
L = self.db_run("SELECT mask, channel, removal FROM bans WHERE id = %s",
id, expect_result=True)
if not L:
irc.reply("I don't know any ban with that id.")
return
mask, channel, removal = L[0]
type = guessBanType(mask)
if type == 'quiet':
mask = mask[1:]
for br in self.managedBans:
if br.ban.id == id:
break
else:
br = None
if br:
irc.reply("[%s] %s - %s - %s - expires in %s" \
% (id, type, mask, channel,
(br.ban.when + br.expires) - nowSeconds()))
else:
if type in ('quiet', 'ban'):
irc.reply("[%s] %s - %s - %s - never expires" \
% (id, type, mask, channel))
else:
irc.reply("[%s] %s - %s - %s" % (id, type, mask, channel))
baninfo = wrap(baninfo, ['id'])
def banlink(self, irc, msg, args, id, highlight):
"""<id> [<highlight>]

View File

@ -447,5 +447,11 @@ class BantrackerTestCase(ChannelPluginTestCase):
self.assertEqual(L[i].ban.mask, n)
self.assertEqual(L[0].ban.channel, '#test')
def testBaninfo(self):
cb = self.getCallback()
self.feedBan('asd!*@*')
self.assertResponse('baninfo 1', '[1] ban - asd!*@* - #test - never expires')
self.assertNotError('banremove 1 10')
self.assertResponse('baninfo 1', '[1] ban - asd!*@* - #test - expires in 10.0')