クソしょうもないDiscord botをグローバルbotにしてみた話【初学者】
しばらく前に書いたこちら↓のbotをグローバルbotにしてみました。
グローバルにするにあたっての変更点
といってもほぼ変えていないのですが、データの保持方法をjsonファイルではなくsqlitesupabase(postgre)に変更しました。
DB操作には、prismaを使用しています。
テーブル設計については、githubのschema.prismaファイルをみてください!(ダメなところがあったら教えてほしいです)
ほぼ一から書き直して、リファクタリングしました。ちゃんとファイル事に処理を分けられたと思います。
また、リンターとフォーマッターにbiomeを採用してみました。正直eslintとprettierとの差は感じられませんでしたが、一つのライブラリで両方できるのは良いかなと思います。
身内鯖で稼働しているbotの、ボイスチャンネルから抜けると「おい」とメッセージを送信するなどの処理を消去しました。(あたりまえ)
使い方
招待URL
コマンド
/setschedule
時報を追加します
オプション
- time: (必須)追加する時報の時刻 HH:MMの形式で指定します 例: 12:00 22:22
- message: (任意)追加する時報のメッセージ 設定しなかった場合デフォルトのメッセージが送信されます
/scheduleinfo
時報の情報を表示します
/editscheduleや/deletescheduleで使用するidはこのコマンドで確認できます
/editschedule
時報を編集します
オプション
- id: (必須)編集する時報のID
- time: (任意)編集する時報の時刻
- message: (任意)送信するメッセージを変更します
- channel: (任意)送信するチャンネルIDを変更します
- isactive: (任意)時報のアクティブ状態を変更します (true, false)
idは/scheduleinfoで確認できます
/deleteschedule
時報を削除します
オプション
- id: (必須)削除する時報のID
idは/scheduleinfoで確認できます
/omikuji
おみくじを引きます
オプション なし
確率は以下の通りです
- ぬべ吉: 1% (20000円)
- 大吉: 8% (1000円)
- 吉: 12% (500円)
- 中吉: 16% (300円)
- 小吉: 22% (200円)
- 末吉: 22% (100円)
- 凶: 12% (-50円)
- 大凶: 5% (-100円)
- ヌベキチ└(՞ةڼ◔)」: 2% (-300円)
また、ぬべ吉、ヌベキチ└(՞ةڼ◔)」が出た場合はロールが付与されます。※ロールはbotがサーバーに参加した時に作成されます
/coinflip
お金をコイントスで賭けます
オプション
- bet: (必須)賭けるお金
勝利すると賭け金の2倍のお金がもらえます
1円から賭けられます
最大賭け金は10000円です
おわりに
初めはbunにあるsqliteのapiを使ってみようと思いsqliteにしたのですが、prismaの方が使いやすいなと思い結局primsaになりました。
あと、vps等にデプロイしてみたいけどcronを多用する関係上、メモリがどの程度必要なのかわからないので教えて下さい…
11/19日追記
こちらの記事を参考に試しにFly.ioにデプロイしてみました
メモリはcronjobが12個セットされている状態で200~300MBなので512MBで足りているようです
しばらく様子を見て、無料で運用ができそうならこの記事に追記するか、新しく記事を投稿しようと思います!
こちらのbotもgithubに貼っています。使い方も同じものがreadmeにあります。
よかったら導入して遊んでみてください。
Discussion