diff --git a/src/comms/irc.py b/src/comms/irc.py index f61ddae70d..2d0ffe2934 100644 --- a/src/comms/irc.py +++ b/src/comms/irc.py @@ -70,7 +70,7 @@ class IRC_Bot(irc.IRCClient): if conn.channel: conn.to_channel(msg) - def msg_irc(self, msg, from_obj=None): + def msg_irc(self, msg, senders=None): """ Called by evennia when sending something to mapped IRC channel. @@ -131,7 +131,7 @@ def create_connection(channel, irc_network, irc_port, irc_channel, irc_bot_nick) # how the channel will be able to contact this protocol send_code = "from src.comms.irc import IRC_CHANNELS\n" send_code += "matched_ircs = [irc for irc in IRC_CHANNELS if irc.factory.key == '%s']\n" % key - send_code += "[irc.msg_irc(message, from_obj=from_obj) for irc in matched_ircs]\n" + send_code += "[irc.msg_irc(message, senders=[self]) for irc in matched_ircs]\n" conn = ExternalChannelConnection(db_channel=channel, db_external_key=key, db_external_send_code=send_code, db_external_config=config) conn.save() diff --git a/src/comms/models.py b/src/comms/models.py index 9efc65df6f..cc0e5d76d2 100644 --- a/src/comms/models.py +++ b/src/comms/models.py @@ -118,9 +118,8 @@ class Msg(SharedMemoryModel): #@sender.setter def __senders_set(self, value): "Setter. Allows for self.sender = value" - values = make_iter(value) - for value in values: - obj, typ = identify_object(value) + for val in make_iter(value): + obj, typ = identify_object(val) if typ == 'player': self.db_sender_players.add(obj) elif typ == 'object': @@ -141,11 +140,10 @@ class Msg(SharedMemoryModel): self.save() senders = property(__senders_get, __senders_set, __senders_del) - def remove_sender(self, obj): + def remove_sender(self, value): "Remove a single sender or a list of senders" - objs = make_iter(obj) - for obj in objs: - obj, typ = identify_object(obj) + for val in make_iter(value): + obj, typ = identify_object(val) if typ == 'player': self.db_sender_players.remove(obj) elif typ == 'object': @@ -165,16 +163,17 @@ class Msg(SharedMemoryModel): #@receivers.setter def __receivers_set(self, value): "Setter. Allows for self.receivers = value. This appends a new receiver to the message." - obj, typ = identify_object(value) - if typ == 'player': - self.db_receivers_players.add(obj) - elif typ == 'object': - self.db_receivers_objects.add(obj) - elif not obj: - return - else: - raise ValueError - self.save() + for val in make_iter(value): + obj, typ = identify_object(val) + if typ == 'player': + self.db_receivers_players.add(obj) + elif typ == 'object': + self.db_receivers_objects.add(obj) + elif not obj: + return + else: + raise ValueError + self.save() #@receivers.deleter def __receivers_del(self): "Deleter. Clears all receivers" @@ -202,8 +201,8 @@ class Msg(SharedMemoryModel): #@channels.setter def __channels_set(self, value): "Setter. Allows for self.channels = value. Requires a channel to be added." - if value: - self.db_receivers_channels.add(value) + for val in make_iter(value): + self.db_receivers_channels.add(val) #@channels.deleter def __channels_del(self): "Deleter. Allows for del self.channels" @@ -810,14 +809,14 @@ class ExternalChannelConnection(SharedMemoryModel): "Send external -> channel" if not from_obj: from_obj = self.external_key - self.channel.msg(message, from_obj=from_obj) + self.channel.msg(message, senders=[self]) - def to_external(self, message, from_obj=None, from_channel=None): + def to_external(self, message, senders=None, from_channel=None): "Send channel -> external" # make sure we are not echoing back our own message to ourselves # (this would result in a nasty infinite loop) - if from_obj == self.external_key: + if self in make_iter(senders):#.external_key: return try: