Skip to content

haseo-ai/discord-command-tool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

5 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿพ Discord Multi-Bot Command Manager v2.0

์—ฌ๋Ÿฌ Discord ๋ด‡์˜ ๋ช…๋ น์–ด๋ฅผ ํ•œ ๊ณณ์—์„œ ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ, ๋ฐฑ์—…, ๋น„๊ตํ•˜๋Š” CLI ๋„๊ตฌ

๐ŸŒ Languages / ์–ธ์–ด

Language Code File
ํ•œ๊ตญ์–ด ko README.md
English en README.en.md
็ฎ€ไฝ“ไธญๆ–‡ zh README.zh.md
ๆ—ฅๆœฌ่ชž ja README.ja.md
Espaรฑol es README.es.md
เคนเคฟเคจเฅเคฆเฅ€ hi README.hi.md
ุงู„ุนุฑุจูŠุฉ ar README.ar.md
Franรงais fr README.fr.md
ะ ัƒััะบะธะน ru README.ru.md
Deutsch de README.de.md
Portuguรชs pt README.pt.md
Bahasa Indonesia id README.id.md
Tรผrkรงe tr README.tr.md
Tiแบฟng Viแป‡t vi README.vi.md
Italiano it README.it.md
Nederlands nl README.nl.md
Polski pl README.pl.md
เน„เธ—เธข th README.th.md
เฆฌเฆพเฆ‚เฆฒเฆพ bn README.bn.md
ุงุฑุฏูˆ ur README.ur.md
Kreyรฒl Ayisyen ht README.ht.md

๐ŸŽฏ ์กด์žฌ ๋ชฉ์ 

Discord ๋ด‡์„ ์—ฌ๋Ÿฌ ๊ฐœ ์šด์˜ํ•˜๋‹ค ๋ณด๋ฉด ๋‹ค์Œ ๋ฌธ์ œ๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค:

  • ๋ด‡์ด ๋งŽ์œผ๋ฉด ๋ช…๋ น์–ด ๊ด€๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด์ง โ€” ๊ฐ ๋ด‡๋งˆ๋‹ค Discord Developer Portal์— ๋กœ๊ทธ์ธํ•ด์„œ ํ™•์ธํ•ด์•ผ ํ•จ
  • "์œ ๋ น ๋ช…๋ น์–ด" ๋ฌธ์ œ โ€” ์ฝ”๋“œ์—์„œ ์‚ญ์ œํ•œ ๋ช…๋ น์–ด๊ฐ€ Discord์— ๋“ฑ๋ก๋œ ์ฑ„ ๋‚จ์•„์žˆ์Œ
  • ๋ด‡ ๊ฐ„ ๋ช…๋ น์–ด ์ค‘๋ณต/๋ˆ„๋ฝ โ€” ์–ด๋–ค ๋ด‡์— ์–ด๋–ค ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋Š”์ง€ ํ•œ๋ˆˆ์— ๋น„๊ตํ•  ์ˆ˜ ์—†์Œ
  • ์‹ค์ˆ˜๋กœ ๋ช…๋ น์–ด ์‚ญ์ œ โ€” ๋ณต๊ตฌ ๋ฐฉ๋ฒ•์ด ์—†์Œ

์ด ๋„๊ตฌ๋Š” ํ„ฐ๋ฏธ๋„ ํ•˜๋‚˜์—์„œ ๋ชจ๋“  ๋ด‡์˜ ๋ช…๋ น์–ด๋ฅผ ๊ด€๋ฆฌํ•˜๋„๋ก ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค.


๐Ÿ‘ฅ ๋Œ€์ƒ ์‚ฌ์šฉ์ž

๋Œ€์ƒ ์˜ˆ์‹œ
Discord ๋ด‡ ๊ฐœ๋ฐœ์ž 2๊ฐœ ์ด์ƒ์˜ ๋ด‡์„ ์šด์˜ํ•˜๋Š” ๋ถ„
๋ด‡ ๊ด€๋ฆฌ์ž ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ํŒ€์›์ด ๋ช…๋ น์–ด๋ฅผ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ถ„
DevOps CI/CD์—์„œ ๋ช…๋ น์–ด ๋ฐฐํฌ๋ฅผ ์ž๋™ํ™”ํ•˜๊ณ  ์‹ถ์€ ๋ถ„
์˜คํ”ˆ์†Œ์Šค ๊ด€๋ฆฌ์ž ์ปจํŠธ๋ฆฌ๋ทฐํ„ฐ๊ฐ€ ์ถ”๊ฐ€ํ•œ ๋ช…๋ น์–ด๋ฅผ ๊ฒ€์ˆ˜ํ•ด์•ผ ํ•˜๋Š” ๋ถ„

๐Ÿ“‹ ์š”๊ตฌ ์‚ฌ์–‘

ํ•ญ๋ชฉ ์ตœ์†Œ ๋ฒ„์ „
Node.js v18.0.0 ์ด์ƒ (ESM ์ง€์›)
OS Windows, macOS, Linux
์™ธ๋ถ€ ํŒจํ‚ค์ง€ ์—†์Œ (์ˆœ์ˆ˜ Node.js ๋‚ด์žฅ ๋ชจ๋“ˆ๋งŒ ์‚ฌ์šฉ)

๐Ÿ“ ์„ค์น˜ ๊ตฌ์กฐ

