discord-manager
v5で稼働し続けるbot機能を終了したのと、Laravel11で「consoleのみ」のアプリも構成しやすくなったのでここは終了。
https://invokable.net/article/laravel11-console-only
- 主にDiscord botを想定したartisanコマンドのみのアプリを作るためのテンプレート
- artisanコマンドでできることは大体何でも可能なので他の用途にも使えるけどそれならLaravelかLaravel Zeroを直接使えばいい。
- Laravel Zero https://laravel-zero.com/
- GitHub Actions、GitLab CIなどを使ってサーバーレスでの稼働が目標
composer create-project --prefer-dist revolution/arty:dev-master discord-bot && cd $_
php arty
でコマンドリスト表示。
手動での.envコピーなどが必要。
cp .env.example .env
composer install
- Laravel Notification
通知先を増やせばDiscord以外にも簡単に対応できる。
.env
を設定後php arty discord:test
で指定のチャンネルに投稿されれば成功。
このようにコマンド1回実行するだけであればGitLab CIで定期的に実行が可能。(最短間隔はおそらく1時間)
Laravelのスケジュール機能は使わない。
次回のコマンド実行時になんらかのデータを引き継ぎたい場合はキャッシュかStorageを使う。
php arty discord:serve
ではbotを起動し続ける。
メッセージを受け取って返すようなbotを作るにはサーバー上で動かし続ける必要がある。
GitLab CIでは無理そうだけどtimeoutが1時間なので1時間毎に再実行し続ければ可能かもしれない。
この場合はDB使ったりもっと複雑なbotを作るだろうからGitLab CIには向いてない。無料プランでは月間の制限時間もある。
Laravelと同じ。
php arty make:command TestCommand
php arty make:notification TestNotification
作成場所はapp/Discord
固定。
php arty make:discord:command NewChannelCommand
php arty make:discord:direct NewDmCommand
php arty app:rename artisan
php artisan
docker-compose run arty {command}
docker-compose run --rm arty discord:test
docker-compose run --entrypoint '' --rm arty composer install
docker-compose run --entrypoint '' --rm arty vendor/bin/phpunit
最初にcomposer create-projectで作ってるならphpもcomposerも動くはずだけど。 CIで必要になるかもしれない。