From 1a39a39d84904f9c83dd7aaf300db2bf10595611 Mon Sep 17 00:00:00 2001 From: milo Date: Sat, 10 May 2025 00:26:28 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=9B=A0=EF=B8=8F=20Initial=20Docker=20supp?= =?UTF-8?q?ort=20added=20=E2=80=94=20build=20likely=20broken,=20expect=20f?= =?UTF-8?q?ixes=20in=20next=20patch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 4 ++++ Dockerfile | 22 ++++++++++++++++++++++ docker-compose.yml | 14 ++++++++++++++ src/.env | 2 -- src/bot.py | 4 ++++ src/scheduler/__init__.py | 8 ++++++-- 6 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 .env create mode 100644 Dockerfile create mode 100644 docker-compose.yml delete mode 100644 src/.env diff --git a/.env b/.env new file mode 100644 index 0000000..9261dbc --- /dev/null +++ b/.env @@ -0,0 +1,4 @@ +DISCORD_TOKEN=your_real_discord_token_here +OLLAMA_API=http://localhost:11434 +MODEL_NAME=llama3:latest +CHANNEL_ID=123456789012345678 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..93d1ddf --- /dev/null +++ b/Dockerfile @@ -0,0 +1,22 @@ +# Use Python base image +FROM python:3.11.9-slim + +# Set working directory inside container +WORKDIR /app + +# Copy requirements first (from host into /app inside container) +COPY src/requirements.txt . + +# Install dependencies +RUN pip install --no-cache-dir -r requirements.txt + +# Copy all app source code +COPY src/ ./src +COPY settings.yml . +COPY .env . + +# Set environment variable so your app can find your src/ module +ENV PYTHONPATH=/app/src + +# Run the bot +CMD ["python", "src/bot.py"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..dd9b9eb --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,14 @@ +version: "3.9" + +services: + discord-bot: + build: . + container_name: mirage-bot + environment: + - DISCORD_TOKEN=${DISCORD_TOKEN} + - CHANNEL_ID=${CHANNEL_ID} + - OLLAMA_API=${OLLAMA_API} + - MODEL_NAME=${MODEL_NAME} + volumes: + - ./settings.yml:/app/settings.yml:ro + restart: unless-stopped \ No newline at end of file diff --git a/src/.env b/src/.env deleted file mode 100644 index ceff269..0000000 --- a/src/.env +++ /dev/null @@ -1,2 +0,0 @@ -DISCORD_TOKEN=MTM2OTc3NDY4OTYzNDg4MTU4Ng.G9Nrgz.akHoOO9SrXCDwiOCI3BUXfdR4bpSNb9zrVx9UI -OLLAMA_API_URL=http://192.168.1.100:11434/api/generate diff --git a/src/bot.py b/src/bot.py index db49a46..5bc583a 100644 --- a/src/bot.py +++ b/src/bot.py @@ -5,6 +5,10 @@ import discord import yaml from discord.ext import commands from dotenv import load_dotenv + +dotenv_path = os.path.join(os.path.dirname(__file__), '..', '.env') +load_dotenv(dotenv_path) + from ai import get_ai_response from personality import apply_personality, set_persona from discord.ext.commands import ( diff --git a/src/scheduler/__init__.py b/src/scheduler/__init__.py index 1070cc1..3705fbb 100644 --- a/src/scheduler/__init__.py +++ b/src/scheduler/__init__.py @@ -1,4 +1,4 @@ -# __init__.py formaly know as scheduler.py +# __init__.py formerly known as scheduler.py import os import yaml @@ -17,6 +17,11 @@ async def start_scheduler(bot): settings = load_settings() scheduler_settings = settings.get("scheduler", {}) + # Override channel_id with environment variable if set + channel_id_env = os.getenv("CHANNEL_ID") + if channel_id_env: + scheduler_settings["channel_id"] = int(channel_id_env) + if not scheduler_settings.get("enabled", False): print("🛑 Scheduler disabled in config.") return @@ -52,7 +57,6 @@ async def start_scheduler(bot): await asyncio.sleep(interval * 60) - elif mode == "inactivity": await inactivity.run(bot, scheduler_settings, settings)