Mercurial > xib
annotate participant.py @ 229:a434b73bde51
added optional "action" argument to Participant.say_on_xmpp_to and muc.say_to
Signed-off-by: Charly COSTE <changaco@changaco.net>
author | Charly COSTE <changaco@changaco.net> |
---|---|
date | Sun, 07 Mar 2010 22:12:25 +0100 |
parents | 0d85049ac68d |
children | 5f1e9211af03 |
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 | 18 import re |
19 from time import sleep | |
20 | |
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 | 29 class Participant: |
103 | 30 def __init__(self, owner_bridge, protocol, nickname, real_jid=None): |
31 self.bot_admin = False | |
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 | 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 |
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
|
117 def _irc_nick_callback(self, error): |
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() |
b29fd5696a78
new mode bypass and new method bridge.changeMode
Charly COSTE <changaco@changaco.net>
parents:
117
diff
changeset
|
129 if new_duplicate_nickname != None: |
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 | 192 """Change participant's nickname.""" |
193 | |
145
ddc87b605019
minor fix in Participant.changeNickname()
Charly COSTE <changaco@changaco.net>
parents:
137
diff
changeset
|
194 p = None |
29 | 195 oldnick = self.nickname |
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('') |