Быстрый старт по интеграциям
Интеграции предназначены для внешних систем, которым нужно выполнять действия внутри сервера Chattr по Bearer-токену.
Основные сценарии
- синхронизация ролей участников
- обновление никнеймов
- автоматизация модерационных действий
Как это работает
- Откройте страницу сервера в портале разработчика.
- Создайте интеграцию.
- Выпустите токен с нужными scope.
- Используйте токен при вызове management API.
Доступные scope токенов
manage_members— управление ролями, никнеймами, таймаутамиread_member_profile— чтение профиля участника
Примеры кода
Чтение профиля участника
cURL
curl "https://chattr.example.com/servers/SERVER_ID/memberships/USER_ID" \
-H "Authorization: Bearer YOUR_TOKEN"
JavaScript (Node.js)
const BASE = "https://chattr.example.com";
const TOKEN = "YOUR_TOKEN";
const SERVER = "SERVER_ID";
const USER = "USER_ID";
const res = await fetch(`${BASE}/servers/${SERVER}/memberships/${USER}`, {
headers: { "Authorization": `Bearer ${TOKEN}` }
});
const data = await res.json();
console.log(data.profile);
Python
import requests
BASE = "https://chattr.example.com"
TOKEN = "YOUR_TOKEN"
SERVER = "SERVER_ID"
USER = "USER_ID"
res = requests.get(
f"{BASE}/servers/{SERVER}/memberships/{USER}",
headers={"Authorization": f"Bearer {TOKEN}"}
)
data = res.json()
print(data["profile"])
Обновление участника
cURL
curl -X PATCH "https://chattr.example.com/servers/SERVER_ID/memberships/USER_ID" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"nickname": "VIP Player", "roleIds": [7, 9]}'
JavaScript (Node.js)
const BASE = "https://chattr.example.com";
const TOKEN = "YOUR_TOKEN";
const SERVER = "SERVER_ID";
const USER = "USER_ID";
const res = await fetch(`${BASE}/servers/${SERVER}/memberships/${USER}`, {
method: "PATCH",
headers: {
"Authorization": `Bearer ${TOKEN}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
nickname: "VIP Player",
roleIds: [7, 9],
timedOutUntil: null // необязательно: ISO 8601 или null
})
});
const data = await res.json();
console.log(data.membership);
Python
import requests
BASE = "https://chattr.example.com"
TOKEN = "YOUR_TOKEN"
SERVER = "SERVER_ID"
USER = "USER_ID"
res = requests.patch(
f"{BASE}/servers/{SERVER}/memberships/{USER}",
headers={
"Authorization": f"Bearer {TOKEN}",
"Content-Type": "application/json"
},
json={
"nickname": "VIP Player",
"roleIds": [7, 9],
"timedOutUntil": None # необязательно: ISO 8601 или None
}
)
data = res.json()
print(data["membership"])
Go
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
url := "https://chattr.example.com/servers/SERVER_ID/memberships/USER_ID"
token := "YOUR_TOKEN"
body, _ := json.Marshal(map[string]any{
"nickname": "VIP Player",
"roleIds": []int{7, 9},
})
req, _ := http.NewRequest("PATCH", url, bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer "+token)
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Status:", resp.StatusCode)
}
PHP
$url = "https://chattr.example.com/servers/SERVER_ID/memberships/USER_ID";
$token = "YOUR_TOKEN";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PATCH");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer $token",
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
"nickname" => "VIP Player",
"roleIds" => [7, 9],
"timedOutUntil" => null // необязательно
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data["membership"]);
Права доступа
Для создания и управления интеграциями требуется право manage_server на целевом сервере. Владельцы серверов и администраторы получают это право автоматически.
Ограничения доступа
- Интеграции всегда привязаны к конкретному серверу.
- Scope ограничивают действия токена.
- Токен показывается только один раз сразу после создания.