REST API v1 · למפתחים · מדריך עיון ל-API

מדריך עיון ל-API: ניהול

כל 9 נקודות הקצה של ניהול ב-REST API v1 של BotGG: הרשאות, פרמטרים, שדות, שגיאות ודוגמאות מוכנות ב-curl, JavaScript ו-Python.

תיעוד למפתחים
בעמוד הזה

נקודות קצה

הנתיבים יחסיים ל-https://console.botgg.app/api/v1. שלחו את מפתח ה-API בכותרת Authorization: Bearer botgg_…; מזהים הם מחרוזות.

נקודות קצה: ניהול
נקודת קצההרשאהתיאור
GET/guilds/{guildId}/moderation/casesmoderation:readList moderation cases
GET/guilds/{guildId}/moderation/cases/{number}moderation:readGet a moderation case
POST/guilds/{guildId}/moderation/users/{userId}/warnmoderation:writeWarn a member
POST/guilds/{guildId}/moderation/users/{userId}/timeoutmoderation:writeTime out a member
POST/guilds/{guildId}/moderation/users/{userId}/untimeoutmoderation:writeRemove a member’s timeout
POST/guilds/{guildId}/moderation/users/{userId}/kickmoderation:writeKick a member
POST/guilds/{guildId}/moderation/users/{userId}/banmoderation:writeBan a user
POST/guilds/{guildId}/moderation/users/{userId}/unbanmoderation:writeUnban a user
GET/guilds/{guildId}/moderation/actions/{actionId}moderation:writeGet the result of a moderation action

מלבד השגיאות הייחודיות שלה (בהמשך), כל נקודת קצה יכולה להחזיר את השגיאות הכלליות האלה:

List moderation cases

GET/guilds/{guildId}/moderation/cases

הרשאה: moderation:readרגישה

Newest first (deleted cases are left out). Pass before=<nextCursor> for the next page.

נדרש שהפיצ׳ר הזה יהיה מופעל בשרת: ניהול

פרמטרים
שםמיקוםסוגחובהתיאור
guildIdנתיבstringכןהמזהה של השרת שלכם · מזהה דיסקורד (מחרוזת)
actionquerystringלאאחד מ: warn, timeout, untimeout, kick, ban, tempban, softban, unban, note, purge
sourcequerystringלאאחד מ: command, automod, escalation, antiraid, antinuke, console, api
userIdquerystringלאOnly cases against this user
מזהה דיסקורד (מחרוזת)
moderatorIdquerystringלאמזהה דיסקורד (מחרוזת)
activequerystringלא1 = only running warnings / timeouts / tempbans
אחד מ: 1, 0, true, false
limitqueryintegerלא1–100 · ברירת מחדל 25
beforequeryintegerלא1–999,999,999

תשובה

שדות התשובה · 200
שדהסוגחובהתיאור
itemsarray of objectכן
items[].numberintegerכן
items[].actionstringכןאחד מ: warn, timeout, untimeout, kick, ban, tempban, softban, unban, note, purge
items[].userIdstringכןThe target
items[].userTagstring | nullכן
items[].moderatorIdstringכן
items[].reasonstring | nullכן
items[].durationSecondsinteger | nullכן
items[].evidencearray of stringכן
items[].sourcestringכןאחד מ: command, automod, escalation, antiraid, antinuke, console, api
items[].activebooleanכן
items[].expiresAtstring | nullכןISO 8601 date-time
items[].resolvedAtstring | nullכןISO 8601 date-time
items[].dmStatusstring | nullכןאחד מ: sent, failed, off
items[].apiKeyobject | nullכןSet when the action was made with an API key
items[].apiKey.idinteger | nullכן
items[].apiKey.namestring | nullכן
items[].createdAtstring | nullכןISO 8601 date-time
nextCursorstring | nullכן
תשובה · 200
{
  "items": [
    {
      "number": 7,
      "action": "warn",
      "userId": "876543210987654321",
      "userTag": "example",
      "moderatorId": "234567890123456789",
      "reason": "Tournament prize",
      "durationSeconds": 3600,
      "evidence": [
        "example"
      ],
      "source": "command",
      "active": true,
      "expiresAt": "2026-10-07T12:00:00.000Z",
      "resolvedAt": "2026-10-07T12:00:00.000Z",
      "dmStatus": "sent",
      "apiKey": {
        "id": 98765,
        "name": "Example"
      },
      "createdAt": "2026-10-07T12:00:00.000Z"
    }
  ],
  "nextCursor": "98700"
}

