revolution / arty
artisan only application
Requires
- php: ^8.1
- illuminate/notifications: ^10.0
- illuminate/view: ^10.0
- laravel-notification-channels/discord: ^1.4
- laravel-zero/framework: ^10.0
- revolution/discord-manager: ^4.3
- revolution/laravel-namespaced-helpers: ^2.0
Requires (Dev)
- mockery/mockery: ^1.4
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2024-03-31 02:22:57 UTC
README
終了(2024-03)
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などを使ってサーバーレスでの稼働が目標
Create project
composer create-project --prefer-dist revolution/arty:dev-master discord-bot && cd $_
php arty
でコマンドリスト表示。
GitHubのTemplateから作成した場合
手動での.envコピーなどが必要。
cp .env.example .env
composer install
Laravel Zeroから追加した機能
- Laravel Notification
通知先を増やせばDiscord以外にも簡単に対応できる。
Discord test
.env
を設定後php arty discord:test
で指定のチャンネルに投稿されれば成功。
このようにコマンド1回実行するだけであればGitLab CIで定期的に実行が可能。(最短間隔はおそらく1時間)
Laravelのスケジュール機能は使わない。
次回のコマンド実行時になんらかのデータを引き継ぎたい場合はキャッシュかStorageを使う。
Discord serve
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
Discordコマンド作成
作成場所はapp/Discord
固定。
php arty make:discord:command NewChannelCommand
php arty make:discord:direct NewDmCommand
artyファイル名の変更
php arty app:rename artisan
php artisan
Dockerで使う
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で必要になるかもしれない。