Пример внешнего плагина для HUMAN Bot.
Плагин добавляет slash-команду /coin:
ОрелРешка- очень маленький шанс на
Ребро(по умолчанию 1/500)
plugin.json- манифест для установщика HUMAN Bot.coin_plugin.py- реализация плагина.
{
"slug": "coin-flip",
"name": "Coin Flip",
"version": "1.0.0",
"description": "Slash command /coin: орел или решка с очень маленьким шансом на ребро.",
"entrypoint": "coin_plugin.py",
"min_bot_version": "1.2.0"
}Обязательные поля:
slugnameversionentrypoint
- Закоммитьте код:
git add .
git commit -m "feat: initial coin plugin"
git push origin main- Создайте архив для релиза (важно: внутри архива должны быть
plugin.jsonиcoin_plugin.py):
Linux/macOS:
zip -r coin-flip-v1.0.0.zip plugin.json coin_plugin.pyWindows PowerShell:
Compress-Archive -Path .\plugin.json, .\coin_plugin.py -DestinationPath .\coin-flip-v1.0.0.zip -Force- На GitHub откройте
Releases -> Draft a new release. - Укажите tag, например
v1.0.0. - Прикрепите архив
coin-flip-v1.0.0.zipкак asset. - Опубликуйте релиз.
- Скопируйте прямой URL к release asset.
- В панели бота откройте раздел
Плагины. - Вставьте URL в поле
Release Asset URL. - Нажмите
Установить плагин. - После
Enableкоманда/coinпоявится на сервере.
Быстрая проверка синтаксиса:
python -m compileall coin_plugin.pyМинимальный шаблон:
from discord.ext import commands
class MyPlugin(commands.Cog):
def __init__(self, bot):
self.bot = bot
async def setup(bot):
await bot.add_cog(MyPlugin(bot))
async def teardown(bot):
await bot.remove_cog('MyPlugin')Рекомендации:
- всегда реализуйте
teardown, - избегайте блокирующих операций в обработчиках команд,
- версионируйте изменения (
versionвplugin.json), - публикуйте changelog в каждом GitHub release.