added logging
authorGeorgios Atheridis <atheridis@tutamail.com>
Tue, 3 May 2022 11:32:12 +0000 (11:32 +0000)
committerGeorgios Atheridis <atheridis@tutamail.com>
Tue, 3 May 2022 11:32:12 +0000 (11:32 +0000)
skgyorugo/analyze_auto_message.py
skgyorugo/analyze_command.py
skgyorugo/auto_messages/hello1.py [new file with mode: 0644]
skgyorugo/auto_messages/hello2.py
skgyorugo/auto_messages/hello3.py
skgyorugo/auto_messages/latege.py
skgyorugo/auto_messages/youtube.py
skgyorugo/database_manager.py
skgyorugo/main.py
skgyorugo/tools/smart_start_stream_time.py

index 88a781ed3ba68edaa72a57933bc29298f97b2a73..3edcbec7d443d7916cdcaafe3a4fd4e6e83b2a00 100644 (file)
@@ -4,12 +4,16 @@ import sqlite3
 import time
 import tools.smart_privmsg
 import tools.smart_start_stream_time
+import logging
 from importlib import reload
 
 reload(tools.smart_privmsg)
 reload(tools.smart_start_stream_time)
 
+logger = logging.getLogger(__name__)
+
 PATH = os.path.dirname(os.path.realpath(__file__))
+logger.debug(f"analyze_auto_message PATH set to: {PATH}")
 
 
 def do_auto_message(bot: Bot, message: Message, auto_message_modules: dict):
index 472a29c4227122537f23c6fab33c2bcedfc56a9b..44a70cf6ce9bb6593c739a3628767711071a2d64 100644 (file)
@@ -3,14 +3,20 @@ import random
 import sqlite3
 import tools.permissions
 import tools.smart_privmsg
+import logging
 from aptbot.bot import Bot, Message, Commands
 
+logger = logging.getLogger(__name__)
+
 PATH = os.path.dirname(os.path.realpath(__file__))
+logger.debug(f"PATH set to: {PATH}")
 
 
 def do_command(bot: Bot, message: Message, command_modules: dict):
-    conn = sqlite3.connect(os.path.join(PATH, "database.db"))
+    db_name_database = "database.db"
+    conn = sqlite3.connect(os.path.join(PATH, db_name_database))
     c = conn.cursor()
+    logger.info(f"connected to database {db_name_database}")
 
     try:
         replied_message = message.tags["reply-parent-msg-body"]
diff --git a/skgyorugo/auto_messages/hello1.py b/skgyorugo/auto_messages/hello1.py
new file mode 100644 (file)
index 0000000..939eb8e
--- /dev/null
@@ -0,0 +1,10 @@
+from aptbot.bot import Message, Commands, Bot
+
+COOLDOWN = 7 * 60
+END_TIME = 0.5 * 60 * 60
+
+
+def main(bot: Bot, message: Message):
+    msg = "peepoWave"
+    bot.send_privmsg(message.channel, msg)
+
index abbdcf026640ba9638411e7e5ad0498dc5448c7f..e884a39abac268d9a48070cfd22fead2fcecf5a0 100644 (file)
@@ -1,7 +1,7 @@
 from aptbot.bot import Message, Commands, Bot
 
-COOLDOWN = 21 * 60
-END_TIME = 2 * 60 * 60
+COOLDOWN = 20 * 60
+END_TIME = 1 * 60 * 60
 
 
 def main(bot: Bot, message: Message):
index 683d7b073bd45564055fa7051326fe90d1124b44..bbcee322c1785ab2451727ec28430c646b935e19 100644 (file)
@@ -5,5 +5,5 @@ END_TIME = 2 * 60 * 60
 
 
 def main(bot: Bot, message: Message):
-    msg = "I have taken over Screamlads! Careful, or you're next elmoFire"
+    msg = "I'm a cute lil' wolf UwU and you're all cute lil' chatters OwO"
     bot.send_privmsg(message.channel, msg)