discord-command-tool/
โ”œโ”€โ”€ discord-command-tool.mjs    # ๋ฉ”์ธ ์‹คํ–‰ ํŒŒ์ผ
โ”œโ”€โ”€ .gitignore                  # data/ ํด๋” Git ์ œ์™ธ
โ”œโ”€โ”€ README.md                   # ์ด ํŒŒ์ผ
โ””โ”€โ”€ data/                       # โš ๏ธ Git์— ์˜ฌ๋ฆฌ์ง€ ๋งˆ์„ธ์š”
    โ”œโ”€โ”€ bots.json               # ๋ด‡ ๋ชฉ๋ก (ํ† ํฐ ์•”ํ˜ธํ™” ์ €์žฅ)
    โ”œโ”€โ”€ keys/
    โ”‚   โ””โ”€โ”€ master.key          # AES-256-GCM ์•”ํ˜ธํ™” ๋งˆ์Šคํ„ฐ ํ‚ค
    โ”œโ”€โ”€ backups/                # ๋ช…๋ น์–ด ๋ฐฑ์—… JSON
    โ”‚   โ””โ”€โ”€ 2026-04-07T.../
    โ”‚       โ”œโ”€โ”€ bot1.json
    โ”‚       โ””โ”€โ”€ bot2.json
    โ””โ”€โ”€ history/                # ๋ณ€๊ฒฝ ์ด๋ ฅ
        โ””โ”€โ”€ 2026-04-07/
            โ”œโ”€โ”€ bot1_delete-global_....json
            โ””โ”€โ”€ bot2_edit_....json

๋ณด์•ˆ ๊ตฌ์กฐ

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ Bot Token                    โ”‚
โ”‚           โ”‚                                  โ”‚
โ”‚           โ–ผ                                  โ”‚
โ”‚  AES-256-GCM ์•”ํ˜ธํ™” (master.key ์‚ฌ์šฉ)         โ”‚
โ”‚           โ”‚                                  โ”‚
โ”‚           โ–ผ                                  โ”‚
โ”‚  data/bots.json์— ์•”ํ˜ธ๋ฌธ ์ €์žฅ                 โ”‚
โ”‚                                             โ”‚
โ”‚  โš ๏ธ master.key ์œ ์ถœ = ๋ชจ๋“  ํ† ํฐ ๋ณตํ˜ธํ™” ๊ฐ€๋Šฅ    โ”‚
โ”‚  โš ๏ธ data/ ์ „์ฒด๊ฐ€ .gitignore์— ํฌํ•จ๋จ          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ“ฆ ์„ค์น˜ ๋ฐฉ๋ฒ•

1. ์‰ฌ์šด ์„ค์น˜ (๋น ๋ฅธ ์‹œ์ž‘)

# 1. ์ €์žฅ์†Œ ๋ณต์ œ
git clone https://github.com/your-repo/discord-command-tool.git
cd discord-command-tool

# 2. ๋ฐ”๋กœ ์‹คํ–‰!
node discord-command-tool.mjs --help

๋์ž…๋‹ˆ๋‹ค. npm install ์—†์Šต๋‹ˆ๋‹ค.

2. ๊ณ ๊ธ‰ ์„ค์น˜

A. ์ „์—ญ ๋ช…๋ น์–ด๋กœ ๋“ฑ๋ก (์–ด๋””์„œ๋“  ์‹คํ–‰)

# ๋ฐฉ๋ฒ• 1: npm link
cd discord-command-tool
npm link
dct --help                    # "dct"๋กœ ์–ด๋””์„œ๋“  ์‹คํ–‰

# ๋ฐฉ๋ฒ• 2: npm install -g (package.json ํ•„์š” ์‹œ)
npm init -y
npm install -g .
dct --help

B. ์ „์—ญ ์„ค์น˜์šฉ package.json ์ถ”๊ฐ€

cd discord-command-tool

package.json ์ƒ์„ฑ:

{
  "name": "discord-command-tool",
  "version": "2.0.0",
  "description": "Discord Multi-Bot Command Manager",
  "bin": {
    "dct": "./discord-command-tool.mjs"
  },
  "engines": {
    "node": ">=18.0.0"
  }
}
npm install -g .
dct --help

C. shell alias

# ~/.bashrc ๋˜๋Š” ~/.zshrc ์— ์ถ”๊ฐ€
alias dct='node /path/to/discord-command-tool/discord-command-tool.mjs'

source ~/.bashrc
dct --help

๐Ÿš€ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

1. ์‰ฌ์šด ์‚ฌ์šฉ๋ฒ• (5๋ถ„ ์™„๋ฃŒ)

Step 1: ์•”ํ˜ธํ™” ํ‚ค ์ƒ์„ฑ (์ตœ์ดˆ 1ํšŒ)

node discord-command-tool.mjs keygen

๊ฒฐ๊ณผ:

โœ… ์•”ํ˜ธํ™” ํ‚ค ์ƒ์„ฑ๋จ (data/keys/master.key)
๐Ÿ”’ .gitignore ์ƒ์„ฑ๋จ (node_modules/, data/)

Step 2: ๋ด‡ ์ถ”๊ฐ€

# Discord Developer Portal โ†’ Bot โ†’ Copy Token
node discord-command-tool.mjs add MTk2...XjYz.NTc5...abc

๊ฒฐ๊ณผ:

โœ… "My Awesome Bot" ์ถ”๊ฐ€๋จ | ID: 123456789012345678

์—ฌ๋Ÿฌ ๋ด‡์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์œ„ ๋ช…๋ น์–ด๋ฅผ ๋ฐ˜๋ณตํ•˜์„ธ์š”.

Step 3: ์ •๋ณด ํ™•์ธ

node discord-command-tool.mjs info

๊ฒฐ๊ณผ:

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
๐Ÿค– My Awesome Bot

๐Ÿ‘ค ๋ด‡ ์ •๋ณด
  ์‚ฌ์šฉ์ž๋ช…: My Awesome Bot#0000
  ๋ด‡ ID: 123456789012345678
  ์•ฑ ID / ํด๋ผ์ด์–ธํŠธ ID: 123456789012345678
  ์•„๋ฐ”ํƒ€: null

