didier/startup/didier.py

59 lines
1.7 KiB
Python

from data.snipe import Snipe
from discord.ext import commands, ipc
from dislash import InteractionClient
import os
from settings import HOST_IPC
from startup.init_files import check_all
from typing import Dict
class Didier(commands.Bot):
"""
Main Bot class for Didier
"""
# Reference to interactions client
interactions: InteractionClient
# Dict to store the most recent Snipe info per channel
snipe: Dict[int, Snipe] = {}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._host_ipc = HOST_IPC
# IPC Server
# TODO secret key
self.ipc = ipc.Server(self, secret_key="SOME_SECRET_KEY") if self._host_ipc else None
# Cogs that should be loaded before the others
self._preload = ("ipc", "utils", "failedchecks", "events",)
# Remove default help command
self.remove_command("help")
# Create interactions client
self.interactions = InteractionClient(self, test_guilds=[728361030404538488, 880175869841277008])
# Load all extensions
self.init_extensions()
# Check missing files
check_all()
def init_extensions(self):
# Load initial extensions
for ext in self._preload:
self.load_extension(f"cogs.{ext}")
# Load all remaining cogs
for file in os.listdir("./cogs"):
if file.endswith(".py") and not (file.startswith(self._preload)):
self.load_extension("cogs.{}".format(file[:-3]))
async def on_ipc_ready(self):
print("IPC server is ready.")
async def on_ipc_error(self, endpoint, error):
print(endpoint, "raised", error)