דוגמאות

curl
curl -s "https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/cases?limit=25" \
  -H "Authorization: Bearer $BOTGG_API_KEY"
JavaScript (fetch)
// Node.js 18+ (built-in fetch) — on your server, never in a browser
const res = await fetch('https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/cases?limit=25', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.BOTGG_API_KEY}`,
  },
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status} ${data.error}: ${data.message}`);
console.log(data);
Python (requests)
import os
import requests

res = requests.get(
    "https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/cases",
    headers={
        "Authorization": f"Bearer {os.environ['BOTGG_API_KEY']}",
    },
    params={
        "limit": 25,
    },
    timeout=10,
)
data = res.json()
if not res.ok:
    raise RuntimeError(f"{res.status_code} {data['error']}: {data['message']}")
print(data)

שגיאות

שגיאות
HTTPקודים
409FEATURE_DISABLED
503SERVICE_UNAVAILABLE

Get a moderation case

GET/guilds/{guildId}/moderation/cases/{number}

הרשאה: moderation:readרגישה

With its timeline (created, reason / evidence edits, DM, expired, revoked, escalated).

נדרש שהפיצ׳ר הזה יהיה מופעל בשרת: ניהול

פרמטרים
שםמיקוםסוגחובהתיאור
guildIdנתיבstringכןהמזהה של השרת שלכם · מזהה דיסקורד (מחרוזת)
numberנתיבstringכן

תשובה

שדות התשובה · 200
שדהסוגחובהתיאור
numberintegerכן
actionstringכןאחד מ: warn, timeout, untimeout, kick, ban, tempban, softban, unban, note, purge
userIdstringכןThe target
userTagstring | nullכן
moderatorIdstringכן
reasonstring | nullכן
durationSecondsinteger | nullכן
evidencearray of stringכן
sourcestringכןאחד מ: command, automod, escalation, antiraid, antinuke, console, api
activebooleanכן
expiresAtstring | nullכןISO 8601 date-time
resolvedAtstring | nullכןISO 8601 date-time
dmStatusstring | nullכןאחד מ: sent, failed, off
apiKeyobject | nullכןSet when the action was made with an API key
apiKey.idinteger | nullכן
apiKey.namestring | nullכן
createdAtstring | nullכןISO 8601 date-time
eventsarray of objectכן
events[].typestringכן
events[].actorIdstring | nullכן
events[].dataanyכן
events[].createdAtstring | nullכןISO 8601 date-time
תשובה · 200
{
  "number": 7,
  "action": "warn",
  "userId": "876543210987654321",
  "userTag": "example",
  "moderatorId": "234567890123456789",
  "reason": "Tournament prize",
  "durationSeconds": 3600,
  "evidence": [
    "example"
  ],
  "source": "command",
  "active": true,
  "expiresAt": "2026-10-07T12:00:00.000Z",
  "resolvedAt": "2026-10-07T12:00:00.000Z",
  "dmStatus": "sent",
  "apiKey": {
    "id": 98765,
    "name": "Example"
  },
  "createdAt": "2026-10-07T12:00:00.000Z",
  "events": [
    {
      "type": "example",
      "actorId": "234567890123456789",
      "data": null,
      "createdAt": "2026-10-07T12:00:00.000Z"
    }
  ]
}

דוגמאות

curl
curl -s "https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/cases/234567890123456789" \
  -H "Authorization: Bearer $BOTGG_API_KEY"
