Commit Graph

47 Commits

Author SHA1 Message Date
안명현 b9d509a9e8 fix(fishing): clear stale sessions for deleted threads 2026-04-09 13:48:33 +09:00
안명현 55fc7b46fc fix(fishing): avoid stale no-session response on session end 2026-04-09 13:12:24 +09:00
안명현 7022900eff fix(fishing): use editReply for deferred slash responses 2026-04-09 12:52:29 +09:00
안명현 233615e6d0 Merge branch 'main' into myong_dev 2026-04-09 12:46:45 +09:00
안명현 9f903f676f chore: remove BOM from fishing-related files 2026-04-09 12:39:07 +09:00
안명현 1432e0d090 fix(commands): re-sync global commands when definitions change 2026-04-09 12:25:04 +09:00
안명현 c80bcffb08 Implement fishing progression features 2026-04-09 12:02:54 +09:00
mineseo-kim dbadd936ca feat(logging): wire LOG_DIR through env and align systemd helper
- logger uses config/env for LOG_DIR and LOG_LEVEL (single source of truth)
- Document absolute LOG_DIR for wipe/redeploy (Jenkins) in env and .env.example
- setup-kord-user-log-file.sh reads LOG_DIR from KORD_HOME/.env and syncs
  StandardOutput/StandardError/ExecStartPre mkdir to the same path

