From 07a7e41f72cfa9dfd207a04445f4aa5b0b6fa3ce Mon Sep 17 00:00:00 2001 From: Lint Action Date: Tue, 4 May 2021 06:09:42 +0000 Subject: =?UTF-8?q?:rotating=5Flight:=20=E8=87=AA=E5=8A=A8=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E4=BB=A3=E7=A0=81=E6=A0=BC=E5=BC=8F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ATRI/plugins/utils/__init__.py | 31 +++++++-------- ATRI/plugins/utils/data_source.py | 79 ++++++++++++++++++--------------------- 2 files changed, 50 insertions(+), 60 deletions(-) (limited to 'ATRI/plugins/utils') diff --git a/ATRI/plugins/utils/__init__.py b/ATRI/plugins/utils/__init__.py index 5d1860a..ff28e59 100644 --- a/ATRI/plugins/utils/__init__.py +++ b/ATRI/plugins/utils/__init__.py @@ -17,26 +17,24 @@ roll一下 /roll 1d10+10d9+4d5+2d3 """ -roll = sv.on_command( - cmd="/roll", - docs=__doc__, - rule=is_in_service('roll') -) +roll = sv.on_command(cmd="/roll", docs=__doc__, rule=is_in_service("roll")) + @roll.handle() async def _roll(bot: Bot, event: MessageEvent, state: dict) -> None: args = str(event.message).strip() if args: - state['resu'] = args + state["resu"] = args + @roll.got("resu", prompt="roll 参数不能为空~!\ndemo:1d10 或 2d10+2d10") async def _(bot: Bot, event: MessageEvent, state: dict) -> None: - resu = state['resu'] - match = re.match(r'^([\dd+\s]+?)$', resu) - + resu = state["resu"] + match = re.match(r"^([\dd+\s]+?)$", resu) + if not match: await roll.finish("请输入正确的参数!!\ndemo:1d10 或 2d10+2d10") - + await roll.finish(roll_dice(resu)) @@ -52,22 +50,19 @@ __doc__ = """ /enc e アトリは高性能ですから! """ -encrypt = sv.on_command( - cmd="/enc", - docs=__doc__, - rule=is_in_service('enc') -) +encrypt = sv.on_command(cmd="/enc", docs=__doc__, rule=is_in_service("enc")) + @encrypt.handle() async def _encrypt(bot: Bot, event: MessageEvent) -> None: - msg = str(event.message).split(' ') + msg = str(event.message).split(" ") _type = msg[0] s = msg[1] e = Encrypt() - + if _type == "e": await encrypt.finish(e.encode(s)) elif _type == "d": await encrypt.finish(e.decode(s)) else: - await encrypt.finish('请检查输入~!') + await encrypt.finish("请检查输入~!") diff --git a/ATRI/plugins/utils/data_source.py b/ATRI/plugins/utils/data_source.py index 18c0492..4ef46a3 100644 --- a/ATRI/plugins/utils/data_source.py +++ b/ATRI/plugins/utils/data_source.py @@ -6,41 +6,41 @@ from typing import Union def roll_dice(par: str) -> str: result = 0 - proc = '' + proc = "" proc_list = [] p = par.split("+") - + for i in p: args = re.findall(r"(\d{0,10})(?:(d)(\d{1,10}))", i) args = list(args[0]) - + args[0] = args[0] or 1 if int(args[0]) >= 5000 or int(args[2]) >= 5000: return "阿...好大......" - + for a in range(1, int(args[0]) + 1): rd = random.randint(1, int(args[2])) result = result + rd - + if len(proc_list) <= 10: proc_list.append(rd) - + if len(proc_list) <= 10: proc += "+".join(map(str, proc_list)) elif len(proc_list) > 10: proc += "太长了不展示了就酱w" else: proc += str(result) - + result = f"{par}=({proc})={result}" return result -class Encrypt(): - cr = 'ĀāĂ㥹ÀÁÂÃÄÅ' - cc = 'ŢţŤťŦŧṪṫṬṭṮṯṰṱ' - cn = 'ŔŕŘřṘṙŖŗȐȑȒȓṚṛṜṝṞṟɌɍⱤɽᵲᶉɼɾᵳʀRr' - cb = 'ĨĩĪīĬĭĮįİı' +class Encrypt: + cr = "ĀāĂ㥹ÀÁÂÃÄÅ" + cc = "ŢţŤťŦŧṪṫṬṭṮṯṰṱ" + cn = "ŔŕŘřṘṙŖŗȐȑȒȓṚṛṜṝṞṟɌɍⱤɽᵲᶉɼɾᵳʀRr" + cb = "ĨĩĪīĬĭĮįİı" sr = len(cr) sc = len(cc) @@ -55,7 +55,7 @@ class Encrypt(): def _encodeByte(self, i) -> Union[str, None]: if i > 0xFF: - raise ValueError('ERROR! at/ri overflow') + raise ValueError("ERROR! at/ri overflow") if i > 0x7F: i = i & 0x7F @@ -65,7 +65,7 @@ class Encrypt(): def _encodeShort(self, i) -> str: if i > 0xFFFF: - raise ValueError('ERROR! atri overflow') + raise ValueError("ERROR! atri overflow") reverse = False if i > 0x7FFF: @@ -75,17 +75,15 @@ class Encrypt(): char = [ self._div(i, self.scnb), self._div(i % self.scnb, self.snb), - self._div(i % self.snb, self.sb), i % self.sb - ] - char = [ - self.cr[char[0]], self.cc[char[1]], self.cn[char[2]], - self.cb[char[3]] + self._div(i % self.snb, self.sb), + i % self.sb, ] + char = [self.cr[char[0]], self.cc[char[1]], self.cn[char[2]], self.cb[char[3]]] if reverse: return char[2] + char[3] + char[0] + char[1] - return ''.join(char) + return "".join(char) def _decodeByte(self, c) -> int: nb = False @@ -93,12 +91,11 @@ class Encrypt(): if idx[0] < 0 or idx[1] < 0: idx = [self.cn.index(c[0]), self.cb.index(c[1])] nb = True - raise ValueError('ERROR! at/ri overflow') + raise ValueError("ERROR! at/ri overflow") - result = idx[0] * self.sb + idx[1] \ - if nb else idx[0] * self.sc + idx[1] + result = idx[0] * self.sb + idx[1] if nb else idx[0] * self.sc + idx[1] if result > 0x7F: - raise ValueError('ERROR! at/ri overflow') + raise ValueError("ERROR! at/ri overflow") return result | 0x80 if nb else 0 @@ -109,23 +106,22 @@ class Encrypt(): self.cr.index(c[0]), self.cc.index(c[1]), self.cn.index(c[2]), - self.cb.index(c[3]) + self.cb.index(c[3]), ] else: idx = [ self.cr.index(c[2]), self.cc.index(c[3]), self.cn.index(c[0]), - self.cb.index(c[1]) + self.cb.index(c[1]), ] if idx[0] < 0 or idx[1] < 0 or idx[2] < 0 or idx[3] < 0: - raise ValueError('ERROR! not atri') + raise ValueError("ERROR! not atri") - result = idx[0] * self.scnb + idx[1] * self.snb + idx[ - 2] * self.sb + idx[3] + result = idx[0] * self.scnb + idx[1] * self.snb + idx[2] * self.sb + idx[3] if result > 0x7FFF: - raise ValueError('ERROR! atri overflow') + raise ValueError("ERROR! atri overflow") result |= 0x8000 if reverse else 0 return result @@ -138,37 +134,36 @@ class Encrypt(): if len(b) & 1 == 1: result.append(self._encodeByte(b[-1])) - return ''.join(result) + return "".join(result) - def encode(self, s: str, encoding: str = 'utf-8'): + def encode(self, s: str, encoding: str = "utf-8"): if not isinstance(s, str): - raise ValueError('Please enter str instead of other') + raise ValueError("Please enter str instead of other") return self._encodeBytes(s.encode(encoding)) def _decodeBytes(self, s: str): if not isinstance(s, str): - raise ValueError('Please enter str instead of other') + raise ValueError("Please enter str instead of other") if len(s) & 1: - raise ValueError('ERROR length') + raise ValueError("ERROR length") result = [] for i in range(0, (len(s) >> 2)): - result.append(bytes([self._decodeShort(s[i * 4:i * 4 + 4]) >> 8])) - result.append(bytes([ - self._decodeShort(s[i * 4:i * 4 + 4]) & 0xFF])) + result.append(bytes([self._decodeShort(s[i * 4 : i * 4 + 4]) >> 8])) + result.append(bytes([self._decodeShort(s[i * 4 : i * 4 + 4]) & 0xFF])) if (len(s) & 2) == 2: result.append(bytes([self._decodeByte(s[-2:])])) - return b''.join(result) + return b"".join(result) - def decode(self, s: str, encoding: str = 'utf-8') -> str: + def decode(self, s: str, encoding: str = "utf-8") -> str: if not isinstance(s, str): - raise ValueError('Please enter str instead of other') + raise ValueError("Please enter str instead of other") try: return self._decodeBytes(s).decode(encoding) except UnicodeDecodeError: - raise ValueError('Decoding failed') + raise ValueError("Decoding failed") -- cgit v1.2.3