JavaScript (fetch)
// Node.js 18+ (built-in fetch) — on your server, never in a browser
const res = await fetch('https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/cases/234567890123456789', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.BOTGG_API_KEY}`,
  },
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status} ${data.error}: ${data.message}`);
console.log(data);
Python (requests)
import os
import requests

res = requests.get(
    "https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/cases/234567890123456789",
    headers={
        "Authorization": f"Bearer {os.environ['BOTGG_API_KEY']}",
    },
    timeout=10,
)
data = res.json()
if not res.ok:
    raise RuntimeError(f"{res.status_code} {data['error']}: {data['message']}")
print(data)

שגיאות

שגיאות
HTTPקודים
404CASE_NOT_FOUND
409FEATURE_DISABLED
503SERVICE_UNAVAILABLE

Warn a member

POST/guilds/{guildId}/moderation/users/{userId}/warn

הרשאה: moderation:writeרגישהIdempotency-Key

Same as /warn: a warning case (counts toward escalation), DM per the Moderation settings. Acts in the name of the key’s creator, who must still have the matching Discord permission; the target must be below their and the bot’s highest role (never the owner, the bot or the creator). The bot runs it within a few seconds — poll GET …/moderation/actions/{actionId}. At most 10 actions a minute per key. Written to the audit log.

נדרש שהפיצ׳ר הזה יהיה מופעל בשרת: ניהול

פרמטרים
שםמיקוםסוגחובהתיאור
guildIdנתיבstringכןהמזהה של השרת שלכם · מזהה דיסקורד (מחרוזת)
userIdנתיבstringכןמזהה הדיסקורד של החבר/ה · מזהה דיסקורד (מחרוזת)
Idempotency-Keyכותרתstringלאלא חובה. שלחו ערך ייחודי (UUID) והשתמשו בו שוב בניסיונות חוזרים — השינוי יקרה פעם אחת בלבד. איך זה עובד

גוף הבקשה

גוף הבקשה
שדהסוגחובהתיאור
reasonstringכןRequired. Shown in the case, the mod log and the member’s DM
1–500 תווים
evidencearray of stringלאUp to 5 links
עד 5 פריטים

תשובה

שדות התשובה · 202
שדהסוגחובהתיאור
actionIdstringכן
actionstringכןאחד מ: warn, timeout, untimeout, kick, ban, unban
userIdstringכן
statusstringכןאחד מ: pending, running, done, failed
caseNumberinteger | nullכן
errorstring | nullכןRefusal code when failed (e.g. HIERARCHY_HIGHER, MODERATOR_MISSING_PERMISSION, NOT_BANNED, BOT_MISSING_PERMISSIONS)
requestedAtstring | nullכןISO 8601 date-time
תשובה · 202
{
  "actionId": "234567890123456789",
  "action": "warn",
  "userId": "876543210987654321",
  "status": "pending",
  "caseNumber": 10,
  "error": "example",
  "requestedAt": "2026-10-07T12:00:00.000Z"
}

דוגמאות

curl
curl -s -X POST "https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/users/876543210987654321/warn" \
  -H "Authorization: Bearer $BOTGG_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"reason":"Tournament prize","evidence":["example"]}'
