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.client
|
||||||
import irc.modes
|
import irc.modes
|
||||||
|
from irc.bot import Channel
|
||||||
from irc.connection import Factory
|
from irc.connection import Factory
|
||||||
from irc.dict import IRCDict
|
from irc.dict import IRCDict
|
||||||
from jaraco.stream import buffer
|
from jaraco.stream import buffer
|
||||||
|
@ -994,165 +995,3 @@ class IRCBot(irc.client.SimpleIRCClient):
|
||||||
del sys.modules[path]
|
del sys.modules[path]
|
||||||
|
|
||||||
self.die(msg="Shutting down...")
|
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…
Reference in New Issue