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

На этой странице вы создадите приложение 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.
Создайте приложение¶
- Откройте Developer Portal и создайте приложение.
- На его странице Bot сбросьте токен и скопируйте его. Любой, у кого есть токен, управляет ботом, поэтому не держите его в коде и в репозитории.
- На его странице 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, откладывание ответа, последующие сообщения и эфемерные ответы. - Регистрация команд показывает, как регистрировать команды на одном тестовом сервере, пока вы над ними работаете.
- Запуск бота рассказывает о токене, логировании, жизненном цикле бота и запуске внутри другой программы.