JavaScript (fetch)
// Node.js 18+ (built-in fetch) — on your server, never in a browser
const res = await fetch('https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/users/876543210987654321/warn', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.BOTGG_API_KEY}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': crypto.randomUUID(), // reuse it when you retry this request
  },
  body: JSON.stringify({
    reason: 'Tournament prize',
    evidence: [
      'example',
    ],
  }),
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status} ${data.error}: ${data.message}`);
console.log(data);
Python (requests)
import os, uuid
import requests

res = requests.post(
    "https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/users/876543210987654321/warn",
    headers={
        "Authorization": f"Bearer {os.environ['BOTGG_API_KEY']}",
        "Idempotency-Key": str(uuid.uuid4()),  # reuse it when you retry this request
    },
    json={
        "reason": "Tournament prize",
        "evidence": [
            "example",
        ],
    },
    timeout=10,
)
data = res.json()
if not res.ok:
    raise RuntimeError(f"{res.status_code} {data['error']}: {data['message']}")
print(data)

שגיאות

Time out a member

POST/guilds/{guildId}/moderation/users/{userId}/timeout

הרשאה: moderation:writeרגישהIdempotency-Key

Same as /timeout: Discord timeout for durationSeconds, a case, DM per the settings. Acts in the name of the key’s creator, who must still have the matching Discord permission; the target must be below their and the bot’s highest role (never the owner, the bot or the creator). The bot runs it within a few seconds — poll GET …/moderation/actions/{actionId}. At most 10 actions a minute per key. Written to the audit log.

נדרש שהפיצ׳ר הזה יהיה מופעל בשרת: ניהול

פרמטרים
שםמיקוםסוגחובהתיאור
guildIdנתיבstringכןהמזהה של השרת שלכם · מזהה דיסקורד (מחרוזת)
userIdנתיבstringכןמזהה הדיסקורד של החבר/ה · מזהה דיסקורד (מחרוזת)
Idempotency-Keyכותרתstringלאלא חובה. שלחו ערך ייחודי (UUID) והשתמשו בו שוב בניסיונות חוזרים — השינוי יקרה פעם אחת בלבד. איך זה עובד

גוף הבקשה

גוף הבקשה
שדהסוגחובהתיאור
reasonstringכןRequired. Shown in the case, the mod log and the member’s DM
1–500 תווים
durationSecondsintegerכן1 minute to 28 days
60–2,419,200
evidencearray of stringלאUp to 5 links
עד 5 פריטים

תשובה

שדות התשובה · 202
שדהסוגחובהתיאור
actionIdstringכן
actionstringכןאחד מ: warn, timeout, untimeout, kick, ban, unban
userIdstringכן
statusstringכןאחד מ: pending, running, done, failed
caseNumberinteger | nullכן
errorstring | nullכןRefusal code when failed (e.g. HIERARCHY_HIGHER, MODERATOR_MISSING_PERMISSION, NOT_BANNED, BOT_MISSING_PERMISSIONS)
requestedAtstring | nullכןISO 8601 date-time
תשובה · 202
{
  "actionId": "234567890123456789",
  "action": "warn",
  "userId": "876543210987654321",
  "status": "pending",
  "caseNumber": 10,
  "error": "example",
  "requestedAt": "2026-10-07T12:00:00.000Z"
}

דוגמאות

curl
curl -s -X POST "https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/users/876543210987654321/timeout" \
  -H "Authorization: Bearer $BOTGG_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"reason":"Tournament prize","durationSeconds":3600,"evidence":["example"]}'
JavaScript (fetch)
// Node.js 18+ (built-in fetch) — on your server, never in a browser
const res = await fetch('https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/users/876543210987654321/timeout', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.BOTGG_API_KEY}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': crypto.randomUUID(), // reuse it when you retry this request
  },
  body: JSON.stringify({
    reason: 'Tournament prize',
    durationSeconds: 3600,
    evidence: [
      'example',
    ],
  }),
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status} ${data.error}: ${data.message}`);
console.log(data);
Python (requests)
import os, uuid
import requests

res = requests.post(
    "https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/users/876543210987654321/timeout",
    headers={
        "Authorization": f"Bearer {os.environ['BOTGG_API_KEY']}",
        "Idempotency-Key": str(uuid.uuid4()),  # reuse it when you retry this request
    },
    json={
        "reason": "Tournament prize",
        "durationSeconds": 3600,
        "evidence": [
            "example",
        ],
    },
    timeout=10,
)
data = res.json()
if not res.ok:
    raise RuntimeError(f"{res.status_code} {data['error']}: {data['message']}")
print(data)

שגיאות

Remove a member’s timeout

POST/guilds/{guildId}/moderation/users/{userId}/untimeout

הרשאה: moderation:writeרגישהIdempotency-Key

