diff --git a/ircbot/bot.py b/ircbot/bot.py index 5d0172b..fde61b9 100644 --- a/ircbot/bot.py +++ b/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")