REST API v1 · למפתחים · מדריך עיון ל-API
מדריך עיון ל-API: הגרלות
כל 6 נקודות הקצה של הגרלות ב-REST API v1 של BotGG: הרשאות, פרמטרים, שדות, שגיאות ודוגמאות מוכנות ב-curl, JavaScript ו-Python.
תיעוד למפתחים
בעמוד הזה
נקודות קצה
הנתיבים יחסיים ל-https://console.botgg.app/api/v1. שלחו את מפתח ה-API בכותרת Authorization: Bearer botgg_…; מזהים הם מחרוזות.
| נקודת קצה | הרשאה | תיאור |
|---|---|---|
GET/guilds/{guildId}/giveaways | giveaways:read | List giveaways |
POST/guilds/{guildId}/giveaways | giveaways:write | Start a giveaway |
GET/guilds/{guildId}/giveaways/{giveawayId} | giveaways:read | Get a giveaway |
GET/guilds/{guildId}/giveaways/{giveawayId}/entries | giveaways:read | List a giveaway’s entrants |
POST/guilds/{guildId}/giveaways/{giveawayId}/end | giveaways:write | End a giveaway now |
POST/guilds/{guildId}/giveaways/{giveawayId}/reroll | giveaways:write | Reroll winners |
מלבד השגיאות הייחודיות שלה (בהמשך), כל נקודת קצה יכולה להחזיר את השגיאות הכלליות האלה:
List giveaways
GET/guilds/{guildId}/giveaways
status: active, scheduled, ended, cancelled or open (= scheduled + active). Running ones by end time, others newest first.
נדרש שהפיצ׳ר הזה יהיה מופעל בשרת: הגרלות
| שם | מיקום | סוג | חובה | תיאור |
|---|---|---|---|---|
guildId | נתיב | string | כן | המזהה של השרת שלכם · מזהה דיסקורד (מחרוזת) |
status | query | string | לא | אחד מ: scheduled, active, ended, cancelled, open |
page | query | integer | לא | 1–10,000 · ברירת מחדל 1 |
limit | query | integer | לא | 1–100 · ברירת מחדל 25 |
תשובה
| שדה | סוג | חובה | תיאור |
|---|---|---|---|
items | array of object | כן | |
items[].id | integer | כן | |
items[].status | string | כן | אחד מ: scheduled, active, ended, cancelled |
items[].prize | string | כן | |
items[].description | string | null | כן | |
items[].channelId | string | כן | |
items[].messageUrl | string | null | כן | null until the bot posted it |
items[].winnersCount | integer | כן | |
items[].startsAt | string | כן | |
items[].endsAt | string | כן | |
items[].endedAt | string | null | כן | |
items[].entrants | integer | כן | |
items[].entries | integer | כן | Tickets incl. bonus entries |
items[].winnerIds | array of string | כן | |
items[].hostId | string | כן | |
items[].requirements | object | כן | |
items[].pingRoleId | string | null | כן | |
items[].dmWinners | boolean | כן | |
items[].createdAt | string | כן | |
total | integer | כן | |
page | integer | כן | |
nextPage | integer | null | כן |
{
"items": [
{
"id": 98765,
"status": "scheduled",
"prize": "Nitro",
"description": "example",
"channelId": "234567890123456789",
"messageUrl": "https://example.com",
"winnersCount": 10,
"startsAt": "2026-10-07T12:00:00.000Z",
"endsAt": "2026-10-07T12:00:00.000Z",
"endedAt": "2026-10-07T12:00:00.000Z",
"entrants": 42,
"entries": 10,
"winnerIds": [
"234567890123456789"
],
"hostId": "234567890123456789",
"requirements": {},
"pingRoleId": "234567890123456789",
"dmWinners": true,
"createdAt": "2026-10-07T12:00:00.000Z"
}
],
"total": 10,
"page": 10,
"nextPage": 10
}דוגמאות
curl -s "https://console.botgg.app/api/v1/guilds/123456789012345678/giveaways?page=1&limit=25" \
-H "Authorization: Bearer $BOTGG_API_KEY"// 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/giveaways?page=1&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);import os
import requests
res = requests.get(
"https://console.botgg.app/api/v1/guilds/123456789012345678/giveaways",
headers={
"Authorization": f"Bearer {os.environ['BOTGG_API_KEY']}",
},
params={
"page": 1,
"limit": 25,
},
timeout=10,
)
data = res.json()
if not res.ok:
raise RuntimeError(f"{res.status_code} {data['error']}: {data['message']}")
print(data)שגיאות
| HTTP | קודים |
|---|---|
| 409 | FEATURE_DISABLED |
| 503 | SERVICE_UNAVAILABLE |
Start a giveaway
POST/guilds/{guildId}/giveaways
Saved as scheduled; the bot posts it in the channel within ~10 s (or at startsAt). Same rules as the console editor. Look and DM setting default to the server’s Giveaways settings.
נדרש שהפיצ׳ר הזה יהיה מופעל בשרת: הגרלות
| שם | מיקום | סוג | חובה | תיאור |
|---|---|---|---|---|
guildId | נתיב | string | כן | המזהה של השרת שלכם · מזהה דיסקורד (מחרוזת) |
Idempotency-Key | כותרת | string | לא | לא חובה. שלחו ערך ייחודי (UUID) והשתמשו בו שוב בניסיונות חוזרים — השינוי יקרה פעם אחת בלבד. איך זה עובד |
גוף הבקשה
| שדה | סוג | חובה | תיאור |
|---|---|---|---|
channelId | string | כן | מזהה דיסקורד (מחרוזת) |
prize | string | כן | 1–200 תווים |
description | string | null | לא | עד 1,000 תווים |
winners | integer | לא | Default 1 1–50 |
startsAt | string | null | לא | ISO 8601; omitted / null = start now תאריך ושעה ב-ISO 8601 (UTC) |
endsAt | string | לא | ISO 8601; or send durationSeconds תאריך ושעה ב-ISO 8601 (UTC) |
durationSeconds | integer | לא | From the start; or send endsAt 60–5,184,000 |
requirements | object | לא | Required / blocked roles, account and member age, level, entry cost, bonus roles |
requirements.roleIds | array of string | לא | עד 20 פריטים · ברירת מחדל [] |
requirements.roleMode | string | לא | אחד מ: any, all · ברירת מחדל "any" |
requirements.blockedRoleIds | array of string | לא | עד 20 פריטים · ברירת מחדל [] |
requirements.minAccountAgeDays | integer | לא | 0–3,650 · ברירת מחדל 0 |
requirements.minMemberDays | integer | לא | 0–3,650 · ברירת מחדל 0 |
requirements.minLevel | integer | לא | 0–1,000 · ברירת מחדל 0 |
requirements.entryCost | integer | לא | 0–1,000,000,000 · ברירת מחדל 0 |
requirements.bonusRoles | array of object | לא | עד 10 פריטים · ברירת מחדל [] |
requirements.bonusRoles[].roleId | string | כן | מזהה דיסקורד (מחרוזת) |
requirements.bonusRoles[].entries | integer | כן | 2–10 |
embed | object | לא | Default: the server’s Giveaways look |
embed.color | string | לא | ברירת מחדל "#D94CFF" |
embed.endedColor | string | לא | ברירת מחדל "#4E5058" |
embed.emoji | string | לא | 1–64 תווים · ברירת מחדל "🎉" |
embed.imageUrl | string | null | לא | עד 500 תווים · ברירת מחדל null |
embed.thumbnailUrl | string | null | לא | עד 500 תווים · ברירת מחדל null |
pingRoleId | string | null | לא | מזהה דיסקורד (מחרוזת) |
dmWinners | boolean | לא | Default: the server setting |
hostId | string | null | לא | Shown as the host; default: the API key’s creator מזהה דיסקורד (מחרוזת) |
תשובה
| שדה | סוג | חובה | תיאור |
|---|---|---|---|
id | integer | כן | |
status | string | כן | אחד מ: scheduled, active, ended, cancelled |
prize | string | כן | |
description | string | null | כן | |
channelId | string | כן | |
messageUrl | string | null | כן | null until the bot posted it |
winnersCount | integer | כן | |
startsAt | string | כן | |
endsAt | string | כן | |
endedAt | string | null | כן | |
entrants | integer | כן | |
entries | integer | כן | Tickets incl. bonus entries |
winnerIds | array of string | כן | |
hostId | string | כן | |
requirements | object | כן | |
pingRoleId | string | null | כן | |
dmWinners | boolean | כן | |
createdAt | string | כן |
{
"id": 98765,
"status": "scheduled",
"prize": "Nitro",
"description": "example",
"channelId": "234567890123456789",
"messageUrl": "https://example.com",
"winnersCount": 10,
"startsAt": "2026-10-07T12:00:00.000Z",
"endsAt": "2026-10-07T12:00:00.000Z",
"endedAt": "2026-10-07T12:00:00.000Z",
"entrants": 42,
"entries": 10,
"winnerIds": [
"234567890123456789"
],
"hostId": "234567890123456789",
"requirements": {},
"pingRoleId": "234567890123456789",
"dmWinners": true,
"createdAt": "2026-10-07T12:00:00.000Z"
}דוגמאות
curl -s -X POST "https://console.botgg.app/api/v1/guilds/123456789012345678/giveaways" \
-H "Authorization: Bearer $BOTGG_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"channelId":"234567890123456789","prize":"Nitro","description":"example","winners":1,"startsAt":"2026-10-07T12:00:00.000Z","endsAt":"2026-10-07T12:00:00.000Z","durationSeconds":3600,"requirements":{"roleIds":[],"roleMode":"any","blockedRoleIds":[],"minAccountAgeDays":0,"minMemberDays":0,"minLevel":0,"entryCost":0,"bonusRoles":[]},"embed":{"color":"#D94CFF","endedColor":"#4E5058","emoji":"🎉","imageUrl":"https://example.com","thumbnailUrl":"https://example.com"},"pingRoleId":"234567890123456789","dmWinners":true,"hostId":"234567890123456789"}'// 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/giveaways', {
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({
channelId: '234567890123456789',
prize: 'Nitro',
description: 'example',
winners: 1,
startsAt: '2026-10-07T12:00:00.000Z',
endsAt: '2026-10-07T12:00:00.000Z',
durationSeconds: 3600,
requirements: {
roleIds: [],
roleMode: 'any',
blockedRoleIds: [],
minAccountAgeDays: 0,
minMemberDays: 0,
minLevel: 0,
entryCost: 0,
bonusRoles: [],
},
embed: {
color: '#D94CFF',
endedColor: '#4E5058',
emoji: '🎉',
imageUrl: 'https://example.com',
thumbnailUrl: 'https://example.com',
},
pingRoleId: '234567890123456789',
dmWinners: true,
hostId: '234567890123456789',
}),
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status} ${data.error}: ${data.message}`);
console.log(data);import os, uuid
import requests
res = requests.post(
"https://console.botgg.app/api/v1/guilds/123456789012345678/giveaways",
headers={
"Authorization": f"Bearer {os.environ['BOTGG_API_KEY']}",
"Idempotency-Key": str(uuid.uuid4()), # reuse it when you retry this request
},
json={
"channelId": "234567890123456789",
"prize": "Nitro",
"description": "example",
"winners": 1,
"startsAt": "2026-10-07T12:00:00.000Z",
"endsAt": "2026-10-07T12:00:00.000Z",
"durationSeconds": 3600,
"requirements": {
"roleIds": [],
"roleMode": "any",
"blockedRoleIds": [],
"minAccountAgeDays": 0,
"minMemberDays": 0,
"minLevel": 0,
"entryCost": 0,
"bonusRoles": [],
},
"embed": {
"color": "#D94CFF",
"endedColor": "#4E5058",
"emoji": "🎉",
"imageUrl": "https://example.com",
"thumbnailUrl": "https://example.com",
},
"pingRoleId": "234567890123456789",
"dmWinners": True,
"hostId": "234567890123456789",
},
timeout=10,
)
data = res.json()
if not res.ok:
raise RuntimeError(f"{res.status_code} {data['error']}: {data['message']}")
print(data)שגיאות
| HTTP | קודים |
|---|---|
| 400 | INVALID_JSON |
| 402 | PLAN_LIMIT |
| 409 | FEATURE_DISABLED, BANK_DISABLED |
| 413 | PAYLOAD_TOO_LARGE |
| 415 | UNSUPPORTED_MEDIA_TYPE |
| 422 | IDEMPOTENCY_KEY_REUSED |
| 503 | SERVICE_UNAVAILABLE |
Get a giveaway
GET/guilds/{guildId}/giveaways/{giveawayId}
With entry counts, winners per draw and the latest queued actions (to follow an end / reroll).
נדרש שהפיצ׳ר הזה יהיה מופעל בשרת: הגרלות
| שם | מיקום | סוג | חובה | תיאור |
|---|---|---|---|---|
guildId | נתיב | string | כן | המזהה של השרת שלכם · מזהה דיסקורד (מחרוזת) |
giveawayId | נתיב | string | כן |
תשובה
| שדה | סוג | חובה | תיאור |
|---|---|---|---|
id | integer | כן | |
status | string | כן | אחד מ: scheduled, active, ended, cancelled |
prize | string | כן | |
description | string | null | כן | |
channelId | string | כן | |
messageUrl | string | null | כן | null until the bot posted it |
winnersCount | integer | כן | |
startsAt | string | כן | |
endsAt | string | כן | |
endedAt | string | null | כן | |
entrants | integer | כן | |
entries | integer | כן | Tickets incl. bonus entries |
winnerIds | array of string | כן | |
hostId | string | כן | |
requirements | object | כן | |
pingRoleId | string | null | כן | |
dmWinners | boolean | כן | |
createdAt | string | כן | |
winners | array of object | כן | |
winners[].userId | string | כן | |
winners[].draw | integer | כן | 0 = the end draw, 1.. = rerolls |
winners[].drawnAt | string | כן | |
actions | array of object | כן | The latest queued actions (end / reroll / …), newest first |
actions[].id | integer | כן | |
actions[].action | string | כן | |
actions[].status | string | כן | אחד מ: pending, processing, done, failed |
actions[].error | string | null | כן | |
actions[].createdAt | string | כן | |
actions[].processedAt | string | null | כן |
{
"id": 98765,
"status": "scheduled",
"prize": "Nitro",
"description": "example",
"channelId": "234567890123456789",
"messageUrl": "https://example.com",
"winnersCount": 10,
"startsAt": "2026-10-07T12:00:00.000Z",
"endsAt": "2026-10-07T12:00:00.000Z",
"endedAt": "2026-10-07T12:00:00.000Z",
"entrants": 42,
"entries": 10,
"winnerIds": [
"234567890123456789"
],
"hostId": "234567890123456789",
"requirements": {},
"pingRoleId": "234567890123456789",
"dmWinners": true,
"createdAt": "2026-10-07T12:00:00.000Z",
"winners": [
{
"userId": "876543210987654321",
"draw": 10,
"drawnAt": "2026-10-07T12:00:00.000Z"
}
],
"actions": [
{
"id": 98765,
"action": "example",
"status": "pending",
"error": "example",
"createdAt": "2026-10-07T12:00:00.000Z",
"processedAt": "2026-10-07T12:00:00.000Z"
}
]
}דוגמאות
curl -s "https://console.botgg.app/api/v1/guilds/123456789012345678/giveaways/234567890123456789" \
-H "Authorization: Bearer $BOTGG_API_KEY"// 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/giveaways/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);import os
import requests
res = requests.get(
"https://console.botgg.app/api/v1/guilds/123456789012345678/giveaways/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 | קודים |
|---|---|
| 404 | GIVEAWAY_NOT_FOUND |
| 409 | FEATURE_DISABLED |
| 503 | SERVICE_UNAVAILABLE |
List a giveaway’s entrants
GET/guilds/{guildId}/giveaways/{giveawayId}/entries
Ordered by user id. Pass after=<nextCursor> for the next page. weight = tickets (bonus roles), paid = entry cost paid.
נדרש שהפיצ׳ר הזה יהיה מופעל בשרת: הגרלות
| שם | מיקום | סוג | חובה | תיאור |
|---|---|---|---|---|
guildId | נתיב | string | כן | המזהה של השרת שלכם · מזהה דיסקורד (מחרוזת) |
giveawayId | נתיב | string | כן | |
limit | query | integer | לא | 1–100 · ברירת מחדל 50 |
after | query | string | לא | מזהה דיסקורד (מחרוזת) |
תשובה
| שדה | סוג | חובה | תיאור |
|---|---|---|---|
items | array of object | כן | |
items[].userId | string | כן | |
items[].weight | integer | כן | |
items[].paid | integer | כן | |
items[].enteredAt | string | כן | |
nextCursor | string | null | כן |
{
"items": [
{
"userId": "876543210987654321",
"weight": 10,
"paid": 10,
"enteredAt": "2026-10-07T12:00:00.000Z"
}
],
"nextCursor": "98700"
}דוגמאות
curl -s "https://console.botgg.app/api/v1/guilds/123456789012345678/giveaways/234567890123456789/entries?limit=50" \
-H "Authorization: Bearer $BOTGG_API_KEY"// 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/giveaways/234567890123456789/entries?limit=50', {
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);import os
import requests
res = requests.get(
"https://console.botgg.app/api/v1/guilds/123456789012345678/giveaways/234567890123456789/entries",
headers={
"Authorization": f"Bearer {os.environ['BOTGG_API_KEY']}",
},
params={
"limit": 50,
},
timeout=10,
)
data = res.json()
if not res.ok:
raise RuntimeError(f"{res.status_code} {data['error']}: {data['message']}")
print(data)שגיאות
| HTTP | קודים |
|---|---|
| 404 | GIVEAWAY_NOT_FOUND |
| 409 | FEATURE_DISABLED |
| 503 | SERVICE_UNAVAILABLE |
End a giveaway now
POST/guilds/{guildId}/giveaways/{giveawayId}/end
Queued for the bot, which draws the winners and announces them within ~5 s (202). Follow it with GET …/giveaways/{giveawayId}.
נדרש שהפיצ׳ר הזה יהיה מופעל בשרת: הגרלות
| שם | מיקום | סוג | חובה | תיאור |
|---|---|---|---|---|
guildId | נתיב | string | כן | המזהה של השרת שלכם · מזהה דיסקורד (מחרוזת) |
giveawayId | נתיב | string | כן | |
Idempotency-Key | כותרת | string | לא | לא חובה. שלחו ערך ייחודי (UUID) והשתמשו בו שוב בניסיונות חוזרים — השינוי יקרה פעם אחת בלבד. איך זה עובד |
תשובה
| שדה | סוג | חובה | תיאור |
|---|---|---|---|
giveawayId | integer | כן | |
action | object | כן | |
action.id | integer | כן | |
action.action | string | כן | |
action.status | string | כן | אחד מ: pending, processing, done, failed |
action.error | string | null | כן | |
action.createdAt | string | כן | |
action.processedAt | string | null | כן |
{
"giveawayId": 98765,
"action": {
"id": 98765,
"action": "example",
"status": "pending",
"error": "example",
"createdAt": "2026-10-07T12:00:00.000Z",
"processedAt": "2026-10-07T12:00:00.000Z"
}
}דוגמאות
curl -s -X POST "https://console.botgg.app/api/v1/guilds/123456789012345678/giveaways/234567890123456789/end" \
-H "Authorization: Bearer $BOTGG_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"// 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/giveaways/234567890123456789/end', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.BOTGG_API_KEY}`,
'Idempotency-Key': crypto.randomUUID(), // reuse it when you retry this request
},
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status} ${data.error}: ${data.message}`);
console.log(data);import os, uuid
import requests
res = requests.post(
"https://console.botgg.app/api/v1/guilds/123456789012345678/giveaways/234567890123456789/end",
headers={
"Authorization": f"Bearer {os.environ['BOTGG_API_KEY']}",
"Idempotency-Key": str(uuid.uuid4()), # reuse it when you retry this request
},
timeout=10,
)
data = res.json()
if not res.ok:
raise RuntimeError(f"{res.status_code} {data['error']}: {data['message']}")
print(data)שגיאות
| HTTP | קודים |
|---|---|
| 404 | GIVEAWAY_NOT_FOUND |
| 409 | FEATURE_DISABLED, GIVEAWAY_BAD_STATE |
| 422 | IDEMPOTENCY_KEY_REUSED |
| 503 | SERVICE_UNAVAILABLE |
Reroll winners
POST/guilds/{guildId}/giveaways/{giveawayId}/reroll
For an ended giveaway: the bot draws count new winners (never someone who already won) within ~5 s (202).
נדרש שהפיצ׳ר הזה יהיה מופעל בשרת: הגרלות
| שם | מיקום | סוג | חובה | תיאור |
|---|---|---|---|---|
guildId | נתיב | string | כן | המזהה של השרת שלכם · מזהה דיסקורד (מחרוזת) |
giveawayId | נתיב | string | כן | |
Idempotency-Key | כותרת | string | לא | לא חובה. שלחו ערך ייחודי (UUID) והשתמשו בו שוב בניסיונות חוזרים — השינוי יקרה פעם אחת בלבד. איך זה עובד |
גוף הבקשה
| שדה | סוג | חובה | תיאור |
|---|---|---|---|
count | integer | לא | Default 1 1–20 |
תשובה
| שדה | סוג | חובה | תיאור |
|---|---|---|---|
giveawayId | integer | כן | |
action | object | כן | |
action.id | integer | כן | |
action.action | string | כן | |
action.status | string | כן | אחד מ: pending, processing, done, failed |
action.error | string | null | כן | |
action.createdAt | string | כן | |
action.processedAt | string | null | כן |
{
"giveawayId": 98765,
"action": {
"id": 98765,
"action": "example",
"status": "pending",
"error": "example",
"createdAt": "2026-10-07T12:00:00.000Z",
"processedAt": "2026-10-07T12:00:00.000Z"
}
}דוגמאות
curl -s -X POST "https://console.botgg.app/api/v1/guilds/123456789012345678/giveaways/234567890123456789/reroll" \
-H "Authorization: Bearer $BOTGG_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"count":12}'// 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/giveaways/234567890123456789/reroll', {
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({
count: 12,
}),
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status} ${data.error}: ${data.message}`);
console.log(data);import os, uuid
import requests
res = requests.post(
"https://console.botgg.app/api/v1/guilds/123456789012345678/giveaways/234567890123456789/reroll",
headers={
"Authorization": f"Bearer {os.environ['BOTGG_API_KEY']}",
"Idempotency-Key": str(uuid.uuid4()), # reuse it when you retry this request
},
json={
"count": 12,
},
timeout=10,
)
data = res.json()
if not res.ok:
raise RuntimeError(f"{res.status_code} {data['error']}: {data['message']}")
print(data)שגיאות
| HTTP | קודים |
|---|---|
| 400 | INVALID_JSON |
| 404 | GIVEAWAY_NOT_FOUND |
| 409 | FEATURE_DISABLED, GIVEAWAY_BAD_STATE |
| 413 | PAYLOAD_TOO_LARGE |
| 415 | UNSUPPORTED_MEDIA_TYPE |
| 422 | IDEMPOTENCY_KEY_REUSED |
| 503 | SERVICE_UNAVAILABLE |