Same as /untimeout. Acts in the name of the key’s creator, who must still have the matching Discord permission; the target must be below their and the bot’s highest role (never the owner, the bot or the creator). The bot runs it within a few seconds — poll GET …/moderation/actions/{actionId}. At most 10 actions a minute per key. Written to the audit log.

נדרש שהפיצ׳ר הזה יהיה מופעל בשרת: ניהול

פרמטרים
שםמיקוםסוגחובהתיאור
guildIdנתיבstringכןהמזהה של השרת שלכם · מזהה דיסקורד (מחרוזת)
userIdנתיבstringכןמזהה הדיסקורד של החבר/ה · מזהה דיסקורד (מחרוזת)
Idempotency-Keyכותרתstringלאלא חובה. שלחו ערך ייחודי (UUID) והשתמשו בו שוב בניסיונות חוזרים — השינוי יקרה פעם אחת בלבד. איך זה עובד

גוף הבקשה

גוף הבקשה
שדהסוגחובהתיאור
reasonstringכןRequired. Shown in the case, the mod log and the member’s DM
1–500 תווים

תשובה

שדות התשובה · 202
שדהסוגחובהתיאור
actionIdstringכן
actionstringכןאחד מ: warn, timeout, untimeout, kick, ban, unban
userIdstringכן
statusstringכןאחד מ: pending, running, done, failed
caseNumberinteger | nullכן
errorstring | nullכןRefusal code when failed (e.g. HIERARCHY_HIGHER, MODERATOR_MISSING_PERMISSION, NOT_BANNED, BOT_MISSING_PERMISSIONS)
requestedAtstring | nullכןISO 8601 date-time
תשובה · 202
{
  "actionId": "234567890123456789",
  "action": "warn",
  "userId": "876543210987654321",
  "status": "pending",
  "caseNumber": 10,
  "error": "example",
  "requestedAt": "2026-10-07T12:00:00.000Z"
}

דוגמאות

curl
curl -s -X POST "https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/users/876543210987654321/untimeout" \
  -H "Authorization: Bearer $BOTGG_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"reason":"Tournament prize"}'
JavaScript (fetch)
// Node.js 18+ (built-in fetch) — on your server, never in a browser
const res = await fetch('https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/users/876543210987654321/untimeout', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.BOTGG_API_KEY}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': crypto.randomUUID(), // reuse it when you retry this request
  },
  body: JSON.stringify({
    reason: 'Tournament prize',
  }),
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status} ${data.error}: ${data.message}`);
console.log(data);
Python (requests)
import os, uuid
import requests

res = requests.post(
    "https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/users/876543210987654321/untimeout",
    headers={
        "Authorization": f"Bearer {os.environ['BOTGG_API_KEY']}",
        "Idempotency-Key": str(uuid.uuid4()),  # reuse it when you retry this request
    },
    json={
        "reason": "Tournament prize",
    },
    timeout=10,
)
data = res.json()
if not res.ok:
    raise RuntimeError(f"{res.status_code} {data['error']}: {data['message']}")
print(data)

שגיאות

Kick a member

POST/guilds/{guildId}/moderation/users/{userId}/kick

הרשאה: moderation:writeרגישהIdempotency-Key

Same as /kick: DM (before the kick) per the settings, then the kick and a case. Acts in the name of the key’s creator, who must still have the matching Discord permission; the target must be below their and the bot’s highest role (never the owner, the bot or the creator). The bot runs it within a few seconds — poll GET …/moderation/actions/{actionId}. At most 10 actions a minute per key. Written to the audit log.

נדרש שהפיצ׳ר הזה יהיה מופעל בשרת: ניהול

פרמטרים
שםמיקוםסוגחובהתיאור
guildIdנתיבstringכןהמזהה של השרת שלכם · מזהה דיסקורד (מחרוזת)
userIdנתיבstringכןמזהה הדיסקורד של החבר/ה · מזהה דיסקורד (מחרוזת)
Idempotency-Keyכותרתstringלאלא חובה. שלחו ערך ייחודי (UUID) והשתמשו בו שוב בניסיונות חוזרים — השינוי יקרה פעם אחת בלבד. איך זה עובד

גוף הבקשה

גוף הבקשה
שדהסוגחובהתיאור
reasonstringכןRequired. Shown in the case, the mod log and the member’s DM
1–500 תווים
evidencearray of stringלאUp to 5 links
עד 5 פריטים

תשובה

שדות התשובה · 202
שדהסוגחובהתיאור
actionIdstringכן
actionstringכןאחד מ: warn, timeout, untimeout, kick, ban, unban
userIdstringכן
statusstringכןאחד מ: pending, running, done, failed
caseNumberinteger | nullכן
errorstring | nullכןRefusal code when failed (e.g. HIERARCHY_HIGHER, MODERATOR_MISSING_PERMISSION, NOT_BANNED, BOT_MISSING_PERMISSIONS)
requestedAtstring | nullכןISO 8601 date-time
תשובה · 202
{
  "actionId": "234567890123456789",
  "action": "warn",
  "userId": "876543210987654321",
  "status": "pending",
  "caseNumber": 10,
  "error": "example",
  "requestedAt": "2026-10-07T12:00:00.000Z"
}

דוגמאות

curl
curl -s -X POST "https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/users/876543210987654321/kick" \
  -H "Authorization: Bearer $BOTGG_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"reason":"Tournament prize","evidence":["example"]}'
JavaScript (fetch)
// Node.js 18+ (built-in fetch) — on your server, never in a browser
const res = await fetch('https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/users/876543210987654321/kick', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.BOTGG_API_KEY}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': crypto.randomUUID(), // reuse it when you retry this request
  },
  body: JSON.stringify({
    reason: 'Tournament prize',
    evidence: [
      'example',
    ],
  }),
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status} ${data.error}: ${data.message}`);
console.log(data);
Python (requests)
import os, uuid
import requests