index ee6d53e056981758afc56d2deb7885dfd54ccdab..fd6e6c945aacc556437a411464ee83d6206bfc04 100644 (file)
@@ -27,4 +27,4 @@ def main(bot: Bot, message: Message):
     else:
         msg = f"UNBELIEVABLE!!!!! {message.channel} is EARLY by {-latege_amount} seconds!!!!\
         This has NEVER happened before POGGERS"
-    bot.send_privmsg(message.channel, msg)
+    bot.send_privmsg(message.channel, "/announceblue " + msg)
index c8984904d89230c6964d9ec55a847fa7c2b5ff33..53ca3540505276307a70128bf61d05ad0e6c6540 100644 (file)
@@ -1,7 +1,7 @@
 from aptbot.bot import Message, Commands, Bot
 import yt_api.videos
 
-COOLDOWN = 20 * 60
+COOLDOWN = 25 * 60
 END_TIME = 0
 
 CHANNEL_ID = "UCQ7C3NUKY6TSkURdUdVoYFw"
@@ -11,7 +11,7 @@ def main(bot: Bot, message: Message):
     video = yt_api.videos.get_newest_video(CHANNEL_ID)
     if video:
         video_link = f"https://www.youtube.com/watch?v={video.video_id}"
-        msg = f"Watch Peks' latest video \" {video.video_name} \" here: {video_link}"
+        msg = f"Watch Peks' latest video \"{video.video_name}\" here: {video_link}"
     else:
         msg = f"Check out my youtube channel here -> https://www.youtube.com/channel/{CHANNEL_ID}"
     bot.send_privmsg(message.channel, msg)
index 09fdf6bca34480945fe7eadc54cabedbb2d04c11..ab0b4948c010c0f300359022daa1977db99310a5 100644 (file)
@@ -2,198 +2,186 @@ from aptbot.bot import Message, Commands
 import sqlite3
 import os
 import ttv_api.users
+import logging
+
+logger = logging.getLogger(__name__)
 
 PATH = os.path.dirname(os.path.realpath(__file__))
+logger.debug(f"PATH set to: {PATH}")
 
 STREAMER_PATH = os.path.abspath(os.path.join(__file__, ".."))
+logger.debug(f"STREAMER_PATH set to: {STREAMER_PATH}")
 streamer_login = os.path.split(STREAMER_PATH)[1]
+logger.debug(f"streamer_login set to: {streamer_login}")
 
 
 def create_variables_db():
-    conn = sqlite3.connect(os.path.join(PATH, "variables.db"))
+    db_name_var = "variables.db" 
+    conn = sqlite3.connect(os.path.join(PATH, db_name_var))
     c = conn.cursor()
+    logger.info(f"connected to database {db_name_var}")
 
