Changeset 126

Show
Ignore:
Timestamp:
10/31/07 17:36:28 (3 years ago)
Author:
omega
Message:

invite seulement ceux qui sont en free for chat

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • randomchat/randomchat.py

    r125 r126  
    1010 
    1111NS_MUC_USER = xmpp.NS_MUC+'#user' 
    12  
    13 PRS_OFFLINE = 1 
    14 PRS_CHAT = 2 
    15 PRS_AVAILABLE = 3 
    16 PRS_AWAY = 4 
    17 PRS_XA = 5 
    18 PRS_DND = 6 
    1912 
    2013def db_connect(config): 
     
    3629        user = cursor.fetchone() 
    3730        while user: 
    38             self.users_list[user[0]] = PRS_OFFLINE 
     31            self.users_list[user[0]] = False 
    3932            user = cursor.fetchone() 
    4033        cursor.close() 
     
    4639        self.db.execute("INSERT INTO randomchat (jid) VALUES (?)", (jid,)) 
    4740        self.db.commit() 
    48         self.users_list[jid] = PRS_OFFLINE 
     41        self.users_list[jid] = False 
    4942 
    5043    def remove_user(self, jid): 
     
    5548    def get_chat_partner(self, jid): 
    5649        user = jid.getStripped() 
    57         if len(self.users_list) < 2: 
     50        users = [jid for jid in self.users_list.keys() if self.users_list[jid]] 
     51        #if we have only one participant don't start a chat, except when the user is not in this list (so in fact we have two participants) 
     52        if (len(users) < 2 and user in users) or len(users) < 1: 
    5853            return None 
    5954        else: 
    60             users = self.users_list.keys() 
    6155            other = random.choice(users) 
    6256            while other == user: 
    6357                other = random.choice(users) 
    6458            return other 
     59 
     60    def update_status(self, jid, show): 
     61        if not self.has_user(jid): 
     62            return 
     63        if show == 'chat': 
     64            self.users_list[jid] = True 
     65        else: 
     66            self.users_list[jid] = False 
     67        print self.users_list 
     68 
     69    def jid_list(self): 
     70        return self.users_list.keys() 
     71 
     72 
    6573 
    6674class MUC: 
     
    189197        self.con.RegisterHandler('message', self.message_handler) 
    190198 
     199        self.send_probes() 
     200 
    191201 
    192202        while 1: 
     
    217227            self.muc.presence_handler(con, prs) 
    218228            return 
    219         pass 
     229        self.users.update_status(prs.getFrom().getStripped(), prs.getShow()) 
     230 
    220231 
    221232    def message_handler(self, con, msg): 
     
    233244        return True 
    234245 
     246    def send_probes(self): 
     247        for jid in self.users.jid_list(): 
     248            self.con.send(xmpp.Presence(to = jid, frm = self.jid, typ='probe')) 
     249 
    235250 
    236251db = db_connect(config)