res = requests.post(
    "https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/users/876543210987654321/kick",
    headers={
        "Authorization": f"Bearer {os.environ['BOTGG_API_KEY']}",
        "Idempotency-Key": str(uuid.uuid4()),  # reuse it when you retry this request
    },
    json={
        "reason": "Tournament prize",
        "evidence": [
            "example",
        ],
    },
    timeout=10,
)
data = res.json()
if not res.ok:
    raise RuntimeError(f"{res.status_code} {data['error']}: {data['message']}")
print(data)

שגיאות

Ban a user

POST/guilds/{guildId}/moderation/users/{userId}/ban

הרשאה: moderation:writeרגישהIdempotency-Key

Same as /ban: with durationSeconds a temporary ban the bot lifts automatically; deleteMessageSeconds deletes recent messages. Works for users who already left. Acts in the name of the key’s creator, who must still have the matching Discord permission; the target must be below their and the bot’s highest role (never the owner, the bot or the creator). The bot runs it within a few seconds — poll GET …/moderation/actions/{actionId}. At most 10 actions a minute per key. Written to the audit log.

נדרש שהפיצ׳ר הזה יהיה מופעל בשרת: ניהול

פרמטרים
שםמיקוםסוגחובהתיאור
guildIdנתיבstringכןהמזהה של השרת שלכם · מזהה דיסקורד (מחרוזת)
userIdנתיבstringכןמזהה הדיסקורד של החבר/ה · מזהה דיסקורד (מחרוזת)
Idempotency-Keyכותרתstringלאלא חובה. שלחו ערך ייחודי (UUID) והשתמשו בו שוב בניסיונות חוזרים — השינוי יקרה פעם אחת בלבד. איך זה עובד

גוף הבקשה

גוף הבקשה
שדהסוגחובהתיאור
reasonstringכןRequired. Shown in the case, the mod log and the member’s DM
1–500 תווים
deleteMessageSecondsintegerלאDelete the user’s messages of the last N seconds (≤ 7 days)
0–604,800
durationSecondsinteger | nullלאTemporary ban (≤ 365 days); omit for a permanent ban
60–31,536,000
evidencearray of stringלאUp to 5 links
עד 5 פריטים

