Skip to content
This repository has been archived by the owner on Apr 19, 2019. It is now read-only.

Commit

Permalink
Allow command prefixes in private messages
Browse files Browse the repository at this point in the history
  • Loading branch information
kxz committed Feb 16, 2016
1 parent e4429a5 commit 90dd7d1
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 27 deletions.
14 changes: 5 additions & 9 deletions omnipresence/connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -546,15 +546,11 @@ def respond_to(self, msg):
name=plugin.__class__.name, msg=msg)
deferreds.append(deferred)
# Extract any command invocations and fire events for them.
if msg.private:
command_prefixes = None
else:
# Make a copy so we don't accidentally change the value.
command_prefixes = tuple(
msg.settings.get('command_prefixes', default=[]))
if msg.settings.get('direct_addressing', default=True):
command_prefixes += (self.nickname + ':',
self.nickname + ',')
command_prefixes = tuple( # immutable copy, to be safe
msg.settings.get('command_prefixes', default=[]))
if msg.settings.get('direct_addressing', default=True):
command_prefixes += (self.nickname + ':',
self.nickname + ',')
command_msg = msg.extract_command(prefixes=command_prefixes)
if command_msg is not None:
# Get the command message in immediately after the
Expand Down
7 changes: 4 additions & 3 deletions omnipresence/message/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,9 +135,10 @@ def extract_command(self, prefixes=None):
content = content[len(prefix):]
break
else:
# The message doesn't start with any of the given
# prefixes. We're done here.
return
if not self.private:
# The message doesn't start with any of the given
# prefixes. We're done here.
return
# Extract the keyword for looking up the corresponding plugin.
#
# TODO: Should this check against the list of plugins enabled
Expand Down
38 changes: 23 additions & 15 deletions omnipresence/test/test_command.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,23 @@ def assert_success(self, deferred_result=None):
feum in augait vullam. Tortor augait dignissim."""
.format(self.other_users[0].nick)))

def assert_success_private(self):
self.assertEqual(self.outgoing.last_seen.action, MessageType.notice)
self.assertEqual(self.outgoing.last_seen.venue,
self.other_users[0].nick)
self.assertEqual(self.outgoing.last_seen.content, collapse("""
Deliquatue volut pulvinar feugiat eleifend quisque
suspendisse faccummy etuerci; vullandigna praestie hac
consectem ipisim esequi. Facidui augiam proin nisit diamet
ing. Incinim iliquipisl ero alit amconsecte adionse loborer
odionsequip sagittis, (+1 more)"""))
self.more(venue=self.connection.nickname)
self.assertEqual(self.outgoing.last_seen.content, collapse("""
iuscipit hent dipiscipit. Molore proin consecte min amcommo;
lobortio platea loboreet il consequis. Lan ullut corem
esectem vercilisit delent exer, feu inciduipit feum in
augait vullam. Tortor augait dignissim."""))

def assert_hidden_error(self, deferred_result=None):
self.assertEqual(self.outgoing.last_seen.action, MessageType.privmsg)
self.assertEqual(self.outgoing.last_seen.venue, '#foo')
Expand Down Expand Up @@ -108,21 +125,12 @@ def test_synchronous_success(self):
def test_synchronous_success_private(self):
self.receive('PRIVMSG {} :basiccommand > party3'.format(
self.connection.nickname))
self.assertEqual(self.outgoing.last_seen.action, MessageType.notice)
self.assertEqual(self.outgoing.last_seen.venue,
self.other_users[0].nick)
self.assertEqual(self.outgoing.last_seen.content, collapse("""
Deliquatue volut pulvinar feugiat eleifend quisque
suspendisse faccummy etuerci; vullandigna praestie hac
consectem ipisim esequi. Facidui augiam proin nisit diamet
ing. Incinim iliquipisl ero alit amconsecte adionse loborer
odionsequip sagittis, (+1 more)"""))
self.more(venue=self.connection.nickname)
self.assertEqual(self.outgoing.last_seen.content, collapse("""
iuscipit hent dipiscipit. Molore proin consecte min amcommo;
lobortio platea loboreet il consequis. Lan ullut corem
esectem vercilisit delent exer, feu inciduipit feum in
augait vullam. Tortor augait dignissim."""))
self.assert_success_private()

def test_synchronous_success_private_with_prefix(self):
self.receive('PRIVMSG {} :!basiccommand > party3'.format(
self.connection.nickname))
self.assert_success_private()

def test_synchronous_hidden_error(self):
self.receive('PRIVMSG #foo :!basiccommand failure > party3')
Expand Down

0 comments on commit 90dd7d1

Please sign in to comment.