๐Ÿ“‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
  ์ด๋ฆ„: My Awesome Bot
  ์„ค๋ช…: An awesome discord bot

๐Ÿ  ์„œ๋ฒ„ (3๊ฐœ)
  ๐Ÿ“Œ My Server | ์„œ๋ฒ„/๊ธธ๋“œID: 987654321098765432
  ๐Ÿ“Œ Test Server | ์„œ๋ฒ„/๊ธธ๋“œID: 111222333444555666
  ๐Ÿ“Œ Dev Server | ์„œ๋ฒ„/๊ธธ๋“œID: 777888999000111222

โšก ์ „์—ญ ๋ช…๋ น์–ด (12๊ฐœ)
[1/12] ping (ID: 123456789000000001)
  ํƒ€์ž…: CHAT_INPUT
  ์„ค๋ช…: Pong!
  ์ƒ์„ฑ์ผ: 2026-03-15T10:00:00.000000+00:00
  ์ˆ˜์ •์ผ: 2026-03-15T10:00:00.000000+00:00

[2/12] kick (ID: 123456789000000002)
  ํƒ€์ž…: CHAT_INPUT
  ์„ค๋ช…: Kick a user
  ์˜ต์…˜:
  โ”œโ”€ user (6) [ํ•„์ˆ˜]
  โ”‚  ์„ค๋ช…: The user to kick
  โ”œโ”€ reason (3)
  โ”‚  ์„ค๋ช…: Reason for kick

๐Ÿ“ ์ฑ„๋„: My Server (15๊ฐœ)
  # general | ID: 111111111111111111 | ํƒ€์ž…: 0
  ๐Ÿ”Š voice-chat | ID: 222222222222222222 | ํƒ€์ž…: 2
  ...

Step 4: ๋ช…๋ น์–ด ๊ฒ€์ƒ‰

node discord-command-tool.mjs search kick

๊ฒฐ๊ณผ:

๐Ÿค– My Awesome Bot (์ „์—ญ)
  123456789000000002 | kick | Kick a user

๐Ÿค– My Awesome Bot (My Server)
  123456789000000015 | kick | Kick a user from server

2. ๊ณ ๊ธ‰ ์‚ฌ์šฉ๋ฒ•

์—ฌ๋Ÿฌ ๋ด‡ ๊ด€๋ฆฌ

# ๋ด‡ 1 ์ถ”๊ฐ€
node discord-command-tool.mjs add TOKEN_1

# ๋ด‡ 2 ์ถ”๊ฐ€ (๋ณ„์นญ ์ง€์ •)
node discord-command-tool.mjs add TOKEN_2 --name prod-bot

# ๋ด‡ 3 ์ถ”๊ฐ€
node discord-command-tool.mjs add TOKEN_3 --name dev-bot

# ๋ชฉ๋ก ํ™•์ธ
node discord-command-tool.mjs list

๊ฒฐ๊ณผ:

๐Ÿ“‹ ๋“ฑ๋ก๋œ ๋ด‡ ๋ชฉ๋ก

  My Bot | ID: 123... | ๐Ÿ”’ ์•”ํ˜ธํ™”๋จ
  prod-bot | ID: 456... | ๐Ÿ”’ ์•”ํ˜ธํ™”๋จ
  dev-bot | ID: 789... | ๐Ÿ”’ ์•”ํ˜ธํ™”๋จ

๋ด‡ ๊ฐ„ ๋ช…๋ น์–ด ๋น„๊ต

node discord-command-tool.mjs diff dev-bot prod-bot

๊ฒฐ๊ณผ:

๐Ÿ“Š dev-bot vs prod-bot

๐Ÿ”น dev-bot๋งŒ:
  + test
  + debug
  + eval

๐Ÿ”ธ prod-bot๋งŒ:
  - leaderboard
  - economy

๐Ÿ”„ ์ฐจ์ด:
  ~ kick
  ~ ban

์†Œ์Šค์ฝ”๋“œ์™€ ๋น„๊ต (๊ณ ์ŠคํŠธ ๋ช…๋ น์–ด ํƒ์ง€)

node discord-command-tool.mjs ghost ./src/commands

๊ฒฐ๊ณผ:

๐Ÿ‘ป My Awesome Bot
๐Ÿ’€ ๊ณ ์ŠคํŠธ (๋“ฑ๋ก๋งŒ ๋จ):
  โŒ old-command (123456789000000005)
  โŒ deprecated-cmd (123456789000000009)
โœ… ๋ฏธ๋“ฑ๋ก ์—†์Œ

๊ณ ์ŠคํŠธ ๋ช…๋ น์–ด ์ž๋™ ์ •๋ฆฌ

node discord-command-tool.mjs ghost-clean ./src/commands

๊ฒฐ๊ณผ:

โœ… My Awesome Bot: 2๊ฐœ ์ „์—ญ ๊ณ ์ŠคํŠธ ์‚ญ์ œ
โœ… My Server: 1๊ฐœ ๊ธธ๋“œ ๊ณ ์ŠคํŠธ ์‚ญ์ œ

CI/CD ์—ฐ๋™

# JSON ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ (ํŒŒ์ดํ”„ ๊ฐ€๋Šฅ)
node discord-command-tool.mjs cicd

๊ฒฐ๊ณผ:

::DISCORD-TOOL-OUTPUT::
{
  "timestamp": "2026-04-07T11:00:00.000Z",
  "bots": [
    {
      "bot": "My Awesome Bot",
      "id": "123456789012345678",
      "appId": "123456789012345678",
      "globalCount": 12,
      "guilds": [
        { "guild": "My Server", "guildId": "987...", "commands": 5 }
      ],
      "total": 17,
      "status": "ok"
    }
  ]
}
::END-OUTPUT::

