From bfc7b87e2f1092fd03f615add37cbf64ef1e8b31 Mon Sep 17 00:00:00 2001 From: Georgios Atheridis Date: Wed, 6 Apr 2022 20:03:03 +0300 Subject: [PATCH] bot can't post mod command --- skgyorugo/README.md | 1 + skgyorugo/auto_messages/latege.py | 2 +- skgyorugo/commands/spam.py | 5 +++-- skgyorugo/database_manager.py | 2 +- skgyorugo/tools/smart_privmsg.py | 21 ++++++++++++++++++--- skgyorugo/variable_manager/parser.py | 27 +++++++++++++++++++++------ 6 files changed, 45 insertions(+), 13 deletions(-) diff --git a/skgyorugo/README.md b/skgyorugo/README.md index cf5045a..4996df4 100644 --- a/skgyorugo/README.md +++ b/skgyorugo/README.md @@ -20,6 +20,7 @@ - [ ] replied variable {reply.nick} {reply.message} {reply.message.0} - [ ] sub sellout bot - [ ] schedule +- [ ] which LoL account are you playing on? (maybe add rank) ## Basic Commands - [x] int diff --git a/skgyorugo/auto_messages/latege.py b/skgyorugo/auto_messages/latege.py index b56a29d..ee6d53e 100644 --- a/skgyorugo/auto_messages/latege.py +++ b/skgyorugo/auto_messages/latege.py @@ -23,7 +23,7 @@ def main(bot: Bot, message: Message): elif latege_amount > 0: msg = f"{message.channel} is Latege by {latege_amount} seconds again Madge" elif latege_amount == 0: - msg = f"Amazing!!! {message.channel} is EXACTLY on time today ihaspeHappy" + msg = f"Amazing!!! {message.channel} is EXACTLY on time today POGGERS" else: msg = f"UNBELIEVABLE!!!!! {message.channel} is EARLY by {-latege_amount} seconds!!!!\ This has NEVER happened before POGGERS" diff --git a/skgyorugo/commands/spam.py b/skgyorugo/commands/spam.py index 7bbc5c7..6830140 100644 --- a/skgyorugo/commands/spam.py +++ b/skgyorugo/commands/spam.py @@ -1,4 +1,5 @@ from aptbot.bot import Message, Commands, Bot +import tools.smart_privmsg PERMISSION = 99 PREFIX = '?' @@ -6,7 +7,7 @@ DESCRIPTION = "" USER_COOLDOWN = 30 GLOBAL_COOLDOWN = 15 -MAX_LENGTH = 469 +MAX_LENGTH = 450 def main(bot: Bot, message: Message): @@ -14,4 +15,4 @@ def main(bot: Bot, message: Message): new_msg = "" while len(new_msg) + len(msg) < MAX_LENGTH: new_msg += msg + " " - bot.send_privmsg(message.channel, new_msg) + tools.smart_privmsg.send_safe(bot, message.channel, new_msg) diff --git a/skgyorugo/database_manager.py b/skgyorugo/database_manager.py index c291775..ff3a719 100644 --- a/skgyorugo/database_manager.py +++ b/skgyorugo/database_manager.py @@ -32,7 +32,7 @@ def create_variables_db(): CREATE TABLE methods ( name TEXT NOT NULL, type TEXT NOT NULL, - input TEXT NOT NULL, + input TEXT, PRIMARY KEY (name, type) ) """ diff --git a/skgyorugo/tools/smart_privmsg.py b/skgyorugo/tools/smart_privmsg.py index e625c12..1ddcc97 100644 --- a/skgyorugo/tools/smart_privmsg.py +++ b/skgyorugo/tools/smart_privmsg.py @@ -1,6 +1,7 @@ from aptbot.bot import Bot, Message, Commands +from typing import Union -MAX_LENGTH = 469 +MAX_LENGTH = 480 def _split_message(message: str) -> list[str]: @@ -16,7 +17,18 @@ def _split_message(message: str) -> list[str]: return word_list -def send(bot: Bot, message_data: Message, message: str, to_remove: int = 1): +def send_safe(bot: Bot, channel: str, messages: Union[str, list]): + if isinstance(messages, list): + for i in range(len(messages)): + if messages[i].startswith('/') or messages[i].startswith('!'): + messages[i] = messages[i][1:] + else: + if messages.startswith('/') or messages.startswith('!'): + messages = messages[1:] + bot.send_privmsg(channel, messages) + + +def send(bot: Bot, message_data: Message, message: str, to_remove: int = 1, safe_send: bool = True): # for msg in _split_message(' '.join(message_data.value.split(' ')[1:])): # message = message.replace("{message}", msg) # message = message.replace("{nick}", message_data.nick) @@ -27,4 +39,7 @@ def send(bot: Bot, message_data: Message, message: str, to_remove: int = 1): message = message.replace("{channel}", message_data.channel) messages = _split_message(message) - bot.send_privmsg(message_data.channel, messages) + if safe_send: + send_safe(bot, message_data.channel, messages) + else: + bot.send_privmsg(message_data.channel, messages) diff --git a/skgyorugo/variable_manager/parser.py b/skgyorugo/variable_manager/parser.py index 26bacc7..9bf3044 100644 --- a/skgyorugo/variable_manager/parser.py +++ b/skgyorugo/variable_manager/parser.py @@ -7,7 +7,7 @@ PATH = os.path.join(PATH, "..") class Expression: - def __init__(self, name: str, list_id: str, method: str, value: str): + def __init__(self, name: str, list_id: int, method: str, value: str): self.name = name self.list_id = list_id self.method = method @@ -24,26 +24,41 @@ class Expression: SELECT * FROM - variables - """ + list_values + INNER JOIN methods USING(type) + WHERE + list_values.name = ? + AND list_values.id = ? + AND methods.name = ? + """, + ( + self.name, + self.list_id, + self.method + ) ) + conn.close() pass def __repr__(self) -> str: + print(type(self.list_id)) return f"Expression('{self.name}', '{self.list_id}', '{self.method}', '{self.value}')" def parse(text: str): value = text - reg_parse = re.compile(r"^\$(\w+)\[?(\d+)?\]?\.(\w+)\((.+)?\)$") + reg_parse = re.compile(r"\$(\w+)\[?(\d+)?\]?\.(\w+)\((.+)?\)") expressions: list[Expression] = [] - while True: + try: name, list_id, method, value = reg_parse.findall(value)[0] + list_id = int(list_id) except IndexError: break + except ValueError: + list_id = None expressions.append(Expression(name, list_id, method, value)) print(expressions) if 2: @@ -55,4 +70,4 @@ if __name__ == "__main__": # parse(r"$fib[12].set($fib[11].add($fib[10].value()))") # parse(r"$quotes[2].set(Hello, world)") # parse(r"") - parse(r"$cannon.set(23)") + parse(r"wqe$quotes[].set($quotes[1].value(dw) + fw)") -- 2.30.2