-    try:
-        c.execute(
-            """
-            CREATE TABLE variables (
-                name TEXT NOT NULL,
-                type TEXT NOT NULL,
-                value TEXT NOT NULL,
-                PRIMARY KEY (name)
-            )
-            """
+    c.execute(
+        """
+        CREATE TABLE IF NOT EXISTS variables (
+            name TEXT NOT NULL,
+            type TEXT NOT NULL,
+            value TEXT NOT NULL,
+            PRIMARY KEY (name)
         )
-    except sqlite3.OperationalError as e:
-        print(e)
+        """
+    )
+    logger.info(f"created table variables")
 
-    try:
-        c.execute(
-            """
-            CREATE TABLE methods (
-                name TEXT NOT NULL,
-                type TEXT NOT NULL,
-                input TEXT,
-                PRIMARY KEY (name, type)
-            )
-            """
+    c.execute(
+        """
+        CREATE TABLE IF NOT EXISTS methods (
+            name TEXT NOT NULL,
+            type TEXT NOT NULL,
+            input TEXT,
+            PRIMARY KEY (name, type)
         )
-    except sqlite3.OperationalError as e:
-        print(e)
+        """
+    )
+    logger.info(f"created table methods")
 
-    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)
-            )
-            """
+    c.execute(
+        """
+        CREATE TABLE IF NOT EXISTS 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)
+        """
+    )
+    logger.info(f"created table list_values")
 
+    conn.commit()
     conn.close()
 
 
 def create_database():
-    conn = sqlite3.connect(os.path.join(PATH, "database.db"))
+    db_name_database = "database.db"
+    conn = sqlite3.connect(os.path.join(PATH, db_name_database))
     c = conn.cursor()
-    try:
-        c.execute(
-            """
-            CREATE TABLE commands (
-                command TEXT NOT NULL,
-                prefix TEXT NOT NULL,
-                permission INTEGER NOT NULL,
-                description TEXT,
-                user_cooldown INTEGER NOT NULL,
-                global_cooldown INTEGER NOT NULL,
-                last_used INTEGER NOT NULL,
-                PRIMARY KEY (command)
-            )
-            """
+    logger.info(f"connected to database {db_name_database}")
+
+    c.execute(
+        """
+        CREATE TABLE IF NOT EXISTS commands (
+            command TEXT NOT NULL,
+            prefix TEXT NOT NULL,
+            permission INTEGER NOT NULL,
+            description TEXT,
+            user_cooldown INTEGER NOT NULL,
+            global_cooldown INTEGER NOT NULL,
+            last_used INTEGER NOT NULL,
+            PRIMARY KEY (command)
         )
-    except sqlite3.OperationalError as e:
-        print(e)
+        """
+    )
+    logger.info(f"created table commands")
 
-    try:
-        c.execute(
-            """
-            CREATE TABLE users (
-                user_id text NOT NULL,
-                permission INTEGER NOT NULL,
-                PRIMARY KEY (user_id)
-            )
-            """
+    c.execute(
+        """
+        CREATE TABLE IF NOT EXISTS users (
+            user_id text NOT NULL,
+            permission INTEGER NOT NULL,
+            PRIMARY KEY (user_id)
         )
-    except sqlite3.OperationalError as e:
-        print(e)
+        """
+    )
+    logger.info(f"created table users")
 
     admin_id = ttv_api.users.get_users(user_logins=["skgyorugo"])
     aptbot_id = ttv_api.users.get_users(user_logins=["murphyai"])
     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)
+        c.execute("INSERT OR IGNORE INTO users VALUES (?, ?)",
+                  (admin_id[0].user_id, 0))
+        logger.info(f"inserted user {admin_id[0].user_id} with permission {0}")
     if aptbot_id:
-        try:
-            c.execute("INSERT INTO users VALUES (?, ?)",
-                      (aptbot_id[0].user_id, 0))
-        except sqlite3.IntegrityError as e:
-            print(e)
+        c.execute("INSERT OR IGNORE INTO users VALUES (?, ?)",
+                  (aptbot_id[0].user_id, 0))
+        logger.info(f"inserted user {aptbot_id[0].user_id} with permission {0}")
     if broadcaster_id:
-        try:
-            c.execute("INSERT INTO users VALUES (?, ?)",
-                      (broadcaster_id[0].user_id, 1))
-        except sqlite3.IntegrityError as e:
-            print(e)
+        c.execute("INSERT OR IGNORE INTO users VALUES (?, ?)",
+                  (broadcaster_id[0].user_id, 1))
+        logger.info(f"inserted user {broadcaster_id[0].user_id} with permission {1}")
 
-    try:
-        c.execute(
-            """
-            CREATE TABLE cooldowns (
-                user_id TEXT NOT NULL,
-                command TEXT NOT NULL,
-                user_cooldown INTEGER NOT NULL,
-                FOREIGN KEY(user_id) REFERENCES users(user_id)
-                FOREIGN KEY(command) REFERENCES commands(command)
-                PRIMARY KEY (user_id, command)
-            )
-            """
+    c.execute(
+        """
+        CREATE TABLE IF NOT EXISTS cooldowns (
+            user_id TEXT NOT NULL,
+            command TEXT NOT NULL,
+            user_cooldown INTEGER NOT NULL,
+            FOREIGN KEY(user_id) REFERENCES users(user_id)
+            FOREIGN KEY(command) REFERENCES commands(command)
+            PRIMARY KEY (user_id, command)
         )
