annotate participant.py @ 195:e4ceefab8ba5

fixed Bot.restart_bridges_delayed(), don't send the message to admins more than once Signed-off-by: Charly COSTE <changaco@changaco.net>
author Charly COSTE <changaco@changaco.net>
date Sun, 21 Feb 2010 16:19:25 +0100
parents 12fa9bb73b1d
children 4a379eb359dd
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']:
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
42 self.createDuplicateOnIRC()
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':
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
44 self.createDuplicateOnXMPP()
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+'_'
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
51 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
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
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
56 def createDuplicateOnXMPP(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
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
93 self.createDuplicateOnXMPP()
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
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
110 def createDuplicateOnIRC(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
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 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
118 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
119 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
120 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
121 if self.nickname != self.duplicate_nickname:
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
122 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
123 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
124 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
125
82
90baff5dedb2 Fixed callbacks in participant.py
Charly COSTE <changaco@changaco.net>
parents: 78
diff changeset
126 elif self.irc_connection != 'both':
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
127
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
128 if error in ['nicknameinuse', 'nickcollision']:
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
129 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
130 return
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
131
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
132 if self.bridge.mode == 'bypass':
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
133 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
134 if new_duplicate_nickname != None:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
135 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
136 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
137 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
138 self.duplicate_nickname = new_duplicate_nickname
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
139 if isinstance(self.irc_connection, ServerConnection):
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
140 self.irc_connection.close('')
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
141 self.irc_connection = error
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
142 self.createDuplicateOnIRC()
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
143 return
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
144
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
145 else:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
146 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
147
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
148 elif error == 'erroneusnickname':
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
149 if self.bridge.mode == 'bypass':
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
150 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
151 if isinstance(self.irc_connection, ServerConnection):
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
152 self.irc_connection.close('')
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
153 self.irc_connection = error
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
154 self.createDuplicateOnIRC()
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
155 return
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
156 else:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
157 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
158
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
159 elif error == 'nicknametoolong':
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
160 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
161
82
90baff5dedb2 Fixed callbacks in participant.py
Charly COSTE <changaco@changaco.net>
parents: 78
diff changeset
162 else:
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
163 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
164
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
165 if isinstance(self.irc_connection, ServerConnection):
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
166 self.irc_connection.close('')
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
167 self.irc_connection = error
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
168
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
169
123
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
170 def set_both_sides(self):
180
102f895347ff added a required "importance" argument to Bot.error()
Charly COSTE <changaco@changaco.net>
parents: 174
diff changeset
171 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
172 if isinstance(self.irc_connection, ServerConnection):
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
173 self.irc_connection.close('')
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
174 if self.irc_connection != 'both':
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
175 self.irc_connection = 'both'
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
176 if isinstance(self.muc, xmpp.muc):
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
177 self.muc.leave('')
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
178 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
179 if self.xmpp_c != 'both':
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
180 self.xmpp_c = 'both'
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
181
75a03f10a863 Code refactoring (new method participant.set_both_sides())
Charly COSTE <changaco@changaco.net>
parents: 118
diff changeset
182
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
183 def changeNickname(self, newnick, on_protocol):
29
a694ffe6a973 Fixed nickname change.
Charly COSTE <changaco@changaco.net>
parents: 26
diff changeset
184 """Change participant's nickname."""
a694ffe6a973 Fixed nickname change.
Charly COSTE <changaco@changaco.net>
parents: 26
diff changeset
185
145
ddc87b605019 minor fix in Participant.changeNickname()
Charly COSTE <changaco@changaco.net>
parents: 137
diff changeset
186 p = None
29
a694ffe6a973 Fixed nickname change.
Charly COSTE <changaco@changaco.net>
parents: 26
diff changeset
187 oldnick = self.nickname
a694ffe6a973 Fixed nickname change.
Charly COSTE <changaco@changaco.net>
parents: 26
diff changeset
188
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
189 if self.protocol == 'xmpp':
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
190 if on_protocol == 'xmpp':
94
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
191 self._close_irc_connection('unwanted nick change')
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
192 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
193
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
194 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
195 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
196 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
197 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
198 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
199 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
200 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
201 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
202 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
203 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
204 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
205 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
206 self.createDuplicateOnIRC()
98
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
207 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
208 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
209 self.bridge.addParticipant('irc', oldnick)
98
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
210 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
211 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
212
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
213 elif self.protocol == 'irc':
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
214 if on_protocol == 'irc':
94
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
215 self._close_xmpp_connection('unwanted nick change')
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
216 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
217
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
218 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
219 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
220 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
221 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
222 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
223 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
224 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
225 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
226 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
227 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
228 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
229 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
230 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
231 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
232
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 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
234 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
235 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
236 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
237
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 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
239 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
240 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
241 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
242 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
243 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
244
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.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
246 self.duplicate_nickname = newnick
145
ddc87b605019 minor fix in Participant.changeNickname()
Charly COSTE <changaco@changaco.net>
parents: 137
diff changeset
247
ddc87b605019 minor fix in Participant.changeNickname()
Charly COSTE <changaco@changaco.net>
parents: 137
diff changeset
248 if not isinstance(p, Participant):
ddc87b605019 minor fix in Participant.changeNickname()
Charly COSTE <changaco@changaco.net>
parents: 137
diff changeset
249 return
ddc87b605019 minor fix in Participant.changeNickname()
Charly COSTE <changaco@changaco.net>
parents: 137
diff changeset
250
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 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
252 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
253 # 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
254 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
255 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
256 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
257 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
258 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
259 # 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
260 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
261 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
262 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
263 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
264 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
265 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
266 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
267 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
268 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
269 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
270 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
271 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
272 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
273 # 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
274 raise Exception('WTF ?')
0
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
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
277 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
278 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
279 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
280 action = True
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
281 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
282 else:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
283 action = False
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
284 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
285 try:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
286 if action:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
287 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
288 else:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
289 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
290 except ServerNotConnectedError:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
291 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
292 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
293 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
294 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
295 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
296 if action:
192
12fa9bb73b1d check connection in Bridge.say(), use Bridge.say() in Participant.sayOn{IRC,XMPP}()
Charly COSTE <changaco@changaco.net>
parents: 189
diff changeset
297 self.bridge.say('* '+self.nickname+' '+message, on_xmpp=False)
95
f27de569f5db Improved /me handling
Charly COSTE <changaco@changaco.net>
parents: 94
diff changeset
298 else:
192
12fa9bb73b1d check connection in Bridge.say(), use Bridge.say() in Participant.sayOn{IRC,XMPP}()
Charly COSTE <changaco@changaco.net>
parents: 189
diff changeset
299 self.bridge.say('<'+self.nickname+'> '+message, on_xmpp=False)
0
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
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
302 def sayOnIRCTo(self, to, message):
72
6c4b841144f6 Better handling of participants
Charly COSTE <changaco@changaco.net>
parents: 68
diff changeset
303 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
304 self.irc_connection.privmsg(to, message)
72
6c4b841144f6 Better handling of participants
Charly COSTE <changaco@changaco.net>
parents: 68
diff changeset
305 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
306 if self.bridge.mode != 'normal':
1691ab4d131f Fixed participant's "say" functions.
Charly COSTE <changaco@changaco.net>
parents: 19
diff changeset
307 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
308 else:
1691ab4d131f Fixed participant's "say" functions.
Charly COSTE <changaco@changaco.net>
parents: 19
diff changeset
309 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
310
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
311
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
312 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
313 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
314 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
315 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
316 if message[:4] == '/me ':
192
12fa9bb73b1d check connection in Bridge.say(), use Bridge.say() in Participant.sayOn{IRC,XMPP}()
Charly COSTE <changaco@changaco.net>
parents: 189
diff changeset
317 self.bridge.say('* '+self.nickname+' '+message[4:], on_irc=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 else:
192
12fa9bb73b1d check connection in Bridge.say(), use Bridge.say() in Participant.sayOn{IRC,XMPP}()
Charly COSTE <changaco@changaco.net>
parents: 189
diff changeset
319 self.bridge.say('<'+self.nickname+'> '+message, on_irc=False)
0
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
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
322 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
323 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
324 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
325 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
326 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
327 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
328 else:
6173873c6b0d minor fix in participant.py, encoding is handled in irclib since cbaab9cc23f8097dbe647d5ea6d982b1c9e49b19
Charly COSTE <changaco@changaco.net>
parents: 180
diff changeset
329 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
330
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
331
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
332 def leave(self, message):
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
333 if message == None:
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
334 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
335 self.left = True
94
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
336 self._close_xmpp_connection(message)
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
337 self._close_irc_connection(message)
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
338
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
339
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
340 def _close_xmpp_connection(self, message):
72
6c4b841144f6 Better handling of participants
Charly COSTE <changaco@changaco.net>
parents: 68
diff changeset
341 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
342 self.muc.leave(message)
132
6a6885dbed25 handle more mode changing cases (added bridge.createDuplicatesOn())
Charly COSTE <changaco@changaco.net>
parents: 125
diff changeset
343 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
344 self.bridge.bot.close_xmpp_connection(self.nickname)
94
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
345
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
346
810a6bed6c9c Tried to fix participant.changeNickname
Charly COSTE <changaco@changaco.net>
parents: 86
diff changeset
347 def _close_irc_connection(self, message):
72
6c4b841144f6 Better handling of participants
Charly COSTE <changaco@changaco.net>
parents: 68
diff changeset
348 if isinstance(self.irc_connection, ServerConnection):
83
5115ba7d5983 Leave chan only if (really) connected
Charly COSTE <changaco@changaco.net>
parents: 82
diff changeset
349 if self.irc_connection.really_connected == True:
5115ba7d5983 Leave chan only if (really) connected
Charly COSTE <changaco@changaco.net>
parents: 82
diff changeset
350 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
351 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
352 if self.irc_connection.used_by < 1:
64
8fc496eaa17b Handle IRC "nickcollision" event
Charly COSTE <changaco@changaco.net>
parents: 63
diff changeset
353 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
354 self.irc_connection = None
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
355
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
356
98
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
357 def __str__(self):
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
358 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
359 if isinstance(self.irc_connection, ServerConnection):
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
360 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
361 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
362 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
363 return r
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
364
35e0ddf3b13c Code cleaning, participant.changeNickname improvement, added participant.__str__
Charly COSTE <changaco@changaco.net>
parents: 95
diff changeset
365
0
4c842d23d4ce Initial commit, version 0.1
Charly COSTE <changaco@changaco.net>
parents:
diff changeset
366 def __del__(self):
118
b29fd5696a78 new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents: 117
diff changeset
367 self.leave('')