From 04044650d0f2d7782fa1a33839003e5576bb5bfe Mon Sep 17 00:00:00 2001 From: tkrmagid-desktop Date: Sun, 26 Apr 2026 20:23:17 +0900 Subject: [PATCH] =?UTF-8?q?redis=20onoff=EB=A7=8C=EB=93=A4=EC=96=B4?= =?UTF-8?q?=EC=84=9C=20=EC=93=B8=EB=95=8C=EB=A7=8C=20.env=EC=97=90=20on?= =?UTF-8?q?=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot/src/classes/GuildPlayer.ts | 8 ++++---- bot/src/classes/RedisClient.ts | 7 ++++++- bot/src/events/clientReady.ts | 8 +++++--- bot/src/events/guildCreate.ts | 8 +++++--- bot/src/events/guildDelete.ts | 8 +++++--- bot/src/index.ts | 2 +- bot/src/utils/Config.ts | 2 ++ 7 files changed, 28 insertions(+), 15 deletions(-) diff --git a/bot/src/classes/GuildPlayer.ts b/bot/src/classes/GuildPlayer.ts index 4b92c5b..1bd7067 100644 --- a/bot/src/classes/GuildPlayer.ts +++ b/bot/src/classes/GuildPlayer.ts @@ -32,7 +32,7 @@ export class GuildPlayer { ) { this.player.setGlobalVolume(50); this.player.on("start", (_data: TrackStartEvent) => { - Redis.publishState("player_update", { + Redis?.publishState("player_update", { guildId: this.guild.id, }); }); @@ -189,7 +189,7 @@ export class GuildPlayer { if (!this.isPlaying) return; if (!this.nowTrack) return; this.player.seekTo(num); - Redis.publishState("player_update", { guildId: this.guild.id }); + Redis?.publishState("player_update", { guildId: this.guild.id }); } private async autoPlay() { @@ -244,8 +244,8 @@ export class GuildPlayer { } public async setMsg(update: { player: boolean; queue: boolean; } = { player: true, queue: true }) { - if (update.player) Redis.publishState("player_update", { guildId: this.guild.id }); - if (update.queue) Redis.publishState("queue_update", { guildId: this.guild.id }); + if (update.player) Redis?.publishState("player_update", { guildId: this.guild.id }); + if (update.queue) Redis?.publishState("queue_update", { guildId: this.guild.id }); const { channel, msg, check } = await checkTextChannelAndMsg(this.guild, this.textChannel, this.msg); if (!check) return; this.textChannel = channel; diff --git a/bot/src/classes/RedisClient.ts b/bot/src/classes/RedisClient.ts index cc5b421..b290a61 100644 --- a/bot/src/classes/RedisClient.ts +++ b/bot/src/classes/RedisClient.ts @@ -23,7 +23,12 @@ type SubAction = "queue_set" | "queue_remove"; -export class RedisClient { +export const RedisClient = () => { + if (Config.redis.state) return new RedisClientClass(); + return null; +} + +class RedisClientClass { public pub: Redis = new Redis({ host: Config.redis.host, port: Config.redis.port }); public sub: Redis = new Redis({ host: Config.redis.host, port: Config.redis.port }); diff --git a/bot/src/events/clientReady.ts b/bot/src/events/clientReady.ts index 56e9d58..ddf1b69 100644 --- a/bot/src/events/clientReady.ts +++ b/bot/src/events/clientReady.ts @@ -14,9 +14,11 @@ export const clientReady = async () => { reloadMsg(); - const guildIds = client.guilds.cache.map(guild => guild.id); - Redis.pub.set("bot-guilds", JSON.stringify(guildIds)); - Logger.info(`[Redis Pub] bot-guilds 설정 완료: [${guildIds.join(",")}]`); + if (Redis) { + const guildIds = client.guilds.cache.map(guild => guild.id); + Redis.pub.set("bot-guilds", JSON.stringify(guildIds)); + Logger.info(`[Redis Pub] bot-guilds 설정 완료: [${guildIds.join(",")}]`); + } if (!Config.dev) return; try { diff --git a/bot/src/events/guildCreate.ts b/bot/src/events/guildCreate.ts index deafc5e..aca1769 100644 --- a/bot/src/events/guildCreate.ts +++ b/bot/src/events/guildCreate.ts @@ -2,7 +2,9 @@ import { client, Redis } from "../index"; import { Logger } from "../utils/Logger"; export const guildCreate = async () => { - const guildIds = client.guilds.cache.map(guild => guild.id); - Redis.pub.set("bot-guilds", JSON.stringify(guildIds)); - Logger.info(`[Redis Pub] bot-guilds 수정 완료: [${guildIds.join(",")}]`); + if (Redis) { + const guildIds = client.guilds.cache.map(guild => guild.id); + Redis.pub.set("bot-guilds", JSON.stringify(guildIds)); + Logger.info(`[Redis Pub] bot-guilds 수정 완료: [${guildIds.join(",")}]`); + } } \ No newline at end of file diff --git a/bot/src/events/guildDelete.ts b/bot/src/events/guildDelete.ts index 9f0fe1c..9e85513 100644 --- a/bot/src/events/guildDelete.ts +++ b/bot/src/events/guildDelete.ts @@ -2,7 +2,9 @@ import { client, Redis } from "../index"; import { Logger } from "../utils/Logger"; export const guildDelete = async () => { - const guildIds = client.guilds.cache.map(guild => guild.id); - Redis.pub.set("bot-guilds", JSON.stringify(guildIds)); - Logger.info(`[Redis Pub] bot-guilds 수정 완료: [${guildIds.join(",")}]`); + if (Redis) { + const guildIds = client.guilds.cache.map(guild => guild.id); + Redis.pub.set("bot-guilds", JSON.stringify(guildIds)); + Logger.info(`[Redis Pub] bot-guilds 수정 완료: [${guildIds.join(",")}]`); + } } \ No newline at end of file diff --git a/bot/src/index.ts b/bot/src/index.ts index 0ec9f77..9ddb356 100644 --- a/bot/src/index.ts +++ b/bot/src/index.ts @@ -21,7 +21,7 @@ process.on('SIGTERM', () => { export const client = new BotClient(); export const lavalinkManager = new LavalinkManager(client); export const handler = new Handler(); -export const Redis = new RedisClient(); +export const Redis = RedisClient(); for (const eventName of Object.keys(onEvents) as (keyof typeof onEvents)[]) { client.onEvent(eventName, onEvents[eventName]); diff --git a/bot/src/utils/Config.ts b/bot/src/utils/Config.ts index f509e0b..c098904 100644 --- a/bot/src/utils/Config.ts +++ b/bot/src/utils/Config.ts @@ -70,6 +70,7 @@ export const Config = { }, _redis: { + state: process.env.REDIS?.trim()?.toLocaleLowerCase() === "true", host: process.env.REDIS_HOST?.trim(), port: process.env.REDIS_PORT?.trim(), }, @@ -79,6 +80,7 @@ export const Config = { const port = Number(this._redis.port!); if (isNaN(port)) throw new TypeError("REDIS_PORT must be a number"); return { + state: this._redis.state, host: this._redis.host, port: port, };