changed command change permissions to 10, beginning of variable database
authorGeorgios Atheridis <atheridis@tutamail.com>
Sun, 3 Apr 2022 16:24:23 +0000 (19:24 +0300)
committerGeorgios Atheridis <atheridis@tutamail.com>
Sun, 3 Apr 2022 16:24:23 +0000 (19:24 +0300)
skgyorugo/README.md
skgyorugo/commands/addcommand.py
skgyorugo/commands/editcommand.py
skgyorugo/commands/emotes.py
skgyorugo/commands/removecommand.py
skgyorugo/commands/spam.py
skgyorugo/database_manager.py
skgyorugo/main.py
skgyorugo/tools/smart_privmsg.py
skgyorugo/variable_manager/parser.py [new file with mode: 0644]

index b601724a15c801a5964583eaae8f6b72c28078dd..cf5045ac5488ab18291a8cbf70b615e3ec09a658 100644 (file)
@@ -2,7 +2,7 @@
 
 - [x] youtube api
 - [x] raid / host shoutout
-- [ ] latege (command and auto), could look through auto schedule
+- [x] latege (command and auto), could look through auto schedule
 - [ ] basic math polish notation
 - [x] translator
 - [ ] (?t a replied message / database in memory of messages)
 - [ ] streamer time
 - [ ] list maker (who's up for flex)
 - [ ] variable counter with cross-command functionality
+- [ ] random variable getter from db {random.quote}
 - [ ] specific word in message {message.0}, {message.1}, etc.
 - [ ] replied variable {reply.nick} {reply.message} {reply.message.0}
 - [ ] sub sellout bot
 - [ ] schedule
 
 ## Basic Commands
-- [ ] int
-- [ ] bald
+- [x] int
+- [x] bald
 - [ ] milk pasta
-- [ ] make spam always output max length
-- [ ] tea
-- [ ] coffee
+- [x] make spam always output max length
+- [x] tea
+- [x] coffee
 - [ ] smelly
 - [ ] coin
 - [ ] permissions
 - [ ] jam
-- [ ] screamlads
-- [ ] supporters
+- [x] screamlads
+- [x] supporters
index 9f91e444c4ad38ccc1fed73654ff4a9110515be0..bd6fc1d9679d465ade86a2c56db5301c31ee800d 100644 (file)
@@ -2,7 +2,7 @@ from aptbot.bot import Message, Commands, Bot
 import sqlite3
 import os
 
-PERMISSION = 1
+PERMISSION = 10
 PREFIX = '\\'
 DESCRIPTION = ""
 USER_COOLDOWN = 0
index ec35331e9121a4d546f271219499235a63a434f2..99973bdfe2ea31e51c47ee05b45ea60a6264fd2b 100644 (file)
@@ -2,7 +2,7 @@ from aptbot.bot import Message, Commands, Bot
 import sqlite3
 import os
 
-PERMISSION = 1
+PERMISSION = 10
 PREFIX = '\\'
 DESCRIPTION = ""
 USER_COOLDOWN = 0
index ed4c7b68361af7decf51388fd8b7cd2782c4cb64..fe28f230ae0c629110b80ff3c7e061459ce2509f 100644 (file)
@@ -1,7 +1,6 @@
 from aptbot.bot import Message, Commands, Bot
 import tools.smart_privmsg
 import urllib3
-import os
 
 PERMISSION = 99
 PREFIX = '?'
@@ -9,27 +8,16 @@ DESCRIPTION = ""
 USER_COOLDOWN = 90
 GLOBAL_COOLDOWN = 60
 
-OAUTH = os.getenv("APTBOT_OAUTH")
-CLIENT_ID = os.getenv("APTBOT_CLIENT_ID")
-
-HEADER = {
-    "Authorization": f"Bearer {OAUTH}",
-    "Client-Id": f"{CLIENT_ID}",
-    "Content-Type": "application/json",
-}
-
 
 def main(bot: Bot, message: Message):
     http = urllib3.PoolManager()
     r1 = http.request(
         "GET",
         f"https://twitch.center/customapi/bttvemotes?channel={message.channel}",
-        headers=HEADER,
     )
     r2 = http.request(
         "GET",
         f"https://twitch.center/customapi/ffzemotes?channel={message.channel}",
-        headers=HEADER,
     )
 
     if r1.status != 200 or r2.status != 200:
index d41a26d0a035f96b9c71f3b4aa181c11d12dc93d..8e83b26bacb053b13dbe2c71fe70745576fe07f7 100644 (file)
@@ -2,7 +2,7 @@ from aptbot.bot import Message, Commands, Bot
 import sqlite3
 import os
 
-PERMISSION = 1
+PERMISSION = 10
 PREFIX = '\\'
 DESCRIPTION = ""
 USER_COOLDOWN = 0
index cdb558885bcbb868255a337f7a6e3ddf66ec85d8..c872036b3c8dec402fa20dba8513d8199d424c7f 100644 (file)
@@ -1,5 +1,4 @@
 from aptbot.bot import Message, Commands, Bot
-import tools.smart_privmsg
 
 PERMISSION = 99
 PREFIX = '?'
@@ -13,6 +12,6 @@ MAX_LENGTH = 469
 def main(bot: Bot, message: Message):
     msg = ' '.join(message.value.split(' ')[1:])
     new_msg = ""
-    while len(new_msg) + len(msg) > MAX_LENGTH:
+    while len(new_msg) + len(msg) < MAX_LENGTH:
         new_msg += msg + " "
-    bot.send_privmsg(message.channel, msg)
+    bot.send_privmsg(message.channel, new_msg)
index 41b72c70c94aa0c456b96588e7aa3be66994d0ac..c291775d3742510beb6aedd0a3151002a738714d 100644 (file)
@@ -4,6 +4,60 @@ import ttv_api.users
 
 PATH = os.path.dirname(os.path.realpath(__file__))
 
+STREAMER_PATH = os.path.abspath(os.path.join(__file__, ".."))
+streamer_login = os.path.split(STREAMER_PATH)[1]
+
+
+def create_variables_db():
+    conn = sqlite3.connect(os.path.join(PATH, "variables.db"))
+    c = conn.cursor()
+
+    try:
+        c.execute(
+            """
+            CREATE TABLE variables (
+                name TEXT NOT NULL,
+                type TEXT NOT NULL,
+                value TEXT NOT NULL,
+                PRIMARY KEY (name)
+            )
+            """
+        )
+    except sqlite3.OperationalError as e:
+        print(e)
+
+    try:
+        c.execute(
+            """
+            CREATE TABLE methods (
+                name TEXT NOT NULL,
+                type TEXT NOT NULL,
+                input TEXT NOT NULL,
+                PRIMARY KEY (name, type)
+            )
+            """
+        )
+    except sqlite3.OperationalError as e:
+        print(e)
+
+    try:
+        c.execute(
+            """
+            CREATE TABLE list_values (
+                id INTEGER NOT NULL,
+                name TEXT NOT NULL,
+                type TEXT NOT NULL,
+                value TEXT NOT NULL,
+                FOREIGN KEY(name) REFERENCES variables(name)
+                PRIMARY KEY (id, name)
+            )
+            """
+        )
+    except sqlite3.OperationalError as e:
+        print(e)
+
+    conn.close()
+
 
 def create_database():
     conn = sqlite3.connect(os.path.join(PATH, "database.db"))
@@ -23,8 +77,8 @@ def create_database():
             )
             """
         )
-    except sqlite3.OperationalError:
-        print("Table commands exists")
+    except sqlite3.OperationalError as e:
+        print(e)
 
     try:
         c.execute(
@@ -37,12 +91,22 @@ def create_database():
             """
         )
     except sqlite3.OperationalError as e:
