diff --git a/src/scheduler/__init__.py b/src/scheduler/__init__.py index 8453d7f..0c48895 100644 --- a/src/scheduler/__init__.py +++ b/src/scheduler/__init__.py @@ -1,78 +1,29 @@ -# __init__.py formaly scheduler.py - import os -import asyncio -import random import yaml -import datetime -from ai import get_ai_response +import asyncio +from . import simple, probabilistic, inactivity def load_settings(): - base_dir = os.path.dirname(os.path.dirname(__file__)) # go up one level from /scheduler/ + base_dir = os.path.dirname(os.path.dirname(__file__)) # go up from /scheduler/ settings_path = os.path.join(base_dir, "settings.yml") with open(settings_path, "r", encoding="utf-8") as f: return yaml.safe_load(f) -last_post_time = None -post_chance = None - async def start_scheduler(bot): settings = load_settings() - scheduler_settings = settings["scheduler"] + scheduler_settings = settings.get("scheduler", {}) if not scheduler_settings.get("enabled", False): print("🛑 Scheduler disabled in config.") return + mode = scheduler_settings.get("mode", "simple").lower() - interval = scheduler_settings["interval_minutes"] - channel_id = scheduler_settings["channel_id"] - channel = bot.get_channel(channel_id) - mode = scheduler_settings.get("mode", "simple") - use_ai = scheduler_settings.get("use_ai", True) - - - global last_post_time, post_chance - last_post_time = datetime.datetime.utcnow() - post_chance = settings.get("probabilistic", {}).get("start_chance", 0.05) - - await bot.wait_until_ready() - print(f"🕒 Delta Scheduler started in {mode.upper()} mode.") - - while not bot.is_closed(): - now = datetime.datetime.utcnow() - - should_post = False - - if mode == "simple": - should_post = True - - elif mode == "probabilistic": - if random.random() < post_chance: - should_post = True - else: - post_chance += settings["probabilistic"]["increase_per_interval"] - - elif mode == "inactivity": - if channel.last_message: - last_msg_time = channel.last_message.created_at.replace(tzinfo=None) - idle_time = (now - last_msg_time).total_seconds() / 60 - if idle_time >= settings["inactivity"]["threshold_minutes"]: - should_post = True - - if should_post: - last_post_time = now - post_chance -= settings.get("probabilistic", {}).get("decay_on_post", 0.02) - post_chance = max(post_chance, 0.01) - - # Generate or choose message - if use_ai: - prompt = "Post a short chaotic or motivational message in the voice of Delta, the RGB catgirl." - message = get_ai_response(prompt) - else: - message = random.choice(scheduler_settings.get("messages", ["Hello from Delta."])) - - await channel.send(message) - print(f"📤 Scheduled message sent to #{channel.name}: {message}") - - await asyncio.sleep(interval * 60) + if mode == "simple": + await simple.run(bot, scheduler_settings, settings) + elif mode == "probabilistic": + await probabilistic.run(bot, scheduler_settings, settings) + elif mode == "inactivity": + await inactivity.run(bot, scheduler_settings, settings) + else: + print(f"❓ Unknown scheduler mode: {mode}") diff --git a/src/scheduler/__pycache__/__init__.cpython-310.pyc b/src/scheduler/__pycache__/__init__.cpython-310.pyc index 6922a8c..f3eee1f 100644 Binary files a/src/scheduler/__pycache__/__init__.cpython-310.pyc and b/src/scheduler/__pycache__/__init__.cpython-310.pyc differ diff --git a/src/scheduler/__pycache__/inactivity.cpython-310.pyc b/src/scheduler/__pycache__/inactivity.cpython-310.pyc new file mode 100644 index 0000000..4e8fc5b Binary files /dev/null and b/src/scheduler/__pycache__/inactivity.cpython-310.pyc differ diff --git a/src/scheduler/__pycache__/probabilistic.cpython-310.pyc b/src/scheduler/__pycache__/probabilistic.cpython-310.pyc new file mode 100644 index 0000000..8ea524a Binary files /dev/null and b/src/scheduler/__pycache__/probabilistic.cpython-310.pyc differ diff --git a/src/scheduler/__pycache__/simple.cpython-310.pyc b/src/scheduler/__pycache__/simple.cpython-310.pyc new file mode 100644 index 0000000..c6715db Binary files /dev/null and b/src/scheduler/__pycache__/simple.cpython-310.pyc differ diff --git a/src/scheduler/simple.py b/src/scheduler/simple.py index e69de29..2d03e22 100644 --- a/src/scheduler/simple.py +++ b/src/scheduler/simple.py @@ -0,0 +1,34 @@ +import asyncio +import random +import datetime +from ai import get_ai_response + +last_post_time = None + +async def run(bot, scheduler_settings, full_settings): + global last_post_time + last_post_time = datetime.datetime.utcnow() + + interval = scheduler_settings["interval_minutes"] + channel_id = scheduler_settings["channel_id"] + channel = bot.get_channel(channel_id) + use_ai = scheduler_settings.get("use_ai", True) + + await bot.wait_until_ready() + print("📆 Simple scheduler active.") + + while not bot.is_closed(): + now = datetime.datetime.utcnow() + last_post_time = now + + # Generate or choose message + if use_ai: + prompt = "Post a short chaotic or motivational message in the voice of Delta, the RGB catgirl." + message = get_ai_response(prompt) + else: + message = random.choice(scheduler_settings.get("messages", ["Hello from Delta."])) + + await channel.send(message) + print(f"📤 [Simple] Sent to #{channel.name}: {message}") + + await asyncio.sleep(interval * 60)