mirror of
				https://github.com/jlu5/PyLink.git
				synced 2025-11-04 00:47:21 +01:00 
			
		
		
		
	utils.applyModes: fix logging output; only remove delete modes with args if new args are different
Previously, you'd get interesting messages where in sequential FJOINs, PyLink would remove param-modes like ('f', '6:5') and then add it right back, thinking that it was a duplicate.
			
			
This commit is contained in:
		
							parent
							
								
									b27fcc7f8f
								
							
						
					
					
						commit
						1c7f2f6a83
					
				
							
								
								
									
										10
									
								
								utils.py
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								utils.py
									
									
									
									
									
								
							@ -173,19 +173,19 @@ def applyModes(irc, target, changedmodes):
 | 
			
		||||
                continue
 | 
			
		||||
        if mode[0][0] == '+':
 | 
			
		||||
            # We're adding a mode
 | 
			
		||||
            existing = [m for m in modelist if m[0] == real_mode[0]]
 | 
			
		||||
            if existing and real_mode[1] and mode[0] not in irc.cmodes['*A']:
 | 
			
		||||
            existing = [m for m in modelist if m[0] == real_mode[0] and m[1] != real_mode[1]]
 | 
			
		||||
            if existing and real_mode[1] and real_mode[0] not in irc.cmodes['*A']:
 | 
			
		||||
                # The mode we're setting takes a parameter, but is not a list mode (like +beI).
 | 
			
		||||
                # Therefore, only one version of it can exist at a time, and we must remove
 | 
			
		||||
                # any old modepairs using the same letter. Otherwise, we'll get duplicates when,
 | 
			
		||||
                # for example, someone sets mode "+l 30" on a channel already set "+l 25".
 | 
			
		||||
                log.debug('(%s) Old modes for mode %r exist on %s, removing them: %s',
 | 
			
		||||
                          irc.name, mode, target, str(existing))
 | 
			
		||||
                          irc.name, real_mode, target, str(existing))
 | 
			
		||||
                [modelist.discard(oldmode) for oldmode in existing]
 | 
			
		||||
            modelist.add(real_mode)
 | 
			
		||||
            log.debug('(%s) Adding mode %r on %s', irc.name, mode, target)
 | 
			
		||||
            log.debug('(%s) Adding mode %r on %s', irc.name, real_mode, target)
 | 
			
		||||
        else:
 | 
			
		||||
            log.debug('(%s) Removing mode %r on %s', irc.name, mode, target)
 | 
			
		||||
            log.debug('(%s) Removing mode %r on %s', irc.name, real_mode, target)
 | 
			
		||||
            # We're removing a mode
 | 
			
		||||
            if real_mode[1] is None:
 | 
			
		||||
                # We're removing a mode that only takes arguments when setting.
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user