๐Ÿ“š ์ „์ฒด ๋ช…๋ น์–ด ๋ ˆํผ๋Ÿฐ์Šค

help / --help / -h

๋„์›€๋ง ์ถœ๋ ฅ

node discord-command-tool.mjs --help

keygen

์•”ํ˜ธํ™” ๋งˆ์Šคํ„ฐ ํ‚ค ์ƒ์„ฑ (์ตœ์ดˆ 1ํšŒ). ์ด๋ฏธ ์žˆ์œผ๋ฉด ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์Œ. .gitignore๋„ ์ž๋™ ๋ณด์žฅ.

node discord-command-tool.mjs keygen

๊ฒฐ๊ณผ (์ตœ์ดˆ):

โœ… ์•”ํ˜ธํ™” ํ‚ค ์ƒ์„ฑ๋จ (data/keys/master.key)
๐Ÿ”’ .gitignore ์ƒ์„ฑ๋จ (node_modules/, data/)

๊ฒฐ๊ณผ (์ด๋ฏธ ์žˆ์Œ):

โš ๏ธ ํ‚ค๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋ฎ์–ด์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (data/keys/master.key)

add <ํ† ํฐ> [--name ์ด๋ฆ„]

๋ด‡ ์ถ”๊ฐ€. ํ† ํฐ์œผ๋กœ ์ž๋™์œผ๋กœ ๋ด‡ ์ด๋ฆ„์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. --name์œผ๋กœ ๋ณ„์นญ ์ง€์ • ๊ฐ€๋Šฅ.

# ์ž๋™ ์ด๋ฆ„
node discord-command-tool.mjs add MTk2...XjYz

# ๋ณ„์นญ ์ง€์ •
node discord-command-tool.mjs add MTk2...XjYz --name my-bot

๊ฒฐ๊ณผ:

โœ… "My Awesome Bot" ์ถ”๊ฐ€๋จ | ID: 123456789012345678

์—๋Ÿฌ (์ค‘๋ณต):

โš ๏ธ "My Awesome Bot" ์ด๋ฏธ ์กด์žฌ

์—๋Ÿฌ (์œ ํšจํ•˜์ง€ ์•Š์€ ํ† ํฐ):

โŒ ํ† ํฐ ์˜ค๋ฅ˜: API 401: 401: Unauthorized

remove <์ด๋ฆ„>

๋ด‡ ์ œ๊ฑฐ (์ €์žฅ๋œ ์•”ํ˜ธํ™” ํ† ํฐ ์‚ญ์ œ)

node discord-command-tool.mjs remove my-bot

๊ฒฐ๊ณผ:

โœ… "my-bot" ์ œ๊ฑฐ๋จ

list

๋“ฑ๋ก๋œ ๋ด‡ ๋ชฉ๋ก

node discord-command-tool.mjs list

๊ฒฐ๊ณผ:

๐Ÿ“‹ ๋“ฑ๋ก๋œ ๋ด‡ ๋ชฉ๋ก

  My Bot | ID: 123456789012345678 | ๐Ÿ”’ ์•”ํ˜ธํ™”๋จ
  prod-bot | ID: 987654321098765432 | ๐Ÿ”’ ์•”ํ˜ธํ™”๋จ

info [์ด๋ฆ„]

์ „์ฒด ์ •๋ณด ์กฐํšŒ (๋ด‡ ์ •๋ณด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ์„œ๋ฒ„, ์ฑ„๋„, ์ „์—ญ/๊ธธ๋“œ ๋ช…๋ น์–ด)

# ์ „์ฒด ๋ด‡ ์กฐํšŒ
node discord-command-tool.mjs info

# ํŠน์ • ๋ด‡๋งŒ
node discord-command-tool.mjs info my-bot

๊ฒฐ๊ณผ: [์ƒ๋‹จ "์‰ฌ์šด ์‚ฌ์šฉ๋ฒ• Step 3" ์ฐธ์กฐ]


search <๊ฒ€์ƒ‰์–ด|ID>

๋ช…๋ น์–ด๋ฅผ ์ด๋ฆ„, ID, ์„ค๋ช…์œผ๋กœ ๊ฒ€์ƒ‰

# ์ด๋ฆ„์œผ๋กœ
node discord-command-tool.mjs search kick

# ID๋กœ
node discord-command-tool.mjs search 123456789000000002

# ์„ค๋ช… ์ผ๋ถ€๋กœ
node discord-command-tool.mjs search "user from server"

๊ฒฐ๊ณผ:

๐Ÿค– My Awesome Bot (์ „์—ญ)
  123456789000000002 | kick | Kick a user

๐Ÿค– My Awesome Bot (My Server)
  123456789000000015 | kick | Kick a user from server

edit <๋ด‡|all> <ํ‚ค> <๊ฐ’>

๋ช…๋ น์–ด ์†์„ฑ ์ˆ˜์ •

# ์„ค๋ช… ๋ณ€๊ฒฝ
node discord-command-tool.mjs edit my-bot 123456789000000002 description "Kick a member from the server"

# ์ด๋ฆ„ ๋ณ€๊ฒฝ
node discord-command-tool.mjs edit my-bot 123456789000000002 name "smite"

# NSFW ์„ค์ •
node discord-command-tool.mjs edit my-bot 123456789000000002 nsfw true

# ๊ถŒํ•œ ์„ค์ •
node discord-command-tool.mjs edit my-bot 123456789000000002 default_member_permissions 2

# ๋ชจ๋“  ๋ด‡์— ์ ์šฉ
node discord-command-tool.mjs edit all 123456789000000002 description "Updated description"