-    except sqlite3.OperationalError as e:
-        print(e)
+        """
+    )
+    logger.info(f"created table cooldowns")
 
-    try:
-        c.execute(
-            """
-            CREATE TABLE command_values (
-                command TEXT NOT NULL,
-                value TEXT NOT NULL,
-                FOREIGN KEY(command) REFERENCES commands(command)
-            )
-            """
+    c.execute(
+        """
+        CREATE TABLE IF NOT EXISTS command_values (
+            command TEXT NOT NULL,
+            value TEXT NOT NULL,
+            FOREIGN KEY(command) REFERENCES commands(command)
         )
-    except sqlite3.OperationalError as e:
-        print(e)
+        """
+    )
+    logger.info(f"created table command_values")
 
-    try:
-        c.execute(
-            """
-            CREATE TABLE auto_messages (
-                name TEXT NOT NULL,
-                cooldown INTEGER NOT NULL,
-                end_time INTEGER NOT NULL,
-                last_used INTEGER NOT NULL,
-                PRIMARY KEY (name)
-            )
-            """
+    c.execute(
+        """
+        CREATE TABLE IF NOT EXISTS auto_messages (
+            name TEXT NOT NULL,
+            cooldown INTEGER NOT NULL,
+            end_time INTEGER NOT NULL,
+            last_used INTEGER NOT NULL,
+            PRIMARY KEY (name)
         )
-    except sqlite3.OperationalError as e:
-        print(e)
+        """
+    )
+    logger.info(f"created table auto_messages")
 
-    try:
-        c.execute(
-            """
-            CREATE TABLE auto_message_values (
-                name TEXT NOT NULL,
-                value TEXT NOT NULL,
-                FOREIGN KEY(name) REFERENCES auto_messages(name)
-            )
-            """
+    c.execute(
+        """
+        CREATE TABLE IF NOT EXISTS auto_message_values (
+            name TEXT NOT NULL,
+            value TEXT NOT NULL,
+            FOREIGN KEY(name) REFERENCES auto_messages(name)
         )
-    except sqlite3.OperationalError as e:
-        print(e)
+        """
+    )
+    logger.info(f"created table auto_message_values")
 
-    try:
-        c.execute(
-            """
-            CREATE TABLE stream_info (
-                start_stream_ts INTEGER NOT NULL,
-                last_checked INTEGER NOT NULL,
-                ended INTEGER NOT NULL,
-                PRIMARY KEY (start_stream_ts)
-            )
-            """
+    c.execute(
+        """
+        CREATE TABLE IF NOT EXISTS stream_info (
+            start_stream_ts INTEGER NOT NULL,
+            last_checked INTEGER NOT NULL,
+            ended INTEGER NOT NULL,
+            PRIMARY KEY (start_stream_ts)
         )
