deduplicate Channel object from irc library
I think this is an extremely ancient copy and paste job I never fully corrected
This commit is contained in:
		
							parent
							
								
									ecaabbce89
								
							
						
					
					
						commit
						c2d26f404e
					
				
							
								
								
									
										163
									
								
								ircbot/bot.py
									
									
									
									
									
								
							
							
						
						
									
										163
									
								
								ircbot/bot.py
									
									
									
									
									
								
							| @ -15,6 +15,7 @@ from xmlrpc.server import SimpleXMLRPCRequestHandler, SimpleXMLRPCServer | ||||
| 
 | ||||
| import irc.client | ||||
| import irc.modes | ||||
| from irc.bot import Channel | ||||
| from irc.connection import Factory | ||||
| from irc.dict import IRCDict | ||||
| from jaraco.stream import buffer | ||||
| @ -994,165 +995,3 @@ class IRCBot(irc.client.SimpleIRCClient): | ||||
|             del sys.modules[path] | ||||
| 
 | ||||
|         self.die(msg="Shutting down...") | ||||
| 
 | ||||
| 
 | ||||
| class Channel(object): | ||||
|     """A class for keeping information about an IRC channel.""" | ||||
| 
 | ||||
|     def __init__(self): | ||||
|         """Initialize channel object.""" | ||||
|         self.userdict = IRCDict() | ||||
|         self.operdict = IRCDict() | ||||
|         self.voiceddict = IRCDict() | ||||
|         self.ownerdict = IRCDict() | ||||
|         self.halfopdict = IRCDict() | ||||
|         self.modes = {} | ||||
| 
 | ||||
|     def users(self): | ||||
|         """Returns an unsorted list of the channel's users.""" | ||||
|         return list(self.userdict.keys()) | ||||
| 
 | ||||
|     def opers(self): | ||||
|         """Returns an unsorted list of the channel's operators.""" | ||||
|         return list(self.operdict.keys()) | ||||
| 
 | ||||
|     def voiced(self): | ||||
|         """Returns an unsorted list of the persons that have voice mode set in the channel.""" | ||||
|         return list(self.voiceddict.keys()) | ||||
| 
 | ||||
|     def owners(self): | ||||
|         """Returns an unsorted list of the channel's owners.""" | ||||
|         return list(self.ownerdict.keys()) | ||||
| 
 | ||||
|     def halfops(self): | ||||
|         """Returns an unsorted list of the channel's half-operators.""" | ||||
|         return list(self.halfopdict.keys()) | ||||
| 
 | ||||
|     def has_user(self, nick): | ||||
|         """Check whether the channel has a user.""" | ||||
|         return nick in self.userdict | ||||
| 
 | ||||
|     def is_oper(self, nick): | ||||
|         """Check whether a user has operator status in the channel.""" | ||||
|         return nick in self.operdict | ||||
| 
 | ||||
|     def is_voiced(self, nick): | ||||
|         """Check whether a user has voice mode set in the channel.""" | ||||
|         return nick in self.voiceddict | ||||
| 
 | ||||
|     def is_owner(self, nick): | ||||
|         """Check whether a user has owner status in the channel.""" | ||||
|         return nick in self.ownerdict | ||||
| 
 | ||||
|     def is_halfop(self, nick): | ||||
|         """Check whether a user has half-operator status in the channel.""" | ||||
|         return nick in self.halfopdict | ||||
| 
 | ||||
|     def add_user(self, nick): | ||||
|         """Add user.""" | ||||
|         self.userdict[nick] = 1 | ||||
| 
 | ||||
|     def remove_user(self, nick): | ||||
|         """Remove user.""" | ||||
|         for d in self.userdict, self.operdict, self.voiceddict: | ||||
|             if nick in d: | ||||
|                 del d[nick] | ||||
| 
 | ||||
|     def change_nick(self, before, after): | ||||
|         """Handle a nick change.""" | ||||
|         self.userdict[after] = self.userdict.pop(before) | ||||
|         if before in self.operdict: | ||||
|             self.operdict[after] = self.operdict.pop(before) | ||||
|         if before in self.voiceddict: | ||||
|             self.voiceddict[after] = self.voiceddict.pop(before) | ||||
| 
 | ||||
|     def set_userdetails(self, nick, details): | ||||
|         """Set user details.""" | ||||
|         if nick in self.userdict: | ||||
|             self.userdict[nick] = details | ||||
| 
 | ||||
|     def set_mode(self, mode, value=None): | ||||
|         """Set mode on the channel. | ||||
| 
 | ||||
|         Arguments: | ||||
| 
 | ||||
|             mode -- The mode (a single-character string). | ||||
| 
 | ||||
|             value -- Value | ||||
|         """ | ||||
|         if mode == "o": | ||||
|             self.operdict[value] = 1 | ||||
|         elif mode == "v": | ||||
|             self.voiceddict[value] = 1 | ||||
|         elif mode == "q": | ||||
|             self.ownerdict[value] = 1 | ||||
|         elif mode == "h": | ||||
|             self.halfopdict[value] = 1 | ||||
|         else: | ||||
|             self.modes[mode] = value | ||||
| 
 | ||||
|     def clear_mode(self, mode, value=None): | ||||
|         """Clear mode on the channel. | ||||
| 
 | ||||
|         Arguments: | ||||
| 
 | ||||
|             mode -- The mode (a single-character string). | ||||
| 
 | ||||
|             value -- Value | ||||
|         """ | ||||
|         try: | ||||
|             if mode == "o": | ||||
|                 del self.operdict[value] | ||||
|             elif mode == "v": | ||||
|                 del self.voiceddict[value] | ||||
|             elif mode == "q": | ||||
|                 del self.ownerdict[value] | ||||
|             elif mode == "h": | ||||
|                 del self.halfopdict[value] | ||||
|             else: | ||||
|                 del self.modes[mode] | ||||
|         except KeyError: | ||||
|             pass | ||||
| 
 | ||||
|     def has_mode(self, mode): | ||||
|         """Return if mode is in channel modes.""" | ||||
|         return mode in self.modes | ||||
| 
 | ||||
|     def is_moderated(self): | ||||
|         """Return if the channel is +m.""" | ||||
|         return self.has_mode("m") | ||||
| 
 | ||||
|     def is_secret(self): | ||||
|         """Return if the channel is +s.""" | ||||
|         return self.has_mode("s") | ||||
| 
 | ||||
|     def is_protected(self): | ||||
|         """Return if the channel is +p.""" | ||||
|         return self.has_mode("p") | ||||
| 
 | ||||
|     def has_topic_lock(self): | ||||
|         """Return if the channel is +t.""" | ||||
|         return self.has_mode("t") | ||||
| 
 | ||||
|     def is_invite_only(self): | ||||
|         """Return if the channel is +i.""" | ||||
|         return self.has_mode("i") | ||||
| 
 | ||||
|     def has_allow_external_messages(self): | ||||
|         """Return if the channel is +n.""" | ||||
|         return self.has_mode("n") | ||||
| 
 | ||||
|     def has_limit(self): | ||||
|         """Return if the channel is +l.""" | ||||
|         return self.has_mode("l") | ||||
| 
 | ||||
|     def limit(self): | ||||
|         """Return the channel limit count.""" | ||||
|         if self.has_limit(): | ||||
|             return self.modes["l"] | ||||
|         else: | ||||
|             return None | ||||
| 
 | ||||
|     def has_key(self): | ||||
|         """Return if the channel is +k.""" | ||||
|         return self.has_mode("k") | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user