๊ฒฐ๊ณผ:

โœ… my-bot: 123456789000000002 ์ˆ˜์ •๋จ โ†’ description=Kick a member from the server

delete-id <๋ด‡|all> [global|guild]

ID๋กœ ๋ช…๋ น์–ด ์‚ญ์ œ

# ์ „์—ญ ๋ช…๋ น์–ด ์‚ญ์ œ
node discord-command-tool.mjs delete-id my-bot 123456789000000002 global

# ํŠน์ • ๊ธธ๋“œ์—์„œ๋งŒ ์‚ญ์ œ
node discord-command-tool.mjs delete-id my-bot 123456789000000002 guild

# ์ „์—ญ + ๋ชจ๋“  ๊ธธ๋“œ์—์„œ ์‚ญ์ œ
node discord-command-tool.mjs delete-id my-bot 123456789000000002

# ๋ชจ๋“  ๋ด‡์—์„œ ์‚ญ์ œ
node discord-command-tool.mjs delete-id all 123456789000000002

๊ฒฐ๊ณผ:

โœ… my-bot: ์ „์—ญ 123456789000000002 ์‚ญ์ œ
โœ… my-bot: ๊ธธ๋“œ(My Server) 123456789000000002 ์‚ญ์ œ
โœ… my-bot: ๊ธธ๋“œ(Test Server) 123456789000000002 ์‚ญ์ œ

delete-name <์ด๋ฆ„>

์ด๋ฆ„์œผ๋กœ ๋ช…๋ น์–ด ๊ฒ€์ƒ‰ ํ›„ ์‚ญ์ œ (์ „์—ญ + ๋ชจ๋“  ๊ธธ๋“œ)

node discord-command-tool.mjs delete-name old-command

๊ฒฐ๊ณผ:

โœ… my-bot: ์ „์—ญ "old-command" (123456789000000005) ์‚ญ์ œ
โœ… my-bot: My Server "old-command" (123456789000000020) ์‚ญ์ œ

purge <๋ด‡|all> <global|guild> [guildId]

๋ช…๋ น์–ด ์ผ๊ด„ ์‚ญ์ œ

# ํŠน์ • ๋ด‡์˜ ์ „์—ญ ๋ช…๋ น์–ด ์ „๋ถ€ ์‚ญ์ œ
node discord-command-tool.mjs purge my-bot global

# ๋ชจ๋“  ๋ด‡์˜ ์ „์—ญ ๋ช…๋ น์–ด ์ „๋ถ€ ์‚ญ์ œ
node discord-command-tool.mjs purge all global

# ํŠน์ • ๊ธธ๋“œ์˜ ๋ช…๋ น์–ด ์ „๋ถ€ ์‚ญ์ œ
node discord-command-tool.mjs purge my-bot guild 987654321098765432

# ๋ชจ๋“  ๊ธธ๋“œ์˜ ๋ช…๋ น์–ด ์ „๋ถ€ ์‚ญ์ œ
node discord-command-tool.mjs purge my-bot guild

๊ฒฐ๊ณผ:

โœ… my-bot: ์ „์—ญ 12๊ฐœ ์ „๋ถ€ ์‚ญ์ œ
โœ… my-bot: ๊ธธ๋“œ(My Server) 5๊ฐœ ์ „๋ถ€ ์‚ญ์ œ
โœ… my-bot: ๊ธธ๋“œ(Test Server) 3๊ฐœ ์ „๋ถ€ ์‚ญ์ œ

โš ๏ธ purge๋Š” ๋˜๋Œ๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‹คํ–‰ ์ „ backup์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.


ghost <์†Œ์Šค๊ฒฝ๋กœ>

์†Œ์Šค์ฝ”๋“œ์— ์—†์ง€๋งŒ Discord์— ๋“ฑ๋ก๋œ "์œ ๋ น ๋ช…๋ น์–ด" ํƒ์ง€

# ๋‹จ์ผ ํŒŒ์ผ
node discord-command-tool.mjs ghost ./src/commands.js

# ๋””๋ ‰ํ† ๋ฆฌ (์žฌ๊ท€ ์Šค์บ”)
node discord-command-tool.mjs ghost ./src/commands

๊ฒฐ๊ณผ:

๐Ÿ‘ป My Awesome Bot
๐Ÿ’€ ๊ณ ์ŠคํŠธ (๋“ฑ๋ก๋งŒ ๋จ):
  โŒ old-command (123456789000000005)
  โŒ deprecated-cmd (123456789000000009)
โœ… ๋ฏธ๋“ฑ๋ก ์—†์Œ

๐Ÿ’€ Test Server ๊ธธ๋“œ ๊ณ ์ŠคํŠธ:
  โŒ test-only-cmd (123456789000000099)

์ง€์›ํ•˜๋Š” ์†Œ์Šค์ฝ”๋“œ ํŒจํ„ด:

// SlashCommandBuilder
new SlashCommandBuilder().setName('my-command')

// ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด
{ name: 'my-command', description: '...' }

// ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ
@command('my-command')

// ํ•จ์ˆ˜ ํ˜ธ์ถœ
registerCommand('my-command')

ghost-clean <์†Œ์Šค๊ฒฝ๋กœ>

๊ณ ์ŠคํŠธ ๋ช…๋ น์–ด ์ž๋™ ์ •๋ฆฌ

node discord-command-tool.mjs ghost-clean ./src/commands

๊ฒฐ๊ณผ:

โœ… My Awesome Bot: 2๊ฐœ ์ „์—ญ ๊ณ ์ŠคํŠธ ์‚ญ์ œ
โœ… My Server: 1๊ฐœ ๊ธธ๋“œ ๊ณ ์ŠคํŠธ ์‚ญ์ œ
โœ… prod-bot: 0๊ฐœ ์ „์—ญ ๊ณ ์ŠคํŠธ ์‚ญ์ œ

