Боты для Discord работают в Кличате
API Кличата повторяет API Discord, поэтому бот на discord.js или discord.py подключается сменой адреса. Переписывать команды и обработчики не нужно.
Адреса
| Что | Адрес |
|---|---|
| REST API | https://klichat.ru/api — пути /api/v9 и /api/v10 тоже работают |
| Шлюз WebSocket | wss://klichat.ru/gateway — библиотека получает его сама из GET /gateway/bot |
| Заголовок | Authorization: Bot <токен> |
Как получить токен
- Включите двухфакторную защиту в разделе Настройки → Моя учётная запись: без неё приложение не создать.
- Откройте Настройки → Разработчикам → Боты, создайте приложение и бота, скопируйте токен.
- Если боту нужны список участников, присутствие или текст сообщений, включите соответствующие привилегированные intents в настройках приложения. Без них шлюз закроет сессию кодом 4014.
- Отметьте права и добавьте бота на свой сервер по ссылке из того же раздела.
discord.js
Достаточно указать адрес REST. Адрес шлюза библиотека возьмёт из ответа API.
const { Client, GatewayIntentBits } = require('discord.js')
const client = new Client({
intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent],
rest: { api: 'https://klichat.ru/api' },
})
client.on('messageCreate', (m) => {
if (m.content === '!пинг') m.reply('понг')
})
client.login(process.env.KLICHAT_BOT_TOKEN)
discord.py
Адрес REST задаётся до запуска клиента.
import os
import discord
from discord.http import Route
Route.BASE = 'https://klichat.ru/api/v10'
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
@client.event
async def on_message(message):
if message.content == '!пинг':
await message.reply('понг')
client.run(os.environ['KLICHAT_BOT_TOKEN'])
Что поддерживается
- события шлюза: сообщения, реакции, закрепы, каналы, ветки, роли, участники, баны, приглашения, присутствие, голосовые состояния, автомодерация;
- intents и привилегированные intents, шардирование, запрос участников (op 8), сжатие
zlib-stream; - отправка сообщений и вложений, реакции, управление ролями и каналами, вебхуки;
- вход через Кличат по OAuth2 для сайтов и сервисов.
Пока не поддерживаются слэш-команды и взаимодействия, а также голос для ботов: музыкальные боты на discord.js voice не заработают. Для команд используйте текстовые сообщения с префиксом.
Если что-то в библиотеке ведёт себя не так, как с Discord, напишите в канал #боты-и-api на официальном сервере Кличата или в поддержку.
Документация
- Шлюз WebSocket: подключение, опкоды, коды закрытия, события и intents.
- Вход через Кличат (OAuth2).
- Коды ошибок.
- OpenAPI 3.1 — полное описание REST.
Частые вопросы
Нужно ли переписывать бота под Кличат?
Нет. Меняется адрес API, токен берётся в Кличате. Код команд и обработчиков остаётся прежним.
Работают ли слэш-команды?
Пока нет. Бот может отвечать на текстовые команды с префиксом, реакции и другие события.
Может ли бот зайти в голосовой канал?
Пока нет. Голос для ботов в планах.
Ещё по теме
- Документация API
Документация API Кличата для разработчиков ботов и сервисов: REST API, совместимый с Discord, шлюз WebSocket, intents, OAuth2, коды ошибок и OpenAPI.
- Шлюз WebSocket
Протокол шлюза Кличата для ботов: подключение, опкоды, коды закрытия, READY, события DISPATCH, intents. Совместим с библиотеками для Discord.
- Перенос из Discord
Пошаговый перенос сервера из Discord в Кличат: вход через Discord, бот снимает структуру, предпросмотр и импорт. Каналы, роли, права, ветки, эмодзи. Участники получают роли по кодам.
Попробуйте Кличат
Бесплатно. Регистрация занимает минуту: номер телефона, код и имя. Из-за рубежа — по почте.