drmaxis / deploybot
Reusable Slack + Discord bot for Laravel
v0.3.0
2026-06-30 04:18 UTC
Requires
- php: ^8.3
- ext-json: *
- guzzlehttp/guzzle: ^7.9
- illuminate/bus: ^12.0 || ^13.0
- illuminate/contracts: ^12.0 || ^13.0
- illuminate/database: ^12.0 || ^13.0
- illuminate/http: ^12.0 || ^13.0
- illuminate/routing: ^12.0 || ^13.0
- illuminate/support: ^12.0 || ^13.0
Requires (Dev)
- driftingly/rector-laravel: ^2.0
- larastan/larastan: ^3.0
- laravel/pint: ^1.18
- orchestra/testbench: ^10.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
- rector/rector: ^2.0
This package is auto-updated.
Last update: 2026-06-30 04:20:05 UTC
README
A Slack + Discord bot framework for Laravel. Drop it in, register your slash commands, ship.
Install
composer require drmaxis/deploybot
php artisan vendor:publish --tag=deploybot-config php artisan vendor:publish --tag=deploybot-migrations php artisan vendor:publish --tag=deploybot-routes php artisan migrate
Configure
# .env DEPLOYBOT_SLACK_SIGNING_SECRET= DEPLOYBOT_SLACK_BOT_TOKEN= # optional — one per logical channel DEPLOYBOT_DISCORD_WEBHOOK_RELEASES= DEPLOYBOT_DISCORD_WEBHOOK_INCIDENTS=
Register a command
use DrMaxis\Deploybot\Commands\CommandContext; use DrMaxis\Deploybot\Commands\CommandInterface; use DrMaxis\Deploybot\Commands\CommandResponse; class PingCommand implements CommandInterface { public static function name(): string { return 'ping'; } public static function description(): string { return 'Reply with pong.'; } public static function requiresAdmin(): bool { return false; } public function handle(CommandContext $ctx): CommandResponse { return CommandResponse::message('pong'); } }
Register from a service provider:
public function boot(CommandRegistry $registry): void { $registry->register(PingCommand::class); }
Point your Slack app's slash command at https://your-app.example/deploybot/slack/command. The built-in help command lists every registered command.
What's in the box
- HMAC signature verification (constant-time, with timestamp-skew replay guard)
- Slash-command dispatcher with admin allowlisting
- Slack Web API client (
chat.postMessage,chat.postEphemeral) - Discord webhook client (multi-purpose routing)
- Channel-subscription model for broadcasting events
- Block Kit response envelope types
- Auto-discovered service provider · Laravel 12 / 13
Contributing
See CONTRIBUTING.md.
Security
Report privately via GitHub security advisories. See SECURITY.md.
License
MIT