compare <์†Œ์Šค๊ฒฝ๋กœ>

์†Œ์Šค์ฝ”๋“œ์˜ ๋ช…๋ น์–ด์™€ Discord์— ๋“ฑ๋ก๋œ ๋ช…๋ น์–ด๋ฅผ ์™„์ „ ๋น„๊ต

node discord-command-tool.mjs compare ./src/commands

๊ฒฐ๊ณผ:

๐Ÿ” My Awesome Bot
  ์†Œ์Šค: 10๊ฐœ | ๋“ฑ๋ก: 12๊ฐœ
  ๐Ÿ“ ๋ฏธ๋“ฑ๋ก:
    โž• new-feature
    โž• poll-command
  ๐Ÿ—‘๏ธ ๊ณ ์ŠคํŠธ:
    โŒ old-command (123456789000000005)
    โŒ deprecated-cmd (123456789000000009)

๐Ÿ” prod-bot
  ์†Œ์Šค: 10๊ฐœ | ๋“ฑ๋ก: 10๊ฐœ
  โœ… ์™„๋ฒฝ ์ผ์น˜!

diff <๋ด‡A> <๋ด‡B>

๋‘ ๋ด‡ ๊ฐ„ ์ „์—ญ ๋ช…๋ น์–ด ์ฐจ์ด ๋น„๊ต

node discord-command-tool.mjs diff dev-bot prod-bot

๊ฒฐ๊ณผ:

๐Ÿ“Š dev-bot vs prod-bot

๐Ÿ”น dev-bot๋งŒ:
  + test
  + debug
  + eval

๐Ÿ”ธ prod-bot๋งŒ:
  - leaderboard
  - economy

๐Ÿ”„ ์ฐจ์ด:
  ~ kick
  ~ ban

backup [๋ด‡|all]

JSON ํŒŒ์ผ๋กœ ๋ช…๋ น์–ด ๋ฐฑ์—…

# ์ „์ฒด ๋ด‡ ๋ฐฑ์—…
node discord-command-tool.mjs backup all

# ํŠน์ • ๋ด‡๋งŒ
node discord-command-tool.mjs backup my-bot

๊ฒฐ๊ณผ:

โœ… my-bot ๋ฐฑ์—… ์™„๋ฃŒ
โœ… prod-bot ๋ฐฑ์—… ์™„๋ฃŒ

๐Ÿ“ /path/to/data/backups/2026-04-07T11-00-00-000Z

๋ฐฑ์—… ํŒŒ์ผ ๊ตฌ์กฐ:

{
  "bot": "my-bot",
  "id": "123456789012345678",
  "timestamp": "2026-04-07T11:00:00.000Z",
  "global": [
    { "id": "...", "name": "ping", "description": "Pong!", "options": [] }
  ],
  "guilds": {
    "987654321098765432": {
      "name": "My Server",
      "commands": [...]
    }
  }
}

restore <๋ฐฑ์—…ํŒŒ์ผ>

๋ฐฑ์—…์—์„œ ๋ช…๋ น์–ด ๋ณต์›

# ํƒ€์ž„์Šคํƒฌํ”„ ํด๋” ๋‚ด ํŒŒ์ผ
node discord-command-tool.mjs restore 2026-04-07T11-00-00-000Z/my-bot.json

# ์ ˆ๋Œ€ ๊ฒฝ๋กœ
node discord-command-tool.mjs restore /backups/my-bot.json

๊ฒฐ๊ณผ:

โœ… ์ „์—ญ 12๊ฐœ ๋ณต์›
โœ… ๊ธธ๋“œ(My Server) 5๊ฐœ ๋ณต์›
โœ… ๊ธธ๋“œ(Test Server) 3๊ฐœ ๋ณต์›

history [๋ด‡]

๋ด‡๋ณ„ ๋ณ€๊ฒฝ ์ด๋ ฅ ์กฐํšŒ (์ตœ๊ทผ 7์ผ)

# ์ „์ฒด ์ด๋ ฅ
node discord-command-tool.mjs history

# ํŠน์ • ๋ด‡
node discord-command-tool.mjs history my-bot

๊ฒฐ๊ณผ:

๐Ÿ“… 2026-04-07
  delete-global | 2026-04-07T10:30:00Z | old-command | 123456789000000005
  edit | 2026-04-07T10:00:00Z | kick
  purge-global | 2026-04-07T09:00:00Z | 12๊ฐœ

๐Ÿ“… 2026-04-06
  backup | 2026-04-06T18:00:00Z
  delete-name | 2026-04-06T15:00:00Z | test-cmd

cicd

CI/CD ํŒŒ์ดํ”„๋ผ์ธ์šฉ JSON ์ถœ๋ ฅ ๋ชจ๋“œ

# ์ง์ ‘ ์‹คํ–‰
node discord-command-tool.mjs cicd

# jq์™€ ์กฐํ•ฉ
node discord-command-tool.mjs cicd | sed -n '/::DISCORD-TOOL-OUTPUT::/,/::END-OUTPUT::/p'

# ์Šคํฌ๋ฆฝํŠธ์—์„œ ํŒŒ์‹ฑ
node discord-command-tool.mjs cicd | grep -A 999 '::DISCORD-TOOL-OUTPUT::' | grep -B 999 '::END-OUTPUT::' | tail -n +2 | head -n -1 | jq '.bots[0].total'

๊ฒฐ๊ณผ: [์ƒ๋‹จ "๊ณ ๊ธ‰ ์‚ฌ์šฉ๋ฒ• > CI/CD ์—ฐ๋™" ์ฐธ์กฐ]


