Skip to content
Orrin19Public

About

Discord bot powered by Orrin19

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Repository files navigation

Утилитарный Discord-бот для общих и ролевых серверов

Основной бот — Opeks#8972

Opeks — универсальный бот, подходящий для использования на множестве серверов. Протестируйте его и оставьте отзыв владельцу!

Пригласить!

Функционал Opeks

В настоящее время Opeks реализует следующие команды:

  • /about — предоставляет информацию о боте и клиенте;
  • /avatar — показывает аватар указанного пользователя;
  • /choice — случайным образом выбирает один из указанных вариантов;
  • /clean — удаляет указанное количество сообщений (требует соответствующих прав как у вызвавшего команду, так и у клиента);
  • /dice — запрашивает бросок куба у игрока (для ведущего);
  • /dice-range — запрашивает бросок куба с диапазонами результатов (для ведущего);
  • /8ball — даёт таинственный ответ на ваш вопрос;
  • /meow — присылает картинку с котиком /ᐠ。ꞈ。ᐟ;
  • /nekos-life — присылает аниме-картинку по одному из доступных запросов;
  • /roll — выдаёт случайное число в указанном диапазоне, может считать модификаторы;
  • /rps — камень-ножницы-бумага!;
  • /sauce — ищет источник аниме-арта через SauceNAO;
  • /serverinfo — показывает информацию о сервере;
  • /special — генерирует характеристики персонажа а-ля Fallout;
  • /timeout — выдаёт участнику мут на указанное количество часов (требует соответствующих прав как у вызвавшего команду, так и у клиента);
  • /trace-moe — определяет аниме по кадру из него;
  • /userinfo — показывает информацию об участнике;
  • /voting — инициирует голосование;
  • /wiki — ищет статью по вики и выдаёт краткую сводку от ИИ;
  • «Составить вердикт» (контекстное меню сообщения) — продолжает ролевой пост с учётом контекста чата и вики.

Также Opeks иногда присылает в чат смайлик или ставит реакцию. Говорят, без искусственного интеллекта там не обошлось ¯_(ツ)_/¯

Запуск Opeks для своего клиента

Opeks является гибкой системой и не привязан к одному Discord-клиенту. С его помощью вы можете создать своего бота! Для этого следуйте инструкции:

  1. Установите Node.js. Проект ориентирован на Node.js 24.x (см. engines в package.json).
  2. Клонируйте этот репозиторий на свой сервер.
  3. Создайте в корне репозитория файл .env на основе .env.example и заполните его своими данными:
TOKEN="ТОКЕН_ВАШЕГО_КЛИЕНТА"          # Получить его вы можете при создании бота на Discord Developers Portal
LINE_COLOR="0xfefefe"                 # Цвет эмбедов, HEX или десятичный (по умолчанию 0xfefefe)
HOSTING="НАЗВАНИЕ_ХОСТИНГА"           # Отображается в /about (по умолчанию local)
ACTIVITY_NAME="Opeks"                 # Активность в статусе бота
ACTIVITY_TYPE="0"                     # Тип активности, см. документацию Discord
OPENROUTER_API_KEY="..."              # Токен OpenRouter — нужен для /wiki и «Составить вердикт»
OPENROUTER_URL="https://openrouter.ai/api/v1/chat/completions"
OPENROUTER_MODEL="nvidia/nemotron-3-super-120b-a12b:free"
SAUCE_TOKEN="..."                     # Токен SauceNAO — нужен для /sauce
LOG_LEVEL="info"                      # debug | info | warn | error
  1. Соберите и запустите бота:
npm ci          # установка зависимостей
npm run build   # компиляция TypeScript в dist/
npm start       # запуск скомпилированного бота

Для разработки с перезагрузкой вручную можно использовать npm run dev (запуск через ts-node без сборки).

Структура проекта

src/
├── index.ts            # точка входа (bootstrap)
├── config/             # env.ts — загрузка/валидация .env, constants.ts — константы
├── core/               # Logger, ClientFactory, AppContext (DI-контекст)
├── structures/         # базовые классы Command, TextParser, Listener
├── commands/           # слеш- и контекстные команды (по классу на команду)
├── listeners/          # обработчики событий Discord
├── parsers/            # парсеры обычных сообщений
├── services/           # Wiki, LLM, SauceNAO, trace.moe, nekos.life, промпты
└── utils/              # хелперы (random, time, text, embed, discord)

Разработка

Основные скрипты (npm run <script>):

  • dev — запуск через ts-node без сборки;
  • build — компиляция TypeScript в dist/;
  • start — запуск собранного бота;
  • typecheck — проверка типов без эмита;
  • lint / lint:fix — ESLint (проверка / автоправки);
  • format / format:check — Prettier (форматирование / проверка);
  • test — юнит-тесты на встроенном Node test runner.

Код форматируется Prettier и линтится ESLint (+ typescript-eslint). Перед коммитом Husky автоматически прогоняет сборку и линт (npm run build && npm run lint).

About

Discord bot powered by Orrin19

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages