Initial commit — DRB server stack
Includes c2-core (FastAPI/MQTT/Firestore), discord-bot (slash commands), frontend (Next.js admin UI), and mosquitto config.
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
import asyncio
|
||||
import discord
|
||||
from discord.ext import commands
|
||||
from app.config import settings
|
||||
from app.internal.logger import logger
|
||||
|
||||
|
||||
class DRBBot(commands.Bot):
|
||||
def __init__(self):
|
||||
intents = discord.Intents.default()
|
||||
super().__init__(command_prefix="!", intents=intents)
|
||||
|
||||
async def setup_hook(self):
|
||||
await self.load_extension("app.commands.radio")
|
||||
|
||||
if settings.dev_guild_id:
|
||||
guild = discord.Object(id=settings.dev_guild_id)
|
||||
self.tree.copy_global_to(guild=guild)
|
||||
await self.tree.sync(guild=guild)
|
||||
logger.info(f"Slash commands synced to dev guild {settings.dev_guild_id}.")
|
||||
else:
|
||||
await self.tree.sync()
|
||||
logger.info("Slash commands synced globally.")
|
||||
|
||||
async def on_ready(self):
|
||||
logger.info(f"Bot ready: {self.user} ({self.user.id})")
|
||||
await self.change_presence(
|
||||
activity=discord.Activity(
|
||||
type=discord.ActivityType.listening,
|
||||
name="the radio"
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
bot = DRBBot()
|
||||
|
||||
if __name__ == "__main__":
|
||||
bot.run(settings.discord_token)
|
||||
Reference in New Issue
Block a user