diff --git a/plugins/Aka/test.py b/plugins/Aka/test.py index 1d4bcc810..9f813ead0 100644 --- a/plugins/Aka/test.py +++ b/plugins/Aka/test.py @@ -206,6 +206,11 @@ class AkaChannelTestCase(ChannelPluginTestCase): self.assertResponse('a+ spam echo egg', 'The operation succeeded.') self.assertResponse('spam', 'egg') + def testIgnore(self): + self.assertResponse('aka add test ignore', 'The operation succeeded.') + self.assertNoResponse('test') + + class AkaTestCase(PluginTestCase): plugins = ('Aka', 'Alias', 'User', 'Utilities') diff --git a/plugins/Utilities/plugin.py b/plugins/Utilities/plugin.py index 6ad2d984d..4bcbf6a58 100644 --- a/plugins/Utilities/plugin.py +++ b/plugins/Utilities/plugin.py @@ -49,11 +49,8 @@ class Utilities(callbacks.Plugin): Does nothing. Useful sometimes for sequencing commands when you don't care about their non-error return values. """ - if irc.nested: - msg.tag('ignored') - # Need to call NestedCommandsIrcProxy.reply to continue evaluation - # of the remaining nested commands. - irc.reply('') + msg.tag('ignored') + irc.noReply() # Do be careful not to wrap this unless you do any('something'). @internationalizeDocstring diff --git a/plugins/Utilities/test.py b/plugins/Utilities/test.py index 0c24780bb..b1350d742 100644 --- a/plugins/Utilities/test.py +++ b/plugins/Utilities/test.py @@ -37,6 +37,7 @@ class UtilitiesTestCase(PluginTestCase): def testIgnore(self): self.assertNoResponse('utilities ignore foo bar baz', 1) self.assertError('utilities ignore [re m/foo bar]') + self.assertResponse('echo [utilities ignore foobar] qux', 'qux') def testSuccess(self): self.assertNotError('success 1') diff --git a/src/callbacks.py b/src/callbacks.py index 7a291bbdc..faf4a0aa4 100644 --- a/src/callbacks.py +++ b/src/callbacks.py @@ -498,7 +498,7 @@ class RichReplyMethods(object): msg = self.reply(prefixer(s), **kwargs) return msg - def noReply(self): + def noReply(self, msg=None): self.repliedTo = True def _error(self, s, Raise=False, **kwargs): @@ -1011,6 +1011,16 @@ class NestedCommandsIrcProxy(ReplyIrcProxy): self.args[self.counter] = s self.evalArgs() + def noReply(self, msg=None): + if msg is None: + msg = self.msg + if self.finalEvaled: + self.irc.noReply(msg=msg) + else: + self.args.pop(self.counter) + msg.tag('ignored', False) + self.evalArgs() + def replies(self, L, prefixer=None, joiner=None, onlyPrefixFirst=False, to=None, oneToOne=None, **kwargs):