Начало

Быстрый старт: первый бот

За десять минут: приложение, бот с токеном, приглашение на свой сервер и работающая команда «/ping». Нужен аккаунт Voice и сервер, где у вас есть право «Управлять сервером».

  1. Создайте приложение
    Откройте Мои приложения, войдите через Voice и нажмите «Новое приложение». Приложение — это одновременно клиент Voice ID (для входа на сайты) и, по желанию, бот. Сразу появится client_secret — он показывается один раз, сохраните его, если будете делать вход на сайт.
  2. Получите токен бота
    На вкладке «Бот» нажмите «Создать бота». Токен вида vbt_… тоже показывается один раз. Его можно сбросить — старый перестанет работать, а подключения бота закроются.
    Токен даёт полный доступ к боту. Не публикуйте его в коде и репозиториях — передавайте через переменную окружения.
  3. Пригласите бота на сервер
    Там же, на вкладке «Бот», выберите права и нажмите «Добавить на сервер». Откроется экран Voice ID — выберите сервер. Ссылку можно отдать другим (если бот публичный):
    text
    https://voice-chat.ru/oauth2/authorize?client_id=ID_ПРИЛОЖЕНИЯ&scope=bot%20applications.commands&permissions=117824
    Боту выдаётся своя роль с выбранными правами; выдать больше прав, чем есть у вас, нельзя. Коды прав — в разделе Права.
  4. Запустите код
    Выберите язык. Вариант «Node.js + SDK» использует наш файл voice.mjs без зависимостей; остальные обращаются к API напрямую.
    Подготовка
    # Node.js + SDK
    curl -O https://voice-chat.ru/sdk/voice.mjs
    VOICE_TOKEN="vbt_…" node bot.mjs
    
    # Python
    pip install aiohttp
    VOICE_TOKEN="vbt_…" python3 bot.py
    bot.mjs
    // bot.mjs — Node.js 22+
    import { Client, button, row } from "./voice.mjs";
    
    const client = new Client({ token: process.env.VOICE_TOKEN, baseUrl: "https://voice-chat.ru" });
    
    // Команды объявляются здесь и регистрируются на сервере при login()
    client.command("ping", "Проверить, что бот жив", [], (i) => i.reply("Понг! 🏓"));
    
    client.command("кубик", "Бросить кубик", [
      { type: "integer", name: "грани", description: "Сколько граней", min: 2, max: 100 },
    ], (i) => {
      const n = i.options["грани"] ?? 6;
      return i.reply({
        content: `🎲 Выпало ${1 + Math.floor(Math.random() * n)}`,
        components: [row(button.primary("Ещё раз", "reroll"))],
      });
    });
    
    client.button("reroll", (i) => i.update({ content: `🎲 Выпало ${1 + Math.floor(Math.random() * 6)}` }));
    
    client.on("message", (m) => {
      if (m.content === "!привет") m.reply("И тебе привет!");
    });
    
    client.on("ready", () => {
      console.log("Бот запущен как", client.user.displayName);
      client.setActivity("/ping");
    });
    
    await client.login();
  5. Проверьте
    В консоли появится «Бот запущен как …», а в списке участников сервера — бот в сети. Наберите в канале /ping и выберите команду в подсказках — бот ответит «Понг!». На вкладке «Журнал» консоли видно каждое событие, которое получил бот.

Что дальше