#!/usr/bin/env python # bot.py import os import logging import importlib import simplematrixbotlib as botlib from dotenv import load_dotenv import time # Load environment variables from .env file load_dotenv() # Bot configuration settings MATRIX_URL = os.getenv("MATRIX_URL") MATRIX_USER = os.getenv("MATRIX_USER") MATRIX_PASS = os.getenv("MATRIX_PASS") ADMIN_USER = "@hashborgir:mozilla.org" PREFIX = '!' creds = botlib.Creds(MATRIX_URL, MATRIX_USER, MATRIX_PASS) bot = botlib.Bot(creds) # Setup logging logging.basicConfig(format='%(asctime)s - %(levelname)s - %(message)s', level=logging.INFO) # Load plugins PLUGINS_DIR = "plugins" PLUGINS = {} def load_plugins(): for plugin_file in os.listdir(PLUGINS_DIR): if plugin_file.endswith(".py"): plugin_name = os.path.splitext(plugin_file)[0] try: module = importlib.import_module(f"{PLUGINS_DIR}.{plugin_name}") PLUGINS[plugin_name] = module logging.info(f"Loaded plugin: {plugin_name}") except Exception as e: logging.error(f"Error loading plugin {plugin_name}: {e}") def reload_plugins(): global PLUGINS PLUGINS = {} load_plugins() load_plugins() @bot.listener.on_message_event async def handle_commands(room, message): match = botlib.MessageMatch(room, message, bot, PREFIX) if match.is_not_from_this_bot() and match.prefix() and match.command("reload"): if str(message.sender) == ADMIN_USER: reload_plugins() await bot.api.send_text_message(room.room_id, "Plugins reloaded successfully") else: await bot.api.send_text_message(room.room_id, "You are not authorized to reload plugins.") for plugin_name, plugin_module in PLUGINS.items(): await plugin_module.handle_command(room, message, bot, PREFIX) bot.run()