2024-06-10 03:14:52 +01:00
|
|
|
import os
|
|
|
|
import logging
|
|
|
|
import discord
|
2024-06-10 16:56:12 +01:00
|
|
|
import sys
|
2024-06-10 03:14:52 +01:00
|
|
|
from discord.ext import commands
|
|
|
|
from tortoise import Tortoise
|
2024-06-10 16:56:12 +01:00
|
|
|
from config import get_config
|
|
|
|
sys.path.extend([".", ".."])
|
2024-06-10 03:14:52 +01:00
|
|
|
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
logging.basicConfig(level=logging.INFO)
|
|
|
|
|
|
|
|
|
|
|
|
class SentientJimmy(commands.Bot):
|
|
|
|
def __init__(self):
|
|
|
|
intents = discord.Intents.default()
|
|
|
|
# noinspection PyUnresolvedReferences
|
|
|
|
intents.message_content = True
|
|
|
|
super().__init__(
|
|
|
|
commands.when_mentioned_or("."),
|
|
|
|
intents=intents,
|
|
|
|
case_insensitive=True,
|
|
|
|
strip_after_prefix=True,
|
|
|
|
debug_guilds=get_config()["bot"].get("debug_guilds"),
|
|
|
|
)
|
2024-06-10 16:56:12 +01:00
|
|
|
self.load_extension("cogs.chat")
|
2024-06-10 03:14:52 +01:00
|
|
|
self.load_extension("jishaku")
|
|
|
|
|
|
|
|
async def start(self, token: str, *, reconnect: bool = True) -> None:
|
|
|
|
is_docker = os.path.exists("/.dockerenv")
|
|
|
|
default_db = "sqlite://:memory:" if is_docker else "sqlite://default.db"
|
|
|
|
await Tortoise.init(
|
|
|
|
db_url=get_config()["bot"].get("db_url", default_db),
|
|
|
|
modules={"models": ["jimmy.db"]}
|
|
|
|
)
|
|
|
|
await Tortoise.generate_schemas()
|
|
|
|
await super().start(token, reconnect=reconnect)
|
|
|
|
|
|
|
|
async def close(self) -> None:
|
|
|
|
await Tortoise.close_connections()
|
|
|
|
await super().close()
|
|
|
|
|
|
|
|
def run(self) -> None:
|
|
|
|
token = get_config()["bot"]["token"]
|
|
|
|
super().run(token)
|
|
|
|
|
|
|
|
|
|
|
|
bot = SentientJimmy()
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
bot.run()
|