diff --git a/plugins/Alias/plugin.py b/plugins/Alias/plugin.py index 8b23bbb67..c4f6758a5 100644 --- a/plugins/Alias/plugin.py +++ b/plugins/Alias/plugin.py @@ -317,10 +317,12 @@ class Alias(callbacks.Plugin): irc.error(_('There is no such alias.')) unlock = wrap(unlock, [('checkCapability', 'admin'), 'commandName']) - _invalidCharsRe = re.compile(r'[\[\]\s]') + _validNameRe = re.compile(r'^[a-z.|][a-z0-9.|]*$') def addAlias(self, irc, name, alias, lock=False): - if self._invalidCharsRe.search(name): - raise AliasError, 'Names cannot contain spaces or square brackets.' + if not self._validNameRe.search(name): + raise AliasError('Names can only contain alphanumerical ' + 'characters and dots and pipes (and the first letter ' + 'cannot be a number).') realName = callbacks.canonicalName(name) if name != realName: s = format(_('That name isn\'t valid. Try %q instead.'), realName) diff --git a/plugins/Alias/test.py b/plugins/Alias/test.py index 5089faf8e..5a9e24191 100644 --- a/plugins/Alias/test.py +++ b/plugins/Alias/test.py @@ -112,6 +112,9 @@ class AliasTestCase(ChannelPluginTestCase): self.failIf('foobar' in cb.aliases) self.assertError('foobar') + self.assertRegexp('alias add café ignore', 'Error.*can only contain') + self.assertRegexp('alias add 1abc ignore', 'Error.*can only contain') + def testOptionalArgs(self): self.assertNotError('alias add myrepr "repr @1"') self.assertResponse('myrepr foo', '"foo"')