Перейти к содержанию

Быстрый старт

Бости набирает код в терминале

На этой странице вы создадите приложение Discord, добавите его на сервер и запустите бота с одной слэш-командой. Предполагается, что bostie уже установлен.

Пользуетесь ИИ-ассистентом для программирования?

Установите навык bostie, чтобы ваш ассистент лучше справлялся с задачами на bostie. Скопируйте промпт и вставьте его в своего ассистента. Подробнее о навыке

Установите навык bostie
Install the bostie skill for my coding agent so it writes correct bostie code: Discord bots with slash commands, components, events, REST calls, voice and tests.

Use the Agent Skills installer with the bostie repository, https://github.com/nicokim/bostie:

    npx skills add nicokim/bostie --skill bostie --yes

If I ask for a global install instead, use:

    npx skills add nicokim/bostie --skill bostie --yes --global

Detect which agent or editor I am using. If it is one of these and I prefer the plugin path, install the bostie plugin instead, as https://bostie.dev/ru/assistants/ shows:

    Claude Code: /plugin marketplace add nicokim/bostie, then /plugin install bostie@bostie
    Codex CLI: codex plugin marketplace add nicokim/bostie, then codex plugin add bostie@bostie
    GitHub Copilot CLI: copilot plugin marketplace add nicokim/bostie, then copilot plugin install bostie@bostie
    VS Code with GitHub Copilot: run "Chat: Install Plugin from Source" and enter nicokim/bostie
    Devin: devin plugins install nicokim/bostie#docs
    Factory Droid: droid plugin marketplace add nicokim/bostie, then droid plugin install bostie@bostie --scope user
    Qwen Code: qwen extensions install nicokim/bostie:bostie

Do not invent other skill names or install URLs.

Then add this line to the instructions file you read at the start of every session (AGENTS.md at the project root, or your global one for a global install), and create the file if needed:

    Before you write or change code that uses bostie, look at how the project is laid out, then load the bostie skill.

After installing, confirm that the bostie skill is available to you.

Создайте приложение

  1. Откройте Developer Portal и создайте приложение.
  2. На его странице Bot сбросьте токен и скопируйте его. Любой, у кого есть токен, управляет ботом, поэтому не держите его в коде и в репозитории.
  3. На его странице Installation добавьте области доступа applications.commands и bot в установку на сервер, затем откройте ссылку установки и добавьте приложение на сервер, которым вы управляете.

Напишите бота

Сохраните это как bot.py:

import bostie
from bostie import Context

bot = bostie.Bot()


@bot.command
async def hello(ctx: Context) -> None:
    """Say hello."""
    await ctx.respond(f"Hello, {ctx.user.display_name}!")


bot.run()

@bot.command превращает функцию в слэш-команду /hello. Её имя — это имя функции, а описание — первая строка докстринга. ctx — это Context одного использования команды: кто её запустил, где, и методы, которыми на неё отвечают.

Запустите его

Передайте токен через переменную окружения BOSTIE_TOKEN и запустите файл:

export BOSTIE_TOKEN="your token"
python bot.py

bot.run() настраивает логирование на уровне INFO, подключается и сравнивает определённые вами команды с теми, что зарегистрированы в Discord. При первом запуске он регистрирует /hello и пишет в лог commands synced (global): added ['hello'], ...; при следующих запусках ничего не отправляется, пока какая-нибудь команда не изменится. Введите /hello на своём сервере, и бот ответит.

Ctrl+C или SIGTERM от менеджера процессов корректно закрывает бота.

Добавьте параметр

Параметры функции после ctx становятся параметрами команды, а их тип задают аннотации:

import secrets

import bostie
from bostie import Context, Range

bot = bostie.Bot()


@bot.command
async def roll(ctx: Context, sides: Range[int, 2, 100] = 6) -> None:
    """Roll a die."""
    rolled = secrets.randbelow(sides) + 1
    await ctx.respond(f"You rolled {rolled} on a d{sides}.")


bot.run()

sides — целочисленный параметр от 2 до 100 со значением по умолчанию 6, поэтому Discord показывает его как необязательный и отклоняет значения вне диапазона ещё до того, как их увидит бот. Перезапустите бота, и он отправит изменённую команду.

Дальше

  • Слэш-команды описывают все типы параметров, варианты, автодополнение и подкоманды.
  • Ответы на взаимодействия объясняют respond, откладывание ответа, последующие сообщения и эфемерные ответы.
  • Регистрация команд показывает, как регистрировать команды на одном тестовом сервере, пока вы над ними работаете.
  • Запуск бота рассказывает о токене, логировании, жизненном цикле бота и запуске внутри другой программы.