Use sender instead of nick in Response to allow sent by PM or over DCC, ...

This commit is contained in:
Némunaire 2012-08-31 01:34:07 +02:00
parent 99e91af2cb
commit 711cefe0c2
3 changed files with 22 additions and 8 deletions

View File

@ -207,7 +207,7 @@ class Message:
# Treat ping
if re.match(".*(m[' ]?entends?[ -]+tu|h?ear me|do you copy|ping)",
messagel) is not None:
return Response(message="pong", channel=self.channel, nick=self.nick)
return Response(self.sender, message="pong", channel=self.channel, nick=self.nick)
# Ask hooks
else:
@ -261,7 +261,7 @@ class Message:
elif self.cmd[0] == "more":
if self.channel == self.srv.nick:
if self.nick in self.srv.moremessages:
return self.srv.moremessages[self.nick]
return self.srv.moremessages[self.sender]
else:
if self.channel in self.srv.moremessages:
return self.srv.moremessages[self.channel]
@ -271,7 +271,7 @@ class Message:
self.srv.send_dcc("Test DCC", self.sender)
elif self.cmd[0] == "pvdcctest":
print("dcctest")
return Response(message="Test DCC", nick=self.nick)
return Response(self.sender, message="Test DCC")
elif self.cmd[0] == "dccsendtest":
print("dccsendtest")
conn = DCC(self.srv, self.sender)

View File

@ -16,8 +16,11 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import traceback
import sys
class Response:
def __init__(self, message=None, channel=None, nick=None, server=None,
def __init__(self, sender, message=None, channel=None, nick=None, server=None,
nomore="No more message", title=None, more="(suite) "):
self.nomore = nomore
self.more = more
@ -29,8 +32,19 @@ class Response:
self.channel = channel
self.nick = nick
self.set_sender(sender)
self.alone = True
def set_sender(self, sender):
if sender is None or sender.find("!") < 0:
if sender is not None:
print("\033[1;35mWarning:\033[0m bad sender provided in Response, it will be ignored.")
exc_type, exc_value, exc_traceback = sys.exc_info()
traceback.print_exception(exc_type, exc_value, exc_traceback)
self.sender = None
else:
self.sender = sender
def append_message(self, message):
self.alone = False
self.messages.append(message)

View File

@ -111,16 +111,16 @@ class Server(threading.Thread):
self.s.send(("PONG %s\r\n" % cnt).encode ())
def send_response(self, res):
if res.channel is not None:
if res.channel is not None and res.channel != self.nick:
self.send_msg(res.channel, res.get_message())
if not res.alone:
self.moremessages[res.channel] = res
elif res.nick is not None:
self.send_msg_usr(res.nick, res.get_message())
elif res.sender is not None:
self.send_msg_usr(res.sender, res.get_message())
if not res.alone:
self.moremessages[res.nick] = res
self.moremessages[res.sender] = res
def send_ctcp(self, to, msg, cmd = "NOTICE", endl = "\r\n"):
"""Send a message as CTCP response"""