annotate participant.py @ 240:ebd67e3e4866

fix for Bridge.remove_participant, bug introduced in d875cbf0a544e6ad0c640f3afedbc2c87fb4db9c Signed-off-by: Charly COSTE <changaco@changaco.net>
author Charly COSTE <changaco@changaco.net>
date Mon, 08 Mar 2010 11:12:41 +0100
parents 5f1e9211af03
children cf4f00441628
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
189
e04410e7e527 split the leaving process in two, first call to Bridge.removeParticipant() calls Participant.leave(), second call (when the bot receives the part or quit event) removes it from Bridge.participants
Charly COSTE <changaco@changaco.net>
parents: 185
diff changeset
40 self.left = False
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
41 if protocol == 'xmpp' and self.bridge.mode in ['normal', 'bypass']:
203
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
42 self.create_duplicate_on_irc()
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
43 elif protocol == 'irc' and self.bridge.mode != 'minimal':
203
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
44 self.create_duplicate_on_xmpp()
118
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
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
47 def _get_new_duplicate_nickname(self):
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
48 new_duplicate_nickname = self.duplicate_nickname
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
49 for i in xrange(5):
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
50 new_duplicate_nickname = new_duplicate_nickname+'_'
203
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
51 if not self.bridge.has_participant(new_duplicate_nickname):
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
52 return new_duplicate_nickname
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
53 return None
0
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
203
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
56 def create_duplicate_on_xmpp(self):
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
57 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
58 return
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
59 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
60 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
61 self.join_muc()
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
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
64 def join_muc(self):
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
65 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
66
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
67
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
68 def _xmpp_join_callback(self, errors):
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
69 if len(errors) == 0:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
70 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
71 if self.nickname != self.duplicate_nickname:
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
72 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
73 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
74 self.bridge.bot.error(3, m, debug=True)
82
90baff5dedb2 Fixed callbacks in participant.py
Charly COSTE <changaco@changaco.net>
parents: 78
diff changeset
75 elif self.xmpp_c != 'both':
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
76 for error in errors:
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
77 try:
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
78 raise error
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
79 except xmpp.muc.NicknameConflict as e:
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
80 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
81 return
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
82
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
83 if self.bridge.mode == 'bypass':
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
84 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
85 if new_duplicate_nickname != None:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
86 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
87 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
88 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
89 self.duplicate_nickname = new_duplicate_nickname
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
90 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
91 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
92 self.xmpp_c = None
203
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
93 self.create_duplicate_on_xmpp()
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
94 return
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
95
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
96 else:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
97 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
98 if self.muc.connected == True:
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
99 self.muc.leave('Changed nickname to "'+self.nickname+'"')
82
90baff5dedb2 Fixed callbacks in participant.py
Charly COSTE <changaco@changaco.net>
parents: 78
diff changeset
100 except xmpp.muc.RoomIsFull:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
101 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
102 except xmpp.muc.RemoteServerNotFound:
922858915907 handle xmpp.muc.RemoteServerNotFound
Charly COSTE <changaco@changaco.net>
parents: 132
diff changeset
103 self.bridge._RemoteServerNotFound_handler()
98
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
104
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
105 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
106 self.bridge.bot.close_xmpp_connection(self.nickname)
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
107 self.xmpp_c = None
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
108
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
109
203
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
110 def create_duplicate_on_irc(self):
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
111 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
112 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
113 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
114 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
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
231
5f1e9211af03 fix for 48ad162772b79740e8ff580bde2c250b9957c126, we do need arguments in nick callbacks
Charly COSTE <changaco@changaco.net>
parents: 229
diff changeset
117 def _irc_nick_callback(self, error, arguments=None):
226
0d85049ac68d switch to IRC join callbacks in bridge.py and participant.py
Charly COSTE <changaco@changaco.net>
parents: 219
diff changeset
118 if not error:
0d85049ac68d switch to IRC join callbacks in bridge.py and participant.py
Charly COSTE <changaco@changaco.net>
parents: 219
diff changeset
119 self.irc_connection.join(self.bridge.irc_room, callback=self._irc_join_callback)
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
120
82
90baff5dedb2 Fixed callbacks in participant.py
Charly COSTE <changaco@changaco.net>
parents: 78
diff changeset
121 elif self.irc_connection != 'both':
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
122
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
123 if error in ['nicknameinuse', 'nickcollision']:
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
124 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
125 return
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 self.bridge.mode == 'bypass':
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
128 new_duplicate_nickname = self._get_new_duplicate_nickname()
231
5f1e9211af03 fix for 48ad162772b79740e8ff580bde2c250b9957c126, we do need arguments in nick callbacks
Charly COSTE <changaco@changaco.net>
parents: 229
diff changeset
129 if new_duplicate_nickname:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
130 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
131 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
132 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
133 self.duplicate_nickname = new_duplicate_nickname
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
134 if isinstance(self.irc_connection, ServerConnection):
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
135 self.irc_connection.close('')
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
136 self.irc_connection = error
203
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
137 self.create_duplicate_on_irc()
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
138 return
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
139
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
140 else:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
141 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
142
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
143 elif error == 'erroneusnickname':
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
144 if self.bridge.mode == 'bypass':
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
145 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
146 if isinstance(self.irc_connection, ServerConnection):
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
147 self.irc_connection.close('')
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
148 self.irc_connection = error
203
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
149 self.create_duplicate_on_irc()
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
150 return
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
151 else:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
152 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
153
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
154 elif error == 'nicknametoolong':
219
63289aa1dea7 moved "nicknametoolong" and ServerConnection.really_connected handling to irclib, renamed ServerConnection.really_connected to .logged_in
Charly COSTE <changaco@changaco.net>
parents: 213
diff changeset
155 self.bridge.say(say_levels.warning, 'The nickname "'+self.nickname+'" is too long (limit seems to be '+str(len(self.irc_connection.real_nickname))+') 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
156
82
90baff5dedb2 Fixed callbacks in participant.py
Charly COSTE <changaco@changaco.net>
parents: 78
diff changeset
157 else:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
158 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
159
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
160 if isinstance(self.irc_connection, ServerConnection):
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
161 self.irc_connection.close('')
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
162 self.irc_connection = error
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
163
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
164
226
0d85049ac68d switch to IRC join callbacks in bridge.py and participant.py
Charly COSTE <changaco@changaco.net>
parents: 219
diff changeset
165 def _irc_join_callback(self, channel, error):
0d85049ac68d switch to IRC join callbacks in bridge.py and participant.py
Charly COSTE <changaco@changaco.net>
parents: 219
diff changeset
166 if not error:
0d85049ac68d switch to IRC join callbacks in bridge.py and participant.py
Charly COSTE <changaco@changaco.net>
parents: 219
diff changeset
167 m = '"'+self.nickname+'" duplicate succesfully joined IRC side of bridge "'+str(self.bridge)+'"'
0d85049ac68d switch to IRC join callbacks in bridge.py and participant.py
Charly COSTE <changaco@changaco.net>
parents: 219
diff changeset
168 if self.nickname != self.duplicate_nickname:
0d85049ac68d switch to IRC join callbacks in bridge.py and participant.py
Charly COSTE <changaco@changaco.net>
parents: 219
diff changeset
169 m += ' using nickname "'+self.duplicate_nickname+'"'
0d85049ac68d switch to IRC join callbacks in bridge.py and participant.py
Charly COSTE <changaco@changaco.net>
parents: 219
diff changeset
170 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')
0d85049ac68d switch to IRC join callbacks in bridge.py and participant.py
Charly COSTE <changaco@changaco.net>
parents: 219
diff changeset
171 self.bridge.bot.error(3, m, debug=True)
0d85049ac68d switch to IRC join callbacks in bridge.py and participant.py
Charly COSTE <changaco@changaco.net>
parents: 219
diff changeset
172
0d85049ac68d switch to IRC join callbacks in bridge.py and participant.py
Charly COSTE <changaco@changaco.net>
parents: 219
diff changeset
173 elif self.irc_connection != 'both':
0d85049ac68d switch to IRC join callbacks in bridge.py and participant.py
Charly COSTE <changaco@changaco.net>
parents: 219
diff changeset
174 self._close_irc_connection('')
0d85049ac68d switch to IRC join callbacks in bridge.py and participant.py
Charly COSTE <changaco@changaco.net>
parents: 219
diff changeset
175 self.irc_connection = error
0d85049ac68d switch to IRC join callbacks in bridge.py and participant.py
Charly COSTE <changaco@changaco.net>
parents: 219
diff changeset
176
0d85049ac68d switch to IRC join callbacks in bridge.py and participant.py
Charly COSTE <changaco@changaco.net>
parents: 219
diff changeset
177
123
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
178 def set_both_sides(self):
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
179 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
180 if isinstance(self.irc_connection, ServerConnection):
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
181 self.irc_connection.close('')
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
182 if self.irc_connection != 'both':
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
183 self.irc_connection = 'both'
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
184 if isinstance(self.muc, xmpp.muc):
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
185 self.muc.leave('')
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
186 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
187 if self.xmpp_c != 'both':
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
188 self.xmpp_c = 'both'
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
189
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
190
203
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
191 def change_nickname(self, newnick, on_protocol):
29
a694ffe6a973 Fixed nickname change.
Charly COSTE <changaco@changaco.net>
parents: 26
diff changeset
192 """Change participant's nickname."""
a694ffe6a973 Fixed nickname change.
Charly COSTE <changaco@changaco.net>
parents: 26
diff changeset
193
145
ddc87b605019 minor fix in Participant.changeNickname()
Charly COSTE <changaco@changaco.net>
parents: 137
diff changeset
194 p = None
29
a694ffe6a973 Fixed nickname change.
Charly COSTE <changaco@changaco.net>
parents: 26
diff changeset
195 oldnick = self.nickname
a694ffe6a973 Fixed nickname change.
Charly COSTE <changaco@changaco.net>
parents: 26
diff changeset
196
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
197 if self.protocol == 'xmpp':
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
198 if on_protocol == 'xmpp':
94
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
199 self._close_irc_connection('unwanted nick change')
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
200 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
201
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
202 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
203 try:
203
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
204 p = self.bridge.get_participant(newnick)
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
205 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
206 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
207 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
208 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
209 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
210 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
211 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
212 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
213 self._close_irc_connection('Changed nickname')
203
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
214 self.create_duplicate_on_irc()
98
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
215 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
216 if self.irc_connection == 'both':
203
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
217 self.bridge.add_participant('irc', oldnick)
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
218 self.create_duplicate_on_irc()
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
219 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
220
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
221 elif self.protocol == 'irc':
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
222 if on_protocol == 'irc':
94
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
223 self._close_xmpp_connection('unwanted nick change')
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
224 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
225
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
226 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
227 try:
203
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
228 p = self.bridge.get_participant(newnick)
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
229 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
230 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
231 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
232 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
233 for b in self.bridge.bot.bridges:
203
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
234 if b.has_participant(oldnick) and b.irc_server != self.bridge.irc_server:
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
235 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
236 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
237 self.bridge.bot.close_xmpp_connection(oldnick)
203
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
238 self.create_duplicate_on_xmpp()
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
239 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
240
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 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
242 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
243 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
244 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
245
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
246 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
247 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
248 if self.xmpp_c == 'both':
203
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
249 self.bridge.add_participant('xmpp', oldnick)
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
250 self.create_duplicate_on_xmpp()
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
251 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
252
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 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
254 self.duplicate_nickname = newnick
145
ddc87b605019 minor fix in Participant.changeNickname()
Charly COSTE <changaco@changaco.net>
parents: 137
diff changeset
255
ddc87b605019 minor fix in Participant.changeNickname()
Charly COSTE <changaco@changaco.net>
parents: 137
diff changeset
256 if not isinstance(p, Participant):
ddc87b605019 minor fix in Participant.changeNickname()
Charly COSTE <changaco@changaco.net>
parents: 137
diff changeset
257 return
ddc87b605019 minor fix in Participant.changeNickname()
Charly COSTE <changaco@changaco.net>
parents: 137
diff changeset
258
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
259 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
260 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
261 # 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
262 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
263 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
264 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
265 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
266 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
267 # 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
268 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
269 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
270 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
271 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
272 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
273 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
274 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
275 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
276 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
277 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
278 p.duplicate_nickname = p._get_new_duplicate_nickname()
203
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
279 p.create_duplicate_on_xmpp()
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
280 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
281 # 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
282 raise Exception('WTF ?')
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
283
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
284
203
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
285 def say_on_irc(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
286 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
287 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
288 action = True
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
289 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
290 else:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
291 action = False
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
292 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
293 try:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
294 if action:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
295 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
296 else:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
297 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
298 except ServerNotConnectedError:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
299 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
300 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
301 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
302 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
303 if bot_say:
213
fbe40b397f67 created Bridge.say_on_behalf in order to avoid code repetition in participant.py
Charly COSTE <changaco@changaco.net>
parents: 203
diff changeset
304 self.bridge.say_on_behalf(self.nickname, message, 'irc', action=action)
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
305
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
306
203
2a81c480439a renamed camelCased functions
Charly COSTE <changaco@changaco.net>
parents: 200
diff changeset
307 def say_on_irc_to(self, to, message):
72
6c4b841144f6 Better handling of participants
Charly COSTE <changaco@changaco.net>
parents: 68
diff changeset
308 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
309 self.irc_connection.privmsg(to, message)
72
6c4b841144f6 Better handling of participants
Charly COSTE <changaco@changaco.net>
parents: 68
diff changeset
310 elif not isinstance(self.xmpp_c, xmpp.client.Client):
229
a434b73bde51 added optional "action" argument to Participant.say_on_xmpp_to and muc.say_to
Charly COSTE <changaco@changaco.net>
parents: 226
diff changeset
311 if self.bridge.mode not in ['normal', 'bypass']:
a434b73bde51 added optional "action" argument to Participant.say_on_xmpp_to and muc.say_to
Charly COSTE <changaco@changaco.net>
parents: 226
diff changeset
312 self.bridge.get_participant(to).say_on_xmpp_to(self.nickname, 'XIB error: Sorry but cross-protocol private messages are disabled in '+self.bridge.mode+' mode.')
26
1691ab4d131f Fixed participant's "say" functions.
Charly COSTE <changaco@changaco.net>
parents: 19
diff changeset
313 else:
229
a434b73bde51 added optional "action" argument to Participant.say_on_xmpp_to and muc.say_to
Charly COSTE <changaco@changaco.net>
parents: 226
diff changeset
314 self.bridge.get_participant(to).say_on_xmpp_to(self.nickname, 'XIB error: 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
315
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
316
213
fbe40b397f67 created Bridge.say_on_behalf in order to avoid code repetition in participant.py
Charly COSTE <changaco@changaco.net>
parents: 203
diff changeset
317 def say_on_xmpp(self, message, action=False):
185
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
318 if isinstance(self.xmpp_c, xmpp.client.Client):
213
fbe40b397f67 created Bridge.say_on_behalf in order to avoid code repetition in participant.py
Charly COSTE <changaco@changaco.net>
parents: 203
diff changeset
319 self.muc.say(message, action=action)
185
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
320 elif not isinstance(self.irc_connection, ServerConnection):
213
fbe40b397f67 created Bridge.say_on_behalf in order to avoid code repetition in participant.py
Charly COSTE <changaco@changaco.net>
parents: 203
diff changeset
321 self.bridge.say_on_behalf(self.nickname, message, 'xmpp', action=action)
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
322
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
323
229
a434b73bde51 added optional "action" argument to Participant.say_on_xmpp_to and muc.say_to
Charly COSTE <changaco@changaco.net>
parents: 226
diff changeset
324 def say_on_xmpp_to(self, to, message, action=False):
185
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
325 if isinstance(self.xmpp_c, xmpp.client.Client):
229
a434b73bde51 added optional "action" argument to Participant.say_on_xmpp_to and muc.say_to
Charly COSTE <changaco@changaco.net>
parents: 226
diff changeset
326 self.muc.say_to(to, message, action=action)
185
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
327 elif not isinstance(self.irc_connection, ServerConnection):
229
a434b73bde51 added optional "action" argument to Participant.say_on_xmpp_to and muc.say_to
Charly COSTE <changaco@changaco.net>
parents: 226
diff changeset
328 if self.bridge.mode not in ['normal', 'bypass']:
a434b73bde51 added optional "action" argument to Participant.say_on_xmpp_to and muc.say_to
Charly COSTE <changaco@changaco.net>
parents: 226
diff changeset
329 self.bridge.get_participant(to).say_on_xmpp_to(self.nickname, 'XIB error: Sorry but cross-protocol private messages are disabled in '+self.bridge.mode+' mode.')
185
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
330 else:
229
a434b73bde51 added optional "action" argument to Participant.say_on_xmpp_to and muc.say_to
Charly COSTE <changaco@changaco.net>
parents: 226
diff changeset
331 self.bridge.get_participant(to).say_on_xmpp_to(self.nickname, 'XIB error: 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
332
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
333
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
334 def leave(self, message):
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
335 if message == None:
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
336 message = ''
189
e04410e7e527 split the leaving process in two, first call to Bridge.removeParticipant() calls Participant.leave(), second call (when the bot receives the part or quit event) removes it from Bridge.participants
Charly COSTE <changaco@changaco.net>
parents: 185
diff changeset
337 self.left = True
94
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
338 self._close_xmpp_connection(message)
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
339 self._close_irc_connection(message)
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
340
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
341
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
342 def _close_xmpp_connection(self, message):
72
6c4b841144f6 Better handling of participants
Charly COSTE <changaco@changaco.net>
parents: 68
diff changeset
343 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
344 self.muc.leave(message)
132
6a6885dbed25 handle more mode changing cases (added bridge.createDuplicatesOn())
Charly COSTE <changaco@changaco.net>
parents: 125
diff changeset
345 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
346 self.bridge.bot.close_xmpp_connection(self.nickname)
94
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
347
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
348
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
349 def _close_irc_connection(self, message):
72
6c4b841144f6 Better handling of participants
Charly COSTE <changaco@changaco.net>
parents: 68
diff changeset
350 if isinstance(self.irc_connection, ServerConnection):
219
63289aa1dea7 moved "nicknametoolong" and ServerConnection.really_connected handling to irclib, renamed ServerConnection.really_connected to .logged_in
Charly COSTE <changaco@changaco.net>
parents: 213
diff changeset
351 if self.irc_connection.logged_in:
83
5115ba7d5983 Leave chan only if (really) connected
Charly COSTE <changaco@changaco.net>
parents: 82
diff changeset
352 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
353 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
354 if self.irc_connection.used_by < 1:
64
8fc496eaa17b Handle IRC "nickcollision" event
Charly COSTE <changaco@changaco.net>
parents: 63
diff changeset
355 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
356 self.irc_connection = None
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
357
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
358
98
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
359 def __str__(self):
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
360 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
361 if isinstance(self.irc_connection, ServerConnection):
219
63289aa1dea7 moved "nicknametoolong" and ServerConnection.really_connected handling to irclib, renamed ServerConnection.really_connected to .logged_in
Charly COSTE <changaco@changaco.net>
parents: 213
diff changeset
362 r += '\nself.irc_connection='+str(self.irc_connection)+'\n'+'self.irc_connection.logged_in='+str(self.irc_connection.logged_in)
98
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
363 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
364 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
365 return r
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
366
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
367
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
368 def __del__(self):
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
369 self.leave('')