๐Ÿ”ง ์œ ์ง€๋ณด์ˆ˜

์ •๊ธฐ์ ์œผ๋กœ ํ•ด์•ผ ํ•  ๊ฒƒ

์ฃผ๊ธฐ ์ž‘์—… ๋ช…๋ น์–ด
์ฃผ 1ํšŒ ๋ฐฑ์—… backup all
๋ช…๋ น์–ด ๋ณ€๊ฒฝ ํ›„ ๊ณ ์ŠคํŠธ ์ฒดํฌ ghost ./src
๋ด‡ ์ถ”๊ฐ€/์‚ญ์ œ ํ›„ ๋ชฉ๋ก ํ™•์ธ list
CI/CD ์„ค์ • ํ›„ ์ •์ƒ ๋™์ž‘ ํ™•์ธ cicd

์•”ํ˜ธํ™” ํ‚ค ๊ด€๋ฆฌ

# ํ‚ค ์œ„์น˜
data/keys/master.key

# โš ๏ธ ํ‚ค ๋ถ„์‹ค ์‹œ ๋ณต๊ตฌ ๋ถˆ๊ฐ€ โ†’ data/bots.json ์‚ญ์ œ ํ›„ ๋ด‡ ์žฌ๋“ฑ๋ก ํ•„์š”
# โš ๏ธ ํ‚ค๋Š” ์ ˆ๋Œ€ GitHub, Slack, ์ด๋ฉ”์ผ๋กœ ๊ณต์œ ํ•˜์ง€ ๋งˆ์„ธ์š”

# ์•ˆ์ „ํ•œ ๋ฐฑ์—… (์˜คํ”„๋ผ์ธ)
cp data/keys/master.key ~/offline-backup/
# USB๋‚˜ ์˜คํ”„๋ผ์ธ ์œ„์น˜์— ๋ณด๊ด€

๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ ๋ฐฑ์—…

# ์ „์ฒด ๋ฐ์ดํ„ฐ ๋ฐฑ์—…
cp -r data/ ~/backup/discord-tool-data-$(date +%Y%m%d)

# ๋ณต์›
cp -r ~/backup/discord-tool-data-20260407/ data/

๋กœ๊ทธ ์ •๋ฆฌ

# 30์ผ ์ด์ƒ ๋œ ์ด๋ ฅ ์‚ญ์ œ
find data/history/ -type d -mtime +30 -exec rm -rf {} +

# 30์ผ ์ด์ƒ ๋œ ๋ฐฑ์—… ์‚ญ์ œ
find data/backups/ -type d -mtime +30 -exec rm -rf {} +

โ“ ์ž์ฃผ ๋ฌป๋Š” ์ด์Šˆ์™€ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

Q1. "์ „์—ญ ๋ช…๋ น์–ด๋ฅผ ์ง€์› ๋Š”๋ฐ ๋‹ค์‹œ ์‚ด์•„๋‚จ"

์›์ธ: ๋ด‡ ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰ ์ค‘์ด๋ฉด ์‹œ์ž‘ ์‹œ ๋ช…๋ น์–ด๋ฅผ ์žฌ๋“ฑ๋กํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ.

ํ•ด๊ฒฐ:

  1. ๋ด‡ ์„œ๋ฒ„๋ฅผ ๋จผ์ € ์ข…๋ฃŒ
  2. ๋ช…๋ น์–ด ์‚ญ์ œ
  3. ์†Œ์Šค์ฝ”๋“œ์—์„œ ํ•ด๋‹น ๋ช…๋ น์–ด ์ œ๊ฑฐ
  4. ๋ด‡ ์„œ๋ฒ„ ์žฌ์‹œ์ž‘
  5. ghost ./src๋กœ ์žฌํ™•์ธ
# ๋ด‡ ์„œ๋ฒ„ ์ข…๋ฃŒ ํ›„
node discord-command-tool.mjs delete-name unwanted-command
node discord-command-tool.mjs ghost ./src/commands  # ์‚ด์•„๋‚ฌ๋Š”์ง€ ํ™•์ธ

Q2. "API 403: Missing Access"

์›์ธ: ๋ด‡์ด ํ•ด๋‹น ๊ธธ๋“œ์— applications.commands ๊ถŒํ•œ์ด ์—†์Œ.

ํ•ด๊ฒฐ:

  1. Discord Developer Portal โ†’ Bot โ†’ OAuth2 โ†’ URL Generator
  2. Scopes: bot, applications.commands
  3. Bot Permissions: Use Application Commands
  4. ์ƒ์„ฑ๋œ URL๋กœ ๋ด‡์„ ์„œ๋ฒ„์— ๋‹ค์‹œ ์ดˆ๋Œ€

Q3. "API 429: Rate Limited"

์›์ธ: ๋„ˆ๋ฌด ๋งŽ์€ API ์š”์ฒญ. Discord ์ œํ•œ: ์ดˆ๋‹น 50ํšŒ ์ „์—ญ ๋ช…๋ น์–ด ์ˆ˜์ •, ๊ธธ๋“œ๋‹น ์ดˆ๋‹น 5ํšŒ.

ํ•ด๊ฒฐ: ์ž ์‹œ ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜ purge ๋Œ€์‹  ๊ฐœ๋ณ„ ์‚ญ์ œ ์‚ฌ์šฉ. ์ž๋™ ์žฌ์‹œ๋„๋Š” ์ถ”ํ›„ ์ถ”๊ฐ€ ์˜ˆ์ •.


Q4. "API 401: Unauthorized"

์›์ธ: ํ† ํฐ์ด ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜ ๋งŒ๋ฃŒ๋จ.

