aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar jesopo2020-02-27 10:09:28 +0000
committerGravatar jesopo2020-02-27 10:09:28 +0000
commit729324342998ffb0ed68204be48164cbd9865f5c (patch)
tree4435cd93b95d70e9a726ce2e0b194bd8f96ab47c /src
parentadd `!badge show <name>` (diff)
signature
fix type hinting issues in send_modes/send_kicks (IRCChannel)
Diffstat (limited to 'src')
-rw-r--r--src/IRCChannel.py20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/IRCChannel.py b/src/IRCChannel.py
index 08116120..028a51b7 100644
--- a/src/IRCChannel.py
+++ b/src/IRCChannel.py
@@ -215,26 +215,30 @@ class Channel(IRCObject.Object):
def send_tagmsg(self, tags: dict):
return self.server.send_tagmsg(self.name, tags)
- def _chunks(self, n: int, l: typing.List[typing.Tuple[str, str]]):
- return [l[i:i+n] for i in range(0, len(l), n)]
+ def _chunks(self, chunk: int, n: int) -> typing.List[typing.List[int]]:
+ return [list(range(i, i+chunk)) for i in range(0, n, chunk)]
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, modes: typing.List[typing.Tuple[str, str]], add: bool):
chunk_n = min(6,
int(self.server.isupport.get("MODES", "3") or "6"))
- for chunk in self._chunks(chunk_n, modes):
- modes, args = list(zip(*chunk))
- mode_str = "%s%s" % ("+" if add else "-", "".join(modes))
- self.server.send_mode(self.name, mode_str, args)
+
+ for chunk in self._chunks(chunk_n, len(modes)):
+ chunk_items = modes[chunk[0]:chunk[0]+len(chunk)]
+ chunk_modes = [i[0] for i in chunk_items]
+ chunk_args = [i[1] for i in chunk_items]
+ mode_str = "%s%s" % ("+" if add else "-", "".join(chunk_modes))
+ self.server.send_mode(self.name, mode_str, chunk_args)
def send_kick(self, target: str, reason: str=None):
return self.server.send_kick(self.name, target, reason)
def send_kicks(self, targets: typing.List[str], reason: str=None):
chunk_n = min(4, self.server.targmax.get("KICK", 1))
- for chunk in self._chunks(chunk_n, targets):
+ for chunk in self._chunks(chunk_n, len(targets)):
chan_str = ",".join([self.name]*len(chunk))
- self.server.send_kick(chan_str, ",".join(chunk), reason)
+ nicks = targets[chunk[0]:chunk[0]+len(chunk)]
+ self.server.send_kick(chan_str, ",".join(nicks), reason)
def send_ban(self, hostmask: str):
return self.server.send_mode(self.name, "+b", [hostmask])