55import logging
66import os
77import sys
8+ from pathlib import Path
9+ from typing import TYPE_CHECKING
810
911from discord_guild_configurator .bot import GuildConfigurationBot , run_bot
10- from discord_guild_configurator .configs .ep2025_config import SERVER_CONFIG
12+ from discord_guild_configurator .configurator import GuildConfigurator
13+ from discord_guild_configurator .models import GuildConfig
14+
15+ if TYPE_CHECKING :
16+ import discord
1117
1218DESCRIPTION = """\
1319 Configure a Discord guild.
@@ -68,6 +74,12 @@ def main() -> None:
6874 formatter_class = argparse .RawTextHelpFormatter ,
6975 )
7076 parser .add_argument ("--guild-id" , type = int , required = True , help = "ID of the guild to configure" )
77+ parser .add_argument (
78+ "--config-file" ,
79+ type = Path ,
80+ required = True ,
81+ help = "Path to the guild configuration file (JSON)" ,
82+ )
7183 parser .add_argument ("--verbose" , action = "store_true" , help = "Enable INFO logging" )
7284 parser .add_argument ("--debug" , action = "store_true" , help = "Enable DEBUG logging" )
7385 args = parser .parse_args ()
@@ -78,7 +90,13 @@ def main() -> None:
7890
7991 configure_logging (debug = args .debug , verbose = args .verbose )
8092
81- bot = GuildConfigurationBot (args .guild_id , SERVER_CONFIG )
93+ guild_config = GuildConfig .model_validate_json (args .config_file .read_text (encoding = "UTF-8" ))
94+
95+ async def configure_guild (guild : discord .Guild ) -> None :
96+ configurator = GuildConfigurator (guild )
97+ await configurator .apply_configuration (guild_config )
98+
99+ bot = GuildConfigurationBot (args .guild_id , configure_guild )
82100 asyncio .run (run_bot (bot , bot_token ))
83101
84102
0 commit comments