aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar jesopo2020-02-17 10:16:43 +0000
committerGravatar jesopo2020-02-17 10:16:43 +0000
commitec5a6000c9fa9913087cd039ec3c4a70b78dcb5a (patch)
treea16ead248827be4813a082f9d762b421cf13debb /src
parentadd `cmask` command spec type (all users in channel matching mask) (diff)
signature
add IRCChannel.send_modes mass modes and chunking
Diffstat (limited to 'src')
-rw-r--r--src/IRCChannel.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/IRCChannel.py b/src/IRCChannel.py
index 5f457d14..fc1317df 100644
--- a/src/IRCChannel.py
+++ b/src/IRCChannel.py
@@ -217,12 +217,20 @@ class Channel(IRCObject.Object):
def send_mode(self, mode: str=None, target: typing.List[str]=None):
return self.server.send_mode(self.name, mode, target)
+ def send_modes(self, mode: str, add: bool, args: typing.List[str]):
+ chunk_n = int(self.server.isupport.get("MODES", "3") or "6")
+ chunks = [args[i:i+chunk_n] for i in range(0, len(args), chunk_n)]
+ for chunk in chunks:
+ mode_str = "%s%s" % ("+" if add else "-", mode*len(chunk))
+ self.server.send_mode(self.name, mode_str, chunk)
+
def send_kick(self, target: str, reason: str=None):
return self.server.send_kick(self.name, target, reason)
def send_ban(self, hostmask: str):
return self.server.send_mode(self.name, "+b", [hostmask])
def send_unban(self, hostmask: str):
return self.server.send_mode(self.name, "-b", [hostmask])
+
def send_topic(self, topic: str):
return self.server.send_topic(self.name, topic)
def send_part(self, reason: str=None):