ํ•ด๊ฒฐ:

  1. Discord Developer Portal โ†’ Bot โ†’ Reset Token
  2. remove ํ›„ add๋กœ ์žฌ๋“ฑ๋ก
node discord-command-tool.mjs remove old-bot
node discord-command-tool.mjs add NEW_TOKEN

Q5. "์•”ํ˜ธํ™” ํ‚ค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค" ์—๋Ÿฌ

์›์ธ: data/keys/master.key๊ฐ€ ์—†๊ฑฐ๋‚˜ ์‚ญ์ œ๋จ.

ํ•ด๊ฒฐ:

node discord-command-tool.mjs keygen
# ๊ธฐ์กด์— ๋“ฑ๋กํ•œ ๋ด‡์€ remove ํ›„ ์žฌ๋“ฑ๋ก (์ด์ „ ํ† ํฐ์œผ๋กœ ๋ณตํ˜ธํ™” ๋ถˆ๊ฐ€)

โš ๏ธ ํ‚ค ๋ถ„์‹ค ์‹œ ๊ธฐ์กด ์•”ํ˜ธํ™”๋œ ํ† ํฐ์€ ๋ณต๊ตฌ ๋ถˆ๊ฐ€. ๋ด‡ ์žฌ๋“ฑ๋ก ํ•„์š”.


Q6. "Node.js ๋ฒ„์ „ ์—๋Ÿฌ"

์›์ธ: Node.js v18 ๋ฏธ๋งŒ ์‚ฌ์šฉ (ESM import ๋ฏธ์ง€์›)

ํ•ด๊ฒฐ:

node --version  # v18.0.0 ์ด์ƒ์ด์–ด์•ผ ํ•จ

# nvm ์‚ฌ์šฉ ์‹œ
nvm install 18
nvm use 18

Q7. "ghost ๋ช…๋ น์–ด๊ฐ€ ์ •ํ™•ํ•˜์ง€ ์•Š์Œ"

์›์ธ: ์†Œ์Šค์ฝ”๋“œ ํŒจํ„ด์ด ์ธ์‹๋˜์ง€ ์•Š์Œ.

ํ•ด๊ฒฐ: discord-command-tool.mjs ๋‚ด parsePatterns ํ•จ์ˆ˜์— ์ •๊ทœ์‹ ํŒจํ„ด์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

ํ˜„์žฌ ์ง€์› ํŒจํ„ด:

.setName('command-name')          // SlashCommandBuilder
name: 'command-name'              // ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด
@command('command-name')          // ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ
registerCommand('command-name')   // ํ•จ์ˆ˜ ํ˜ธ์ถœ
commands/command-name             // ํŒŒ์ผ ๊ฒฝ๋กœ

์ปค์Šคํ…€ ํŒจํ„ด ์ถ”๊ฐ€ ์˜ˆ์‹œ:

// discord-command-tool.mjs์˜ parsePatterns ํ•จ์ˆ˜์— ์ถ”๊ฐ€
/\/register\(['"](\w[\w-]*)['"]\)/g,  // ์ปค์Šคํ…€ ํŒจํ„ด

Q8. Windows์—์„œ ์ƒ‰์ƒ์ด ๊นจ์ ธ์š”

์›์ธ: Windows CMD๋Š” ANSI ์ƒ‰์ƒ์„ ๊ธฐ๋ณธ ์ง€์›ํ•˜์ง€ ์•Š์Œ.

ํ•ด๊ฒฐ:

# Windows Terminal ์‚ฌ์šฉ (๊ถŒ์žฅ) โ€” ์ž๋™ ์ง€์›๋จ
# ๋˜๋Š” CMD์—์„œ ์ƒ‰์ƒ ๋น„ํ™œ์„ฑํ™” (ํ–ฅํ›„ --no-color ์˜ต์…˜ ์˜ˆ์ •)

# ์ž„์‹œ: PowerShell ์‚ฌ์šฉ
pwsh -c "node discord-command-tool.mjs info"

Q9. "GitHub Actions์—์„œ cicd ๋ชจ๋“œ๊ฐ€ ์‹คํŒจํ•จ"

์›์ธ: data/keys/master.key์™€ data/bots.json์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์—†์Œ.

ํ•ด๊ฒฐ:

# .github/workflows/check-commands.yml
name: Check Commands
on: [push]
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - name: Setup tool
        run: node discord-command-tool.mjs keygen
      - name: Add bot
        run: node discord-command-tool.mjs add ${{ secrets.DISCORD_BOT_TOKEN }}
        env:
          DISCORD_BOT_TOKEN: ${{ secrets.DISCORD_BOT_TOKEN }}
      - name: Check commands
        run: node discord-command-tool.mjs cicd

Q10. "๋ฐฑ์—… ํŒŒ์ผ์ด ๋„ˆ๋ฌด ํผ"

์›์ธ: ๋ช…๋ น์–ด๊ฐ€ ๋งŽ๊ฑฐ๋‚˜ ๊ธธ๋“œ๊ฐ€ ๋งŽ์€ ๋ด‡.

ํ•ด๊ฒฐ:

# ํŠน์ • ๋ด‡๋งŒ ๋ฐฑ์—…
node discord-command-tool.mjs backup my-bot

# ์˜ค๋ž˜๋œ ๋ฐฑ์—… ์ •๋ฆฌ
find data/backups/ -type d -mtime +30 -exec rm -rf {} +

๐Ÿ“„ ๋ผ์ด์„ ์Šค

MIT


Made with โค๏ธ by oclo (OpenClaw bot)

ยฉ haseo-ai

About

๐Ÿพ CLI tool to manage Discord slash commands across multiple bots โ€” query, modify, delete, backup, compare, ghost detection, i18n (21 languages)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors