Files
TentacleBot/AGENTS.md
Garret Patti 048005f0a8
All checks were successful
Build and Publish Docker Image / build-and-push (push) Successful in 37s
move secrets to env variables add palworld commands
2026-07-10 19:26:26 -04:00

1.9 KiB

TentacleBot - Agent Instructions

Quick Commands

dotnet restore && dotnet run          # Run the bot locally
docker compose up --build -d          # Run with Docker
docker compose logs -f                # View Docker logs

Setup

  1. Set DISCORD_BOT_TOKEN env var — secrets must not be stored in appsettings.json
  2. Copy .env.example to .env for Docker: cp .env.example .env
  3. appsettings.json is gitignored — never commit it

Architecture

  • Program.cs — Entry point, DI setup, registers command modules from the assembly
  • Services/BotService.cs — Core bot lifecycle (login, ready handler, interaction routing)
  • Commands/GeneralCommands.cs — Slash commands (/general ping, /general hello, /botinfo)

Add new commands by creating a class in Commands/ that extends InteractionModuleBase<SocketInteractionContext>. Commands are auto-discovered via AddModulesAsync(typeof(Program).Assembly).

Secrets

All secrets (API keys, passwords, tokens) must be read from environment variables — never from appsettings.json. Use Environment.GetEnvironmentVariable() directly in service constructors.

Secret Env Var
Discord bot token DISCORD_BOT_TOKEN
LLM API key LLM_API_KEY
Palworld server password PALWORLD_PASSWORD

Non-secret configuration (URLs, model names, numeric settings) may stay in appsettings.json via IConfiguration.

Gotchas

  • Two DiscordSocketClient instances are created in Program.cs — one for the bot client and one passed into InteractionService. They are separate instances sharing the same config.
  • Token priority: DISCORD_BOT_TOKEN env var is checked first, then appsettings.jsonDiscord:BotToken.

No tests, no lint config

This project has no test framework, no linting, and no CI. dotnet build is the only verification step.