תשובה

שדות התשובה · 202
שדהסוגחובהתיאור
actionIdstringכן
actionstringכןאחד מ: warn, timeout, untimeout, kick, ban, unban
userIdstringכן
statusstringכןאחד מ: pending, running, done, failed
caseNumberinteger | nullכן
errorstring | nullכןRefusal code when failed (e.g. HIERARCHY_HIGHER, MODERATOR_MISSING_PERMISSION, NOT_BANNED, BOT_MISSING_PERMISSIONS)
requestedAtstring | nullכןISO 8601 date-time
תשובה · 202
{
  "actionId": "234567890123456789",
  "action": "warn",
  "userId": "876543210987654321",
  "status": "pending",
  "caseNumber": 10,
  "error": "example",
  "requestedAt": "2026-10-07T12:00:00.000Z"
}

דוגמאות

curl
curl -s -X POST "https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/users/876543210987654321/ban" \
  -H "Authorization: Bearer $BOTGG_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"reason":"Tournament prize","deleteMessageSeconds":3600,"durationSeconds":3600,"evidence":["example"]}'
JavaScript (fetch)
// Node.js 18+ (built-in fetch) — on your server, never in a browser
const res = await fetch('https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/users/876543210987654321/ban', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.BOTGG_API_KEY}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': crypto.randomUUID(), // reuse it when you retry this request
  },
  body: JSON.stringify({
    reason: 'Tournament prize',
    deleteMessageSeconds: 3600,
    durationSeconds: 3600,
    evidence: [
      'example',
    ],
  }),
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status} ${data.error}: ${data.message}`);
console.log(data);
Python (requests)
import os, uuid
import requests

res = requests.post(
    "https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/users/876543210987654321/ban",
    headers={
        "Authorization": f"Bearer {os.environ['BOTGG_API_KEY']}",
        "Idempotency-Key": str(uuid.uuid4()),  # reuse it when you retry this request
    },
    json={
        "reason": "Tournament prize",
        "deleteMessageSeconds": 3600,
        "durationSeconds": 3600,
        "evidence": [
            "example",
        ],
    },
    timeout=10,
)
data = res.json()
if not res.ok:
    raise RuntimeError(f"{res.status_code} {data['error']}: {data['message']}")
print(data)

שגיאות

Unban a user

POST/guilds/{guildId}/moderation/users/{userId}/unban

הרשאה: moderation:writeרגישהIdempotency-Key

Same as /unban (ends a running tempban). 409 NOT_BANNED when the user isn’t banned. Acts in the name of the key’s creator, who must still have the matching Discord permission; the target must be below their and the bot’s highest role (never the owner, the bot or the creator). The bot runs it within a few seconds — poll GET …/moderation/actions/{actionId}. At most 10 actions a minute per key. Written to the audit log.

נדרש שהפיצ׳ר הזה יהיה מופעל בשרת: ניהול

פרמטרים
שםמיקוםסוגחובהתיאור
guildIdנתיבstringכןהמזהה של השרת שלכם · מזהה דיסקורד (מחרוזת)
userIdנתיבstringכןמזהה הדיסקורד של החבר/ה · מזהה דיסקורד (מחרוזת)
Idempotency-Keyכותרתstringלאלא חובה. שלחו ערך ייחודי (UUID) והשתמשו בו שוב בניסיונות חוזרים — השינוי יקרה פעם אחת בלבד. איך זה עובד

גוף הבקשה

גוף הבקשה
שדהסוגחובהתיאור
reasonstringכןRequired. Shown in the case, the mod log and the member’s DM
1–500 תווים

תשובה

שדות התשובה · 202
שדהסוגחובהתיאור
actionIdstringכן
actionstringכןאחד מ: warn, timeout, untimeout, kick, ban, unban
userIdstringכן
statusstringכןאחד מ: pending, running, done, failed
caseNumberinteger | nullכן
errorstring | nullכןRefusal code when failed (e.g. HIERARCHY_HIGHER, MODERATOR_MISSING_PERMISSION, NOT_BANNED, BOT_MISSING_PERMISSIONS)
requestedAtstring | nullכןISO 8601 date-time
תשובה · 202
{
  "actionId": "234567890123456789",
  "action": "warn",
  "userId": "876543210987654321",
  "status": "pending",
  "caseNumber": 10,
  "error": "example",
  "requestedAt": "2026-10-07T12:00:00.000Z"
}

דוגמאות

curl
curl -s -X POST "https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/users/876543210987654321/unban" \
  -H "Authorization: Bearer $BOTGG_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"reason":"Tournament prize"}'
JavaScript (fetch)
// Node.js 18+ (built-in fetch) — on your server, never in a browser
const res = await fetch('https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/users/876543210987654321/unban', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.BOTGG_API_KEY}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': crypto.randomUUID(), // reuse it when you retry this request
  },
  body: JSON.stringify({
    reason: 'Tournament prize',
  }),
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status} ${data.error}: ${data.message}`);
console.log(data);
Python (requests)
import os, uuid
import requests