-        print(f"Table users exists: {e}")
-    else:
-        admin_id = ttv_api.users.get_users(user_logins=["skgyorugo"])
-        if admin_id:
+        print(e)
+
+    admin_id = ttv_api.users.get_users(user_logins=["skgyorugo"])
+    broadcaster_id = ttv_api.users.get_users(user_logins=[streamer_login])
+    if admin_id:
+        try:
             c.execute("INSERT INTO users VALUES (?, ?)",
                       (admin_id[0].user_id, 0))
+        except sqlite3.IntegrityError as e:
+            print(e)
+    if broadcaster_id:
+        try:
+            c.execute("INSERT INTO users VALUES (?, ?)",
+                      (broadcaster_id[0].user_id, 1))
+        except sqlite3.IntegrityError as e:
+            print(e)
 
     try:
         c.execute(
@@ -57,8 +121,8 @@ def create_database():
             )
             """
         )
-    except sqlite3.OperationalError:
-        print("Table cooldowns exists")
+    except sqlite3.OperationalError as e:
+        print(e)
 
     try:
         c.execute(
@@ -70,8 +134,8 @@ def create_database():
             )
             """
         )
-    except sqlite3.OperationalError:
-        print("Table cooldowns exists")
+    except sqlite3.OperationalError as e:
+        print(e)
 
     try:
         c.execute(
@@ -85,8 +149,8 @@ def create_database():
             )
             """
         )
-    except sqlite3.OperationalError:
-        print("Table commands exists")
+    except sqlite3.OperationalError as e:
+        print(e)
 
     try:
         c.execute(
@@ -98,8 +162,8 @@ def create_database():
             )
             """
         )
