import os import discord from discord.ext import commands, tasks from services.profile_manager import set_value from services.time_service import update_time from services.discord_sync import sync from dotenv import load_dotenv load_dotenv() TOKEN = os.getenv("TOKEN") intents = discord.Intents.default() bot = commands.Bot( command_prefix="!", intents=intents ) @bot.event async def on_ready(): print( "Bot online", bot.user, flush=True ) if not clock.is_running(): clock.start() @tasks.loop(minutes=1) async def clock(): update_time() try: result = sync() if result: print( "AUTO SYNC:", result.status_code, flush=True ) else: print( "AUTO SYNC: no response", flush=True ) except Exception as e: print( "SYNC ERROR", e, flush=True ) @bot.slash_command( name="ping", description="Проверка бота" ) async def ping(ctx): await ctx.respond( "Pong!" ) @bot.slash_command( name="refresh", description="Принудительное обновление" ) async def refresh(ctx): update_time() result = sync() if result: await ctx.respond( f"✅ Widget updated\nHTTP {result.status_code}" ) else: await ctx.respond( "❌ Sync failed" ) @bot.slash_command( name="sub2", description="Изменить второй текст" ) async def sub2( ctx, text: str ): set_value( "sub2", text ) sync() await ctx.respond( "✅ sub2 обновлён" ) @bot.slash_command( name="sub3", description="Изменить третий текст" ) async def sub3( ctx, text: str ): set_value( "sub3", text ) sync() await ctx.respond( "✅ sub3 обновлён" ) @bot.slash_command( name="subi2", description="Иконка второго слота" ) async def subi2( ctx, url: str ): set_value( "subi2", url ) sync() await ctx.respond( "🖼️ subi2 обновлена" ) @bot.slash_command( name="subi3", description="Иконка третьего слота" ) async def subi3( ctx, url: str ): set_value( "subi3", url ) sync() await ctx.respond( "🖼️ subi3 обновлена" ) bot.run(TOKEN)