aboutsummaryrefslogtreecommitdiff
path: root/IRCChannel.py
diff options
context:
space:
mode:
Diffstat (limited to 'IRCChannel.py')
-rw-r--r--IRCChannel.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/IRCChannel.py b/IRCChannel.py
new file mode 100644
index 00000000..04413282
--- /dev/null
+++ b/IRCChannel.py
@@ -0,0 +1,64 @@
+import IRCLog
+
+class Channel(object):
+ def __init__(self, name, server, bot):
+ self.name = name.lower()
+ self.server = server
+ self.bot = bot
+ self.topic = ""
+ self.topic_setter_nickname = None
+ self.topic_setter_username = None
+ self.topic_setter_hostname = None
+ self.topic_time = 0
+ self.users = set([])
+ self.modes = {}
+ self.created_timestamp = None
+ self.log = IRCLog.Log(bot)
+ def set_topic(self, topic):
+ self.topic = topic
+ def set_topic_setter(self, nickname, username=None, hostname=None):
+ self.topic_setter_nickname = nickname
+ self.topic_setter_username = username
+ self.topic_setter_hostname = hostname
+ def set_topic_time(self, unix_timestamp):
+ self.topic_time = unix_timestamp
+ def add_user(self, user):
+ self.users.add(user)
+ def remove_user(self, user):
+ self.users.remove(user)
+ def add_mode(self, mode, args=None):
+ if not mode in self.modes:
+ self.modes[mode] = set([])
+ if args:
+ self.modes[mode].add(args.lower())
+ def remove_mode(self, mode, args=None):
+ if not args:
+ del self.modes[mode]
+ else:
+ self.modes[mode].remove(args.lower())
+ if not len(self.modes[mode]):
+ del self.modes[mode]
+ def set_setting(self, setting, value):
+ self.bot.database.set_channel_setting(self.server.id,
+ self.name, setting, value)
+ def get_setting(self, setting, default=None):
+ return self.bot.database.get_channel_setting(
+ self.server.id, self.name, setting, default)
+ def find_settings(self, pattern, default=[]):
+ return self.bot.database.find_channel_setting(
+ self.server.id, self.name, pattern, default)
+ def del_setting(self, setting):
+ self.bot.database.del_channel_setting(self.server.id,
+ self.name, setting)
+
+ def send_message(self, text):
+ self.server.send_message(self.name, text)
+ def send_mode(self, mode=None, target=None):
+ self.server.send_mode(self.name, mode, target)
+ def mode_or_above(self, nickname, mode):
+ mode_orders = list(self.server.mode_prefixes.values())
+ mode_index = mode_orders.index(mode)
+ for mode in mode_orders[:mode_index+1]:
+ if nickname.lower() in self.modes.get(mode, []):
+ return True
+ return False