annotate participant.py @ 185:6173873c6b0d

minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19 Signed-off-by: Charly COSTE <changaco@changaco.net>
author Charly COSTE <changaco@changaco.net>
date Sat, 20 Feb 2010 16:41:25 +0100
parents 102f895347ff
children e04410e7e527
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
1 #!/usr/bin/env python
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
3
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
4 # This program is free software: you can redistribute it and/or modify
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
5 # it under the terms of the GNU General Public License as published by
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
6 # the Free Software Foundation, either version 3 of the License, or
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
7 # (at your option) any later version.
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
8 #
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
9 # This program is distributed in the hope that it will be useful,
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
12 # GNU General Public License for more details.
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
13 #
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
14 # You should have received a copy of the GNU General Public License
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
16
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
17
124
99f3dee1fad7 code cleaning
Charly COSTE <changaco@changaco.net>
parents: 123
diff changeset
18 import re
99f3dee1fad7 code cleaning
Charly COSTE <changaco@changaco.net>
parents: 123
diff changeset
19 from time import sleep
99f3dee1fad7 code cleaning
Charly COSTE <changaco@changaco.net>
parents: 123
diff changeset
20
99f3dee1fad7 code cleaning
Charly COSTE <changaco@changaco.net>
parents: 123
diff changeset
21 from irclib import ServerNotConnectedError, ServerConnection
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
22 import muc
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
23 xmpp = muc.xmpp
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
24 del muc
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
25
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
26 import say_levels
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
27
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
28
124
99f3dee1fad7 code cleaning
Charly COSTE <changaco@changaco.net>
parents: 123
diff changeset
29 class Participant:
103
23416c27b592 New command system
Charly COSTE <changaco@changaco.net>
parents: 98
diff changeset
30 def __init__(self, owner_bridge, protocol, nickname, real_jid=None):
23416c27b592 New command system
Charly COSTE <changaco@changaco.net>
parents: 98
diff changeset
31 self.bot_admin = False
23416c27b592 New command system
Charly COSTE <changaco@changaco.net>
parents: 98
diff changeset
32 self.real_jid = real_jid
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
33 self.bridge = owner_bridge
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
34 self.protocol = protocol
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
35 self.nickname = nickname
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
36 self.duplicate_nickname = self.nickname
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
37 self.irc_connection = None
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
38 self.xmpp_c = None
17
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
39 self.muc = None
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
40 if protocol == 'xmpp' and self.bridge.mode in ['normal', 'bypass']:
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
41 self.createDuplicateOnIRC()
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
42 elif protocol == 'irc' and self.bridge.mode != 'minimal':
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
43 self.createDuplicateOnXMPP()
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
44
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
45
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
46 def _get_new_duplicate_nickname(self):
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
47 new_duplicate_nickname = self.duplicate_nickname
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
48 for i in xrange(5):
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
49 new_duplicate_nickname = new_duplicate_nickname+'_'
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
50 if not self.bridge.hasParticipant(new_duplicate_nickname):
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
51 return new_duplicate_nickname
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
52 return None
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
53
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
54
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
55 def createDuplicateOnXMPP(self):
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
56 if isinstance(self.xmpp_c, xmpp.client.Client) or isinstance(self.irc_connection, ServerConnection):
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
57 return
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
58 self.xmpp_c = self.bridge.bot.get_xmpp_connection(self.duplicate_nickname)
103
23416c27b592 New command system
Charly COSTE <changaco@changaco.net>
parents: 98
diff changeset
59 self.muc = xmpp.muc(self.bridge.xmpp_room_jid)
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
60 self.join_muc()
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
61
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
62
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
63 def join_muc(self):
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
64 self.muc.join(self.xmpp_c, self.duplicate_nickname, status='From IRC', callback=self._xmpp_join_callback)
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
65
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
66
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
67 def _xmpp_join_callback(self, errors):
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
68 if len(errors) == 0:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
69 m = '"'+self.nickname+'" duplicate succesfully created on XMPP side of bridge "'+str(self.bridge)+'"'
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
70 if self.nickname != self.duplicate_nickname:
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
71 m += ' using nickname "'+self.duplicate_nickname+'"'
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
72 self.bridge.say(say_levels.info, '"'+self.nickname+'" will appear as "'+self.duplicate_nickname+'" on XMPP because its real nickname is reserved or contains unauthorized characters')
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
73 self.bridge.bot.error(3, m, debug=True)
82
90baff5dedb2 Fixed callbacks in participant.py
Charly COSTE <changaco@changaco.net>
parents: 78
diff changeset
74 elif self.xmpp_c != 'both':
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
75 for error in errors:
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
76 try:
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
77 raise error
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
78 except xmpp.muc.NicknameConflict as e:
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
79 if xmpp.protocol.JID(e.args[0]).getResource() != self.duplicate_nickname:
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
80 return
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
81
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
82 if self.bridge.mode == 'bypass':
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
83 new_duplicate_nickname = self._get_new_duplicate_nickname()
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
84 if new_duplicate_nickname != None:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
85 self.bridge.bot.error(3, '"'+self.duplicate_nickname+'" is already used in the XMPP MUC or reserved on the XMPP server of bridge "'+str(self.bridge)+'", trying "'+new_duplicate_nickname+'"', debug=True)
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
86 if self.duplicate_nickname == self.nickname:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
87 self.bridge.say(say_levels.info, 'The nickname "'+self.duplicate_nickname+'" is used on both rooms or reserved on the XMPP server')
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
88 self.duplicate_nickname = new_duplicate_nickname
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
89 if isinstance(self.xmpp_c, xmpp.client.Client):
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
90 self.bridge.bot.close_xmpp_connection(self.nickname)
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
91 self.xmpp_c = None
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
92 self.createDuplicateOnXMPP()
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
93 return
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
94
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
95 else:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
96 self.bridge.say(say_levels.warning, 'The nickname "'+self.nickname+'" is used on both rooms or reserved on the XMPP server', log=True)
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
97 if self.muc.connected == True:
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
98 self.muc.leave('Changed nickname to "'+self.nickname+'"')
82
90baff5dedb2 Fixed callbacks in participant.py
Charly COSTE <changaco@changaco.net>
parents: 78
diff changeset
99 except xmpp.muc.RoomIsFull:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
100 self.bridge.say(say_levels.warning, 'XMPP room is full', log=True)
135
922858915907 handle xmpp.muc.RemoteServerNotFound
Charly COSTE <changaco@changaco.net>
parents: 132
diff changeset
101 except xmpp.muc.RemoteServerNotFound:
922858915907 handle xmpp.muc.RemoteServerNotFound
Charly COSTE <changaco@changaco.net>
parents: 132
diff changeset
102 self.bridge._RemoteServerNotFound_handler()
98
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
103
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
104 if isinstance(self.xmpp_c, xmpp.client.Client):
17
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
105 self.bridge.bot.close_xmpp_connection(self.nickname)
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
106 self.xmpp_c = None
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
107
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
108
17
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
109 def createDuplicateOnIRC(self):
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
110 if isinstance(self.xmpp_c, xmpp.client.Client) or isinstance(self.irc_connection, ServerConnection):
17
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
111 return
125
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
112 self.irc_connection = self.bridge.bot.irc.open_connection(self.bridge.irc_server, self.bridge.irc_port, self.duplicate_nickname)
17
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
113 self.irc_connection.connect(nick_callback=self._irc_nick_callback)
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
114
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
115
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
116 def _irc_nick_callback(self, error, arguments=[]):
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
117 if error == None:
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
118 self.irc_connection.join(self.bridge.irc_room)
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
119 m = '"'+self.nickname+'" duplicate succesfully created on IRC side of bridge "'+str(self.bridge)+'"'
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
120 if self.nickname != self.duplicate_nickname:
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
121 m += ' using nickname "'+self.duplicate_nickname+'"'
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
122 self.bridge.say(say_levels.info, '"'+self.nickname+'" will appear as "'+self.duplicate_nickname+'" on IRC because its real nickname is reserved or contains unauthorized characters')
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
123 self.bridge.bot.error(3, m, debug=True)
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
124
82
90baff5dedb2 Fixed callbacks in participant.py
Charly COSTE <changaco@changaco.net>
parents: 78
diff changeset
125 elif self.irc_connection != 'both':
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
126
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
127 if error in ['nicknameinuse', 'nickcollision']:
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
128 if arguments[0].arguments()[0] != self.duplicate_nickname:
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
129 return
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
130
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
131 if self.bridge.mode == 'bypass':
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
132 new_duplicate_nickname = self._get_new_duplicate_nickname()
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
133 if new_duplicate_nickname != None:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
134 self.bridge.bot.error(3, '"'+self.duplicate_nickname+'" is already used or reserved on the IRC server of bridge "'+str(self.bridge)+'", trying "'+new_duplicate_nickname+'"', debug=True)
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
135 if self.duplicate_nickname == self.nickname:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
136 self.bridge.say(say_levels.info, 'The nickname "'+self.duplicate_nickname+'" is used or reserved on the IRC server')
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
137 self.duplicate_nickname = new_duplicate_nickname
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
138 if isinstance(self.irc_connection, ServerConnection):
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
139 self.irc_connection.close('')
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
140 self.irc_connection = error
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
141 self.createDuplicateOnIRC()
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
142 return
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
143
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
144 else:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
145 self.bridge.say(say_levels.warning, 'The nickname "'+self.nickname+'" is used or reserved on the IRC server', log=True)
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
146
17
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
147 elif error == 'erroneusnickname':
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
148 if self.bridge.mode == 'bypass':
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
149 self.duplicate_nickname = re.sub('[^a-zA-Z]', '', self.nickname)
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
150 if isinstance(self.irc_connection, ServerConnection):
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
151 self.irc_connection.close('')
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
152 self.irc_connection = error
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
153 self.createDuplicateOnIRC()
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
154 return
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
155 else:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
156 self.bridge.say(say_levels.warning, 'The nickname "'+self.nickname+'" contains unauthorized characters and cannot be used in the IRC channel', log=True)
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
157
17
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
158 elif error == 'nicknametoolong':
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
159 self.bridge.say(say_levels.warning, 'The nickname "'+self.nickname+'" is too long (limit seems to be '+str(arguments[0])+') and cannot be used in the IRC channel', log=True)
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
160
82
90baff5dedb2 Fixed callbacks in participant.py
Charly COSTE <changaco@changaco.net>
parents: 78
diff changeset
161 else:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
162 self.bridge.say(say_levels.warning, 'unknown error while adding "'+self.nickname+'" to IRC side of bridge', log=True)
98
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
163
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
164 if isinstance(self.irc_connection, ServerConnection):
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
165 self.irc_connection.close('')
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
166 self.irc_connection = error
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
167
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
168
123
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
169 def set_both_sides(self):
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
170 self.bridge.say(say_levels.warning, 'The nickname "'+self.nickname+'" is used on both sides of the bridge', log=True)
123
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
171 if isinstance(self.irc_connection, ServerConnection):
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
172 self.irc_connection.close('')
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
173 if self.irc_connection != 'both':
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
174 self.irc_connection = 'both'
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
175 if isinstance(self.muc, xmpp.muc):
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
176 self.muc.leave('')
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
177 self.bridge.bot.close_xmpp_connection(self.nickname)
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
178 if self.xmpp_c != 'both':
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
179 self.xmpp_c = 'both'
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
180
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
181
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
182 def changeNickname(self, newnick, on_protocol):
29
a694ffe6a973 Fixed nickname change.
Charly COSTE <changaco@changaco.net>
parents: 26
diff changeset
183 """Change participant's nickname."""
a694ffe6a973 Fixed nickname change.
Charly COSTE <changaco@changaco.net>
parents: 26
diff changeset
184
145
ddc87b605019 minor fix in Participant.changeNickname()
Charly COSTE <changaco@changaco.net>
parents: 137
diff changeset
185 p = None
29
a694ffe6a973 Fixed nickname change.
Charly COSTE <changaco@changaco.net>
parents: 26
diff changeset
186 oldnick = self.nickname
a694ffe6a973 Fixed nickname change.
Charly COSTE <changaco@changaco.net>
parents: 26
diff changeset
187
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
188 if self.protocol == 'xmpp':
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
189 if on_protocol == 'xmpp':
94
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
190 self._close_irc_connection('unwanted nick change')
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
191 self.irc_connection = 'unwanted nick change'
17
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
192
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
193 else:
125
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
194 try:
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
195 p = self.bridge.getParticipant(newnick)
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
196 except self.bridge.NoSuchParticipantException:
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
197 self.nickname = newnick
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
198 self.duplicate_nickname = newnick
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
199 has_connection = self.bridge.bot.irc.has_connection(self.bridge.irc_server, self.bridge.irc_port, self.duplicate_nickname)
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
200 if isinstance(self.irc_connection, ServerConnection):
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
201 if not has_connection and self.irc_connection.used_by == 1:
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
202 self.irc_connection.nick(newnick, callback=self._irc_nick_callback)
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
203 else:
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
204 self._close_irc_connection('Changed nickname')
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
205 self.createDuplicateOnIRC()
98
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
206 else:
125
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
207 if self.irc_connection == 'both':
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
208 self.bridge.addParticipant('irc', oldnick)
98
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
209 self.createDuplicateOnIRC()
125
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
210 return
17
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
211
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
212 elif self.protocol == 'irc':
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
213 if on_protocol == 'irc':
94
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
214 self._close_xmpp_connection('unwanted nick change')
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
215 self.xmpp_c = 'unwanted nick change'
17
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
216
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
217 else:
125
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
218 try:
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
219 p = self.bridge.getParticipant(newnick)
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
220 except self.bridge.NoSuchParticipantException:
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
221 self.nickname = newnick
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
222 self.duplicate_nickname = newnick
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
223 if isinstance(self.xmpp_c, xmpp.client.Client):
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
224 for b in self.bridge.bot.bridges:
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
225 if b.hasParticipant(oldnick) and b.irc_server != self.bridge.irc_server:
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
226 self.muc.leave(message='Changed nickname to "'+self.nickname+'"')
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
227 self.xmpp_c = None
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
228 self.bridge.bot.close_xmpp_connection(oldnick)
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
229 self.createDuplicateOnXMPP()
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
230 return
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
231
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
232 if not self.bridge.bot.xmpp_connections.has_key(newnick):
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
233 if self.bridge.bot.xmpp_connections.has_key(oldnick):
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
234 self.bridge.bot.xmpp_connections.pop(oldnick)
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
235 self.bridge.bot.xmpp_connections[newnick] = self.xmpp_c
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
236
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
237 self.muc.change_nick(newnick, status='From IRC', callback=self._xmpp_join_callback)
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
238 else:
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
239 if self.xmpp_c == 'both':
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
240 self.bridge.addParticipant('xmpp', oldnick)
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
241 self.createDuplicateOnXMPP()
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
242 return
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
243
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
244 self.nickname = newnick
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
245 self.duplicate_nickname = newnick
145
ddc87b605019 minor fix in Participant.changeNickname()
Charly COSTE <changaco@changaco.net>
parents: 137
diff changeset
246
ddc87b605019 minor fix in Participant.changeNickname()
Charly COSTE <changaco@changaco.net>
parents: 137
diff changeset
247 if not isinstance(p, Participant):
ddc87b605019 minor fix in Participant.changeNickname()
Charly COSTE <changaco@changaco.net>
parents: 137
diff changeset
248 return
ddc87b605019 minor fix in Participant.changeNickname()
Charly COSTE <changaco@changaco.net>
parents: 137
diff changeset
249
125
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
250 if p.nickname == newnick:
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
251 if p.protocol == self.protocol:
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
252 # should never happen
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
253 raise Exception('WTF ?')
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
254 else:
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
255 self.set_both_sides()
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
256 elif p.duplicate_nickname == newnick:
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
257 if p.protocol != self.protocol:
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
258 # should never happen
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
259 raise Exception('WTF ?')
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
260 else:
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
261 if self.protocol == 'xmpp':
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
262 self.irc_connection = p.irc_connection
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
263 p.irc_connection = None
17
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
264 else:
125
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
265 self.xmpp_c = p.xmpp_c
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
266 self.muc = p.muc
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
267 p.xmpp_c = None
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
268 p.muc = None
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
269 p.duplicate_nickname = p._get_new_duplicate_nickname()
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
270 p.createDuplicateOnXMPP()
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
271 else:
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
272 # should never happen
efdc038e757a fixed participant.changeNickname(), renamed IRC.server() to IRC.open_connection(), created IRC.get_connection() and IRC.has_connection(), removed irclib.SimpleIRCClient (we don't need it)
Charly COSTE <changaco@changaco.net>
parents: 124
diff changeset
273 raise Exception('WTF ?')
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
274
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
275
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
276 def sayOnIRC(self, message):
185
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
277 bot_say = False
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
278 if message[:4] == '/me ':
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
279 action = True
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
280 message = message[4:]
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
281 else:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
282 action = False
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
283 if isinstance(self.irc_connection, ServerConnection):
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
284 try:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
285 if action:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
286 self.irc_connection.action(self.bridge.irc_room, message)
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
287 else:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
288 self.irc_connection.privmsg(self.bridge.irc_room, message)
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
289 except ServerNotConnectedError:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
290 self.irc_connection.connect()
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
291 bot_say = True
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
292 elif not isinstance(self.xmpp_c, xmpp.client.Client):
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
293 bot_say = True
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
294 if bot_say:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
295 if action:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
296 self.bridge.irc_connection.privmsg(self.bridge.irc_room, '* '+self.nickname+' '+message)
95
f27de569f5db Improved /me handling
Charly COSTE <changaco@changaco.net>
parents: 94
diff changeset
297 else:
185
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
298 self.bridge.irc_connection.privmsg(self.bridge.irc_room, '<'+self.nickname+'> '+message)
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
299
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
300
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
301 def sayOnIRCTo(self, to, message):
72
6c4b841144f6 Better handling of participants
Charly COSTE <changaco@changaco.net>
parents: 68
diff changeset
302 if isinstance(self.irc_connection, ServerConnection):
185
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
303 self.irc_connection.privmsg(to, message)
72
6c4b841144f6 Better handling of participants
Charly COSTE <changaco@changaco.net>
parents: 68
diff changeset
304 elif not isinstance(self.xmpp_c, xmpp.client.Client):
26
1691ab4d131f Fixed participant's "say" functions.
Charly COSTE <changaco@changaco.net>
parents: 19
diff changeset
305 if self.bridge.mode != 'normal':
1691ab4d131f Fixed participant's "say" functions.
Charly COSTE <changaco@changaco.net>
parents: 19
diff changeset
306 self.bridge.getParticipant(to).sayOnXMPPTo(self.nickname, 'Sorry but cross-protocol private messages are disabled in '+self.bridge.mode+' mode.')
1691ab4d131f Fixed participant's "say" functions.
Charly COSTE <changaco@changaco.net>
parents: 19
diff changeset
307 else:
1691ab4d131f Fixed participant's "say" functions.
Charly COSTE <changaco@changaco.net>
parents: 19
diff changeset
308 self.bridge.getParticipant(to).sayOnXMPPTo(self.nickname, 'Sorry but you cannot send cross-protocol private messages because I don\'t have an IRC duplicate with your nickname.')
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
309
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
310
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
311 def sayOnXMPP(self, message):
185
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
312 if isinstance(self.xmpp_c, xmpp.client.Client):
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
313 self.muc.say(message)
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
314 elif not isinstance(self.irc_connection, ServerConnection):
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
315 if message[:4] == '/me ':
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
316 self.bridge.xmpp_room.say('* '+self.nickname+' '+message[4:])
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
317 else:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
318 self.bridge.xmpp_room.say('<'+self.nickname+'> '+message)
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
319
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
320
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
321 def sayOnXMPPTo(self, to, message):
185
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
322 if isinstance(self.xmpp_c, xmpp.client.Client):
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
323 self.muc.sayTo(to, message)
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
324 elif not isinstance(self.irc_connection, ServerConnection):
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
325 if self.bridge.mode != 'normal':
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
326 self.bridge.getParticipant(to).sayOnXMPPTo(self.nickname, 'Sorry but cross-protocol private messages are disabled in '+self.bridge.mode+' mode.')
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
327 else:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
328 self.bridge.getParticipant(to).sayOnXMPPTo(self.nickname, 'Sorry but you cannot send cross-protocol private messages because I don\'t have an XMPP duplicate with your nickname.')
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
329
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
330
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
331 def leave(self, message):
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
332 if message == None:
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
333 message = ''
94
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
334 self._close_xmpp_connection(message)
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
335 self._close_irc_connection(message)
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
336
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
337
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
338 def _close_xmpp_connection(self, message):
72
6c4b841144f6 Better handling of participants
Charly COSTE <changaco@changaco.net>
parents: 68
diff changeset
339 if isinstance(self.xmpp_c, xmpp.client.Client):
172
64a0e9636ae6 removed encoding.py, charsets handling is now in irclib and custom charsets can be set per server in the configuration file
Charly COSTE <changaco@changaco.net>
parents: 150
diff changeset
340 self.muc.leave(message)
132
6a6885dbed25 handle more mode changing cases (added bridge.createDuplicatesOn())
Charly COSTE <changaco@changaco.net>
parents: 125
diff changeset
341 self.xmpp_c = None
17
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
342 self.bridge.bot.close_xmpp_connection(self.nickname)
94
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
343
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
344
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
345 def _close_irc_connection(self, message):
72
6c4b841144f6 Better handling of participants
Charly COSTE <changaco@changaco.net>
parents: 68
diff changeset
346 if isinstance(self.irc_connection, ServerConnection):
83
5115ba7d5983 Leave chan only if (really) connected
Charly COSTE <changaco@changaco.net>
parents: 82
diff changeset
347 if self.irc_connection.really_connected == True:
5115ba7d5983 Leave chan only if (really) connected
Charly COSTE <changaco@changaco.net>
parents: 82
diff changeset
348 self.irc_connection.part(self.bridge.irc_room, message=message)
17
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
349 self.irc_connection.used_by -= 1
32a35f7eff70 Rewrote/modified many things, multiple bridges should now work and are preferred over multiple bots.
Charly COSTE <changaco@changaco.net>
parents: 11
diff changeset
350 if self.irc_connection.used_by < 1:
64
8fc496eaa17b Handle IRC "nickcollision" event
Charly COSTE <changaco@changaco.net>
parents: 63
diff changeset
351 self.irc_connection.close(message)
5
cb0daec4b778 Added support for IRC "nick" event, fixed participant.changeNickname(), fixed handling of IRC "namreply" event, removed muc._check() because waiting does not solve the problem if it is blocking incoming messages handling
Charly COSTE <changaco@changaco.net>
parents: 4
diff changeset
352 self.irc_connection = None
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
353
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
354
98
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
355 def __str__(self):
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
356 r = 'self.protocol='+str(self.protocol)+'\n'+'self.nickname='+str(self.nickname)
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
357 if isinstance(self.irc_connection, ServerConnection):
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
358 r += '\nself.irc_connection='+str(self.irc_connection)+'\n'+'self.irc_connection.really_connected='+str(self.irc_connection.really_connected)
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
359 if isinstance(self.xmpp_c, xmpp.client.Client):
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
360 r += '\nself.muc.connected='+str(self.muc.connected)
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
361 return r
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
362
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
363
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
364 def __del__(self):
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
365 self.leave('')