res = requests.post(
    "https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/users/876543210987654321/unban",
    headers={
        "Authorization": f"Bearer {os.environ['BOTGG_API_KEY']}",
        "Idempotency-Key": str(uuid.uuid4()),  # reuse it when you retry this request
    },
    json={
        "reason": "Tournament prize",
    },
    timeout=10,
)
data = res.json()
if not res.ok:
    raise RuntimeError(f"{res.status_code} {data['error']}: {data['message']}")
print(data)

שגיאות

Get the result of a moderation action

GET/guilds/{guildId}/moderation/actions/{actionId}

הרשאה: moderation:writeרגישה

Only actions made with the same API key. done → caseNumber; failed → error (the bot re-checks everything right before acting).

נדרש שהפיצ׳ר הזה יהיה מופעל בשרת: ניהול

פרמטרים
שםמיקוםסוגחובהתיאור
guildIdנתיבstringכןהמזהה של השרת שלכם · מזהה דיסקורד (מחרוזת)
actionIdנתיבstringכן

תשובה

שדות התשובה · 200
שדהסוגחובהתיאור
actionIdstringכן
actionstringכןאחד מ: warn, timeout, untimeout, kick, ban, unban
userIdstringכן
statusstringכןאחד מ: pending, running, done, failed
caseNumberinteger | nullכן
errorstring | nullכןRefusal code when failed (e.g. HIERARCHY_HIGHER, MODERATOR_MISSING_PERMISSION, NOT_BANNED, BOT_MISSING_PERMISSIONS)
requestedAtstring | nullכןISO 8601 date-time
תשובה · 200
{
  "actionId": "234567890123456789",
  "action": "warn",
  "userId": "876543210987654321",
  "status": "pending",
  "caseNumber": 10,
  "error": "example",
  "requestedAt": "2026-10-07T12:00:00.000Z"
}

דוגמאות

curl
curl -s "https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/actions/234567890123456789" \
  -H "Authorization: Bearer $BOTGG_API_KEY"
JavaScript (fetch)
// Node.js 18+ (built-in fetch) — on your server, never in a browser
const res = await fetch('https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/actions/234567890123456789', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.BOTGG_API_KEY}`,
  },
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status} ${data.error}: ${data.message}`);
console.log(data);
Python (requests)
import os
import requests

res = requests.get(
    "https://console.botgg.app/api/v1/guilds/123456789012345678/moderation/actions/234567890123456789",
    headers={
        "Authorization": f"Bearer {os.environ['BOTGG_API_KEY']}",
    },
    timeout=10,
)
data = res.json()
if not res.ok:
    raise RuntimeError(f"{res.status_code} {data['error']}: {data['message']}")
print(data)

שגיאות

מוכנים לשדרג את השרת?

מוסיפים את BotGG בחינם ומפעילים יכולות בקונסולת הווב.