Made-with: Cursor
2026-04-09 10:00:58 +09:00
mineseo-kim ca9413e665 fix(db): honor DATABASE_URL schema for pg Pool and PrismaPg
node-postgres ignores Prisma's ?schema= query param, so connections
defaulted to public. Parse the schema from the URL, set search_path on
the pool, and pass schema to PrismaPg (see prisma/prisma#28611).

Made-with: Cursor
2026-04-09 09:45:10 +09:00
mineseo-kim f317be9eab fix(logging): clarify LOG_DIR creation and bootstrap errors
- Wrap mkdir in ensureLogDir with stderr message on failure.

- Trim LOG_DIR; note in .env.example that the directory is created at startup.

Made-with: Cursor
2026-04-09 09:38:59 +09:00
mineseo-kim f2ffdb64a8 feat(logging): switch to log4js with file output and env-driven level
- Replace console logger with log4js dateFile under LOG_DIR (default logs).

- No console appender; daily rotation with 7-day retention (numBackups).

- Add LOG_LEVEL and LOG_DIR to env and .env.example; document in env.ts.

Made-with: Cursor
2026-04-09 09:34:15 +09:00
mineseo-kim f5f597d73d fix(i18n): restore ko locale and remove UTF-8 BOM
- Replace mojibake in ko.ts with proper Korean aligned to en.ts.

- Strip UTF-8 BOM from the 9 other text files (docs, commands, services, tests, en.ts).

Made-with: Cursor
2026-04-09 09:23:14 +09:00
mineseo-kim 586f516d4a Respect DOTENV_CONFIG_PATH for dotenv load path
Matches systemd Environment=DOTENV_CONFIG_PATH=/home/psa/.env so keys are not reported as 0 when only ~/.env exists.

Made-with: Cursor
2026-04-09 09:14:57 +09:00
mineseo-kim 1a4652c185 Fix slash command timeouts: defer before locale DB reads
- interactionCreate: deferReply(ephemeral) immediately for chat commands, then getInteractionLocale.

- All slash handlers use editReply; remove redundant deferReply in audit/fishing/music.

- localeHelper: parallelize user/guild Prisma lookups for getInteractionLocale and getContextLocale.

Note: deferred replies are ephemeral; public-only responses (e.g. music queue) are now user-visible only.
Made-with: Cursor
2026-04-09 09:09:32 +09:00
mineseo-kim a2e755b708 Remove Redis and replace with in-memory caches
- Drop ioredis, docker-compose redis service, and REDIS_* env vars.

- Remove src/cache; use Map-based invite and webhook caching in services.

- Run global command registration and voice boot sync without distributed locks.

- Update README, agent rules, and docs to match the new stack.

Made-with: Cursor
2026-04-09 08:50:53 +09:00
안명현 9876a331c1 Add fishing rarity rewards and result art 2026-04-01 17:19:23 +09:00
안명현 45d2b22978 Complete fishing minigame phase 1 2026-03-31 18:46:00 +09:00
이정수 ba253a8ad3 Merge branch 'feautre/minigame' 2026-03-31 10:16:01 +09:00
안명현 85f5057fd7 Implement YouTube music playback workflow 2026-03-31 02:12:27 +09:00
안명현 c459dfff02 Merge origin/main into myong_dev 2026-03-30 18:28:02 +09:00
이정수 49a2855f2b feat: externalize refinement and battle balance configurations to database with runtime caching 2026-03-30 18:00:46 +09:00
이정수 2762801fbd feat: implement daily battle limits, refine win rate logic, and update weapon sell pricing 2026-03-30 17:54:57 +09:00
이정수 cc26613377 feat: increase max refinement level to 25 and rebalance success rates and PvP rewards 2026-03-30 17:46:05 +09:00
이정수 793bba5a6a feat: refactor refinement cost logic and update success rates and combat reward formulas 2026-03-30 17:41:20 +09:00
안명현 6eb3826737 Implement event scheduling workflow 2026-03-30 17:37:32 +09:00
이정수 0c7a562b00 feat: update weapon refinement cost formula and add durability and destruction mechanics 2026-03-30 17:30:29 +09:00
이정수 f504024bd5 feat: implement minigame refinement system with weapon upgrading, battle mechanics, and fever activity tracking 2026-03-30 17:24:53 +09:00
이정수 4cc14d8153 refactor: flatten command structures by replacing subcommand groups with action-based string options 2026-03-30 10:27:11 +09:00
이정수 5e41bea74e feat: Add instance ID and implement Redis lock for global command registration to support multi-instance deployments. 2026-03-27 18:29:46 +09:00
이정수 031a8b3146 refactor: Consolidate voice-related commands into `voice.ts` and audit-related commands into `audit.ts`. 2026-03-27 17:54:55 +09:00
이정수 0ccbbf9d31 feat: Introduce and separate `BOOT` audit log category from `SYSTEM`, defaulting both to disabled. 2026-03-27 17:53:00 +09:00
이정수 90064491d6 refactor: Relocate `config` translation keys and types under the `commands` namespace. 2026-03-27 17:24:03 +09:00
이정수 4246eb90a5 feat: Implement `/config` command for managing bot features, refactor Big Emoji into a dedicated service, and update guild configuration schema with new defaults. 2026-03-27 17:16:15 +09:00
이정수 b81bc6b146 feat: Add an audit log category selection step to the setup wizard, shifting subsequent steps and updating related logic and translations. 2026-03-27 16:56:37 +09:00
이정수 bdd91f6737 feat: Implement a multi-step setup wizard with i18n support and dedicated interaction handlers. 2026-03-27 15:57:50 +09:00
이정수 9f891112d9 feat: Introduce guild-specific configuration for temporary voice channels with a new command, updated service logic, and corresponding database schema changes. 2026-03-27 15:41:27 +09:00
이정수 234a0e96fe feat: Implement an audit log system with a new `AuditChannel` model, `/audit-channel` command, and `AuditLogService` to log various application events. 2026-03-27 15:30:03 +09:00
이정수 b785a276f8 feat: Implement a permission audit system including a new service, command, i18n strings, and documentation. 2026-03-27 15:14:05 +09:00
이정수 220dd81440 feat: Implement dynamic bot presence with i18n, guild count display, and rotation. 2026-03-27 14:58:41 +09:00
이정수 cb80d9dffe fix: Enhance temporary voice channel management with improved Discord API error handling for ghost channels and detailed logging. 2026-03-27 14:39:38 +09:00
이정수 b93255a2be feat: Implement internationalization (i18n) with locale support, localized error messages, and a new language command. 2026-03-27 14:24:59 +09:00
이정수 6851fe2333 feat: implement a structured error handling system with custom error types and a dedicated reporter. 2026-03-27 14:03:12 +09:00
이정수 2eedde7611 feat: Implement voice channel synchronization on startup to prevent ghost channels and refine empty channel detection by excluding bots. 2026-03-27 13:30:58 +09:00
이정수 b5b6405d0c feat: Refactor voice channel controls to a select menu, enhance `voice-setup` with subcommands, and improve voice channel creation with permission error handling. 2026-03-27 13:23:34 +09:00
이정수 efe6a10762 feat: Implement temporary voice channel ownership transfer with UI, automatic transfer logic, and permission management. 2026-03-27 13:02:16 +09:00
이정수 f5c8bdb85b feat: Implement dynamic voice channels with new database models, service logic, interaction handling, and supporting documentation. 2026-03-27 10:38:46 +09:00
이정수 da47c4b140 feat: Initialize Discord bot project with core client, event handlers, services, database, caching, and infrastructure. 2026-03-27 09:40:50 +09:00