-    except sqlite3.OperationalError as e:
-        print(e)
+        """
+    )
+    logger.info(f"created table stream_info")
 
     conn.commit()
     conn.close()
 
 
 def update_commands_in_database(modules, commands):
-    conn = sqlite3.connect(os.path.join(PATH, "database.db"))
+    db_name_database = "database.db"
+    conn = sqlite3.connect(os.path.join(PATH, db_name_database))
     c = conn.cursor()
+    logger.info(f"connected to database {db_name_database}")
 
     for command in commands:
         command_name = command.split('.')[0]
@@ -215,6 +203,13 @@ def update_commands_in_database(modules, commands):
                 command_last_used,
             )
         )
+        logger.info(f"updating commands command_name: {command_name}")
+        logger.debug(f"updating commands command_prefix: {command_prefix}")
+        logger.debug(f"updating commands command_permission: {command_permission}")
+        logger.debug(f"updating commands command_description: {command_description}")
+        logger.debug(f"updating commands command_user_cooldown: {command_user_cooldown}")
+        logger.debug(f"updating commands command_global_cooldown: {command_global_cooldown}")
+        logger.debug(f"updating commands command_last_used: {command_last_used}")
     conn.commit()
     conn.close()
 
index 58994a69e3ccd0528107587ae7a82f2f913b5e58..833a3b758254e88d5e73248f7f03e966be6349b9 100644 (file)
@@ -26,18 +26,22 @@ reload(scripts.chatting)
 reload(database_manager)
 reload(analyze_auto_message)
 
-logging.basicConfig(
-    filename="/var/log/aptbot/logs.log",
-    level=logging.DEBUG,
-    format="[%(levelname)s] %(asctime)s: %(message)s"
-)
+logger = logging.getLogger(__name__)
+logger.setLevel(logging.DEBUG)
+
+formatter = logging.Formatter("[%(levelname)s] %(asctime)s: %(name)s; %(message)s")
+
+file_handler = logging.FileHandler('/var/log/aptbot/logs.log')
+file_handler.setFormatter(formatter)
+
+logger.addHandler(file_handler)
 
 PATH = os.path.dirname(os.path.realpath(__file__))
-logging.info(f"Defined PATH: {PATH}")
+logger.info(f"main PATH set to: {PATH}")
 COMMANDS_PATH = os.path.join(PATH, "commands")
-logging.info(f"Defined COMMANDS_PATH: {COMMANDS_PATH}")
+logger.info(f"main COMMANDS_PATH set to: {COMMANDS_PATH}")
 AUTO_MESSAGES_PATH = os.path.join(PATH, "auto_messages")
-logging.info(f"Defined AUTO_MESSAGES_PATH: {AUTO_MESSAGES_PATH}")
+logger.info(f"main AUTO_MESSAGES_PATH set to: {AUTO_MESSAGES_PATH}")
 
 commands_specs = {}
 commands_modules = {}
@@ -58,7 +62,7 @@ for command in commands:
             os.path.join(COMMANDS_PATH, command)
         )
     )
-logging.info(f"List of commands: {commands}")
+logger.info(f"List of commands: {commands}")
 
 auto_messages = [
     c for c in os.listdir(AUTO_MESSAGES_PATH) if os.path.isfile(os.path.join(AUTO_MESSAGES_PATH, c))
@@ -76,7 +80,7 @@ for auto_message in auto_messages:
             os.path.join(AUTO_MESSAGES_PATH, auto_message)
         )
     )
-logging.info(f"List of auto_messages: {auto_messages}")
+logger.info(f"List of auto_messages: {auto_messages}")
 
 for spec in commands_specs:
     commands_modules[spec] = importlib.util.module_from_spec(
@@ -86,8 +90,8 @@ for spec in commands_specs:
     try:
         commands_specs[spec].loader.exec_module(commands_modules[spec])
     except Exception as e:
-        logging.critical(traceback.format_exc())
-        logging.critical(f"Problem Loading Module: {e}")
+        logger.critical(traceback.format_exc())
+        logger.critical(f"Problem Loading Module: {e}")
 
 for spec in auto_message_specs:
     auto_message_modules[spec] = importlib.util.module_from_spec(
@@ -97,8 +101,8 @@ for spec in auto_message_specs:
     try:
         auto_message_specs[spec].loader.exec_module(auto_message_modules[spec])
     except Exception as e:
-        logging.critical(traceback.format_exc())
-        logging.critical(f"Problem Loading Module: {e}")
+        logger.critical(traceback.format_exc())
+        logger.critical(f"Problem Loading Module: {e}")
 
 
 database_manager.create_database()
index 97d1f34cce13ec712d7b07fd124e3ab5fe504f24..11f153c3eced4939bb6fb5beedc8c917f340f4a7 100644 (file)
@@ -4,11 +4,17 @@ import ttv_api.users
 import ttv_api.stream
 import ttv_api.channel
 import sqlite3
+import logging
 from typing import Optional
 
+logger = logging.getLogger(__name__)
+
 STREAMER_PATH = os.path.abspath(os.path.join(__file__, "../.."))
+logger.debug(f"STREAMER_PATH set to: {STREAMER_PATH}")
 TOOLS_PATH = os.path.dirname(os.path.realpath(__file__))
+logger.debug(f"TOOLS_PATH set to: {TOOLS_PATH}")
 PATH = os.path.join(TOOLS_PATH, "..")
+logger.debug(f"PATH set to: {PATH}")
 
 
 CHECK_STREAMTIME_CD = 5 * 60
@@ -17,6 +23,7 @@ MAX_OFF_STREAM_MARGIN = 60 * 60
 
 def start_stream_timestamp() -> Optional[int]:
     streamer_login = os.path.split(STREAMER_PATH)[1]
+    logger.debug(f"streamer_login set to: {streamer_login}")
 
     conn = sqlite3.connect(os.path.join(PATH, "database.db"))
     c = conn.cursor()
@@ -28,8 +35,7 @@ def start_stream_timestamp() -> Optional[int]:
             """
             SELECT
                 start_stream_ts,
