Add !topic and !topicappend in channel_op.py

This commit is contained in:
jesopo 2018-09-06 17:25:38 +01:00
parent a8dd9e059f
commit 73bdaff977
2 changed files with 33 additions and 23 deletions

View file

@ -113,6 +113,8 @@ class Channel(object):
self.server.send_mode(self.name, "+b", hostmask) self.server.send_mode(self.name, "+b", hostmask)
def send_unban(self, hostmask): def send_unban(self, hostmask):
self.server.send_mode(self.name, "-b", hostmask) self.server.send_mode(self.name, "-b", hostmask)
def send_topic(self, topic):
self.server.send_topic(self.name, topic)
def mode_or_above(self, user, mode): def mode_or_above(self, user, mode):
mode_orders = list(self.server.mode_prefixes.values()) mode_orders = list(self.server.mode_prefixes.values())

View file

@ -4,41 +4,44 @@ class Module(object):
_name = "Channel Op" _name = "Channel Op"
def __init__(self, bot, events, exports): def __init__(self, bot, events, exports):
self.bot = bot self.bot = bot
events.on("received").on("command").on("kick", "k"
).hook(self.kick, channel_only=True, require_mode="o",
min_args=1, help="Kick a user from the channel",
usage="<nickname> [reason]")
events.on("received").on("command").on("ban" events.on("received.command").on("kick", "k").hook(self.kick,
).hook(self.ban, channel_only=True, require_mode="o", channel_only=True, require_mode="o", usage="<nickname> [reason]",
min_args=1, help="Ban a user/hostmask from the channel", min_args=1, help="Kick a user from the channel")
usage="<nickname/hostmask>") events.on("received.command.ban").hook(self.ban, channel_only=True,
events.on("received").on("command").on("unban" require_mode="o", min_args=1, usage="<nickname/hostmask>",
).hook(self.unban, channel_only=True, require_mode="o", help="Ban a user/hostmask from the channel")
min_args=1, help="Unban a user/hostmask from the channel", events.on("received.command.unban").hook(self.unban,
usage="<nickname/hostmask>") channel_only=True, require_mode="o", usage="<nickname/hostmask>",
min_args=1, help="Unban a user/hostmask from the channel")
events.on("received").on("command").on("kickban", "kb" events.on("received.command").on("kickban", "kb"
).hook(self.kickban, channel_only=True, require_mode="o", ).hook(self.kickban, channel_only=True, require_mode="o",
min_args=1, help="Kickban a user from the channel", min_args=1, help="Kickban a user from the channel",
usage="<nickanme> [reason]") usage="<nickanme> [reason]")
events.on("received").on("command").on("op" events.on("received.command.op"
).hook(self.op, channel_only=True, require_mode="o", ).hook(self.op, channel_only=True, require_mode="o",
help="Give +o to a user", usage="[nickname]") help="Give +o to a user", usage="[nickname]")
events.on("received").on("command").on("deop" events.on("received.command.deop"
).hook(self.deop, channel_only=True, require_mode="o", ).hook(self.deop, channel_only=True, require_mode="o",
help="Take +o from a user", usage="[nickname]") help="Take +o from a user", usage="[nickname]")
events.on("received").on("command").on("voice" events.on("received.command.voice").hook(self.voice,
).hook(self.voice, channel_only=True, require_mode="o", channel_only=True, require_mode="o", usage="[nickname]",
help="Give +v to a user", usage="[nickname]") help="Give +v to a user")
events.on("received").on("command").on("devoice" events.on("received.command.devoice").hook(self.devoice,
).hook(self.devoice, channel_only=True, require_mode="o", channel_only=True, require_mode="o", usage="[nickname]",
help="Take +v from a user", usage="[nickname]") help="Take +v from a user")
events.on("received").on("message").on("channel").hook( events.on("received.command.topic").hook(self.topic, min_args=1,
self.highlight_spam) require_mode="o", channel_only=True, usage="<topic>",
help="Set the topic of the current channel")
events.on("received.command").on("topicappend", "tappend").hook(
self.tappend, min_args=1, require_mode="o", channel_only=True,
usage="<topic>", help="Set the topic of the current channel")
events.on("received.message.channel").hook(self.highlight_spam)
exports.add("channelset", {"setting": "highlight-spam-threshold", exports.add("channelset", {"setting": "highlight-spam-threshold",
"help": "Set the number of nicknames in a message that " "help": "Set the number of nicknames in a message that "
@ -118,6 +121,11 @@ class Module(object):
"args_split"][0] "args_split"][0]
event["target"].send_mode("-v", target) event["target"].send_mode("-v", target)
def topic(self, event):
event["target"].send_topic(event["args"])
def tappend(self, event):
event["target"].send_topic(event["target"].topic + event["args"])
def highlight_spam(self, event): def highlight_spam(self, event):
if event["channel"].get_setting("highlight-spam-protection", False): if event["channel"].get_setting("highlight-spam-protection", False):
nicknames = list(map(lambda user: user.nickname, nicknames = list(map(lambda user: user.nickname,