import os import tomllib from typing import Self import discord from pydantic import BaseModel class PostTarget(BaseModel): server: str channel: str thread: str def get(self, client: discord.Client) -> discord.Thread: """ Zielkanal für Posts finden """ guilds = [guild for guild in client.guilds if guild.name == self.server] assert len(guilds) == 1 channels = [ channel for channel in guilds[0].channels if isinstance(channel, discord.TextChannel | discord.ForumChannel) and channel.name == self.channel ] assert len(channels) == 1 threads = [ thread for thread in channels[0].threads if thread.name == self.thread ] assert len(threads) == 1 return threads[0] class Post(BaseModel): target: PostTarget users: list[int] class Config(BaseModel): discord_token: str post: Post @classmethod def get(cls) -> Self: cfg_path = os.getenv( key="CONFIG_PATH", default="/usr/local/etc/lenaverse-bot/lenaverse-bot.toml", ) with open(cfg_path, "rb") as cfg_file: return cls.model_validate(tomllib.load(cfg_file)) CONFIG = Config.get()