-                last_checked,
-                ended
+                last_checked
             FROM
                 stream_info
             WHERE
@@ -42,18 +48,29 @@ def start_stream_timestamp() -> Optional[int]:
         )
 
     fetched = c.fetchone()
+
     if fetched:
-        start_stream_ts, last_checked, _ = fetched
+        start_stream_ts, last_checked = fetched
+        logger.debug(f"start_stream_ts set to: {start_stream_ts}")
+        logger.debug(f"last_checked set to: {last_checked}")
         if time.time() < last_checked + CHECK_STREAMTIME_CD:
+            logger.info(f"returned cached start stream time: {start_stream_ts}")
+            conn.close()
             return start_stream_ts
 
     stream_info = ttv_api.stream.get_streams(user_logins=[streamer_login])
+    logger.info(f"used twitch api to get stream info")
     if not stream_info and not fetched:
+        logger.info(f"streamer {streamer_login} is currently not streaming")
+        conn.close()
         return
 
     if not stream_info:
-        start_stream_ts, last_checked, _ = fetched
+        start_stream_ts, last_checked = fetched
+        logger.debug(f"start_stream_ts set to: {start_stream_ts}")
+        logger.debug(f"last_checked set to: {last_checked}")
         if time.time() < last_checked + MAX_OFF_STREAM_MARGIN:
+            logger.info(f"streamer {streamer_login} is currently not streaming, stream not considered ended yet")
             conn.close()
             return
 
@@ -66,32 +83,39 @@ def start_stream_timestamp() -> Optional[int]:
             )
         )
         conn.commit()
+        logger.info(f"streamer {streamer_login} has ended stream")
         conn.close()
         return
 
     if not fetched:
         start_stream_ts = int(stream_info[0].started_at.timestamp())
+        current_time = int(time.time())
         c.execute(
             "REPLACE INTO stream_info VALUES (?, ?, ?)",
             (
                 start_stream_ts,
-                int(time.time()),
+                current_time,
                 0,
             )
         )
         conn.commit()
+        logger.info(f"inserted database with start stream {start_stream_ts}, last updated {current_time}")
         conn.close()
+        logger.info(f"returned api start stream time: {start_stream_ts}")
         return start_stream_ts
 
-    start_stream_ts, last_checked, _ = fetched
+    start_stream_ts, last_checked = fetched
+    current_time = int(time.time())
     c.execute(
         "REPLACE INTO stream_info VALUES (?, ?, ?)",
         (
             start_stream_ts,
-            int(time.time()),
+            current_time,
             0,
         )
     )
     conn.commit()
+    logger.info(f"updated database with cached start stream {start_stream_ts}, last updated {current_time}")
     conn.close()
+    logger.info(f"returned cached start stream time: {start_stream_ts}")
     return start_stream_ts