-    except sqlite3.OperationalError:
-        print("Table cooldowns exists")
+    except sqlite3.OperationalError as e:
+        print(e)
 
     try:
         c.execute(
@@ -113,7 +177,7 @@ def create_database():
             """
         )
     except sqlite3.OperationalError as e:
-        print(f"Table users exists: {e}")
+        print(e)
 
     conn.commit()
     conn.close()
index 0817a1e4a64020fbf249e7d5b2ab36dbc8bfc1db..12cc36c0bca9f9d86f8d8754dc678e5376262446 100644 (file)
@@ -89,6 +89,7 @@ for spec in auto_message_specs:
 
 
 database_manager.create_database()
+database_manager.create_variables_db()
 database_manager.update_commands_in_database(commands_modules, commands)
 database_manager.update_auto_messages_in_database(
     auto_message_modules, auto_messages)
index 2e25282a3f63e94b4217f25d1d98abe27c0c01cc..e625c12013c36234285156ecfdb87478dd5bde8b 100644 (file)
@@ -16,10 +16,15 @@ def _split_message(message: str) -> list[str]:
     return word_list
 
 
-def send(bot: Bot, message_data: Message, message: str):
-    for msg in _split_message(' '.join(message_data.value.split(' ')[1:])):
-        message = message.replace("{message}", msg)
-        message = message.replace("{nick}", message_data.nick)
-        message = message.replace("{channel}", message_data.channel)
+def send(bot: Bot, message_data: Message, message: str, to_remove: int = 1):
+    # for msg in _split_message(' '.join(message_data.value.split(' ')[1:])):
+    #     message = message.replace("{message}", msg)
+    #     message = message.replace("{nick}", message_data.nick)
+    #     message = message.replace("{channel}", message_data.channel)
+    msg = ' '.join(message_data.value.split(' ')[to_remove:])
+    message = message.replace("{message}", msg)
+    message = message.replace("{nick}", message_data.nick)
+    message = message.replace("{channel}", message_data.channel)
+
     messages = _split_message(message)
     bot.send_privmsg(message_data.channel, messages)
diff --git a/skgyorugo/variable_manager/parser.py b/skgyorugo/variable_manager/parser.py
new file mode 100644 (file)
index 0000000..26bacc7
--- /dev/null
@@ -0,0 +1,58 @@
+import os
+import re
+import sqlite3
+
+PATH = os.path.dirname(os.path.realpath(__file__))
+PATH = os.path.join(PATH, "..")
+
+
+class Expression:
+    def __init__(self, name: str, list_id: str, method: str, value: str):
+        self.name = name
+        self.list_id = list_id
+        self.method = method
+        self.value = value
+
+    def eval(self):
+        conn = sqlite3.connect(os.path.join(PATH, "variables.db"))
+        c = conn.cursor()
+
+        if self.list_id:
+            # TODO
+            c.execute(
+                """
+                SELECT
+                    *
+                FROM
+                    variables
+                """
+            )
+        pass
+
+    def __repr__(self) -> str:
+        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+)\((.+)?\)$")
+
+    expressions: list[Expression] = []
+
+    while True:
+        try:
+            name, list_id, method, value = reg_parse.findall(value)[0]
+        except IndexError:
+            break
+        expressions.append(Expression(name, list_id, method, value))
+    print(expressions)
+    if 2:
+        return None
+    return ""
+
+
+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)")