【discord bot】個人サーバーで運用しているbot5つ【褒めて】

Diary作業効率化

表題の通りです。褒めてほしい。

根底にある思想は↑のツイートにある通りです。私は言うなれば、記録オタクなんだと思います。効率化とかめっちゃ好きです。これまで、色々なアプリやツールを試してきました。

・タスク管理→ToDoist
・読書記録→読書メーターやReads
・締切カウントダウン→カウントダウンつきの時計を買った
・リマインダー→以前はSlackを使っていたのでコマンドでやってた
・小説進捗管理→Googleスプレッドシートに手入力、物理ノートや手帳で管理

しかし……しかしですね、自身の非定型な特性のおかげもあってか、どれもいまいちしっくりこない……。三日坊主になってしまうことが多発して、使いこなすのが難しかったです。さらに、自分のほしい機能が既存のアプリにない。たとえば小説進捗を管理したい場合、私は「実際の締切」よりも前に「自分の締切」を設定してそれを目指して書くのですが、カウントダウンを2種類使い分けるなんて機能が既存のアプリにあるわけない。

夢の「これ一つで完結!」へ……

問題を根本的に解決するには、やはり自分が一番使いやすいものにすべての機能を集約してしまうことだと思いました。今まではSlackを使っていたのですが、課金しないと過去のメッセージも遡れない仕様に今なってしまっているので、そのためだけに毎月課金するのか?みたいなもやもやがあり……。使い勝手の良い環境が整えられるのであれば、課金も辞さないとはいえ、ちょっとな〜というのが本音でした。

それで、discordはどうかな? と思い至ったわけです。
いま自分が抱えている課題を書き出してみることにしました。

・シンプルなタスク管理がしたい
・Googleカレンダーを使うので、Googleカレンダーと連携したスケジュール管理機能がほしい
・小説の進捗管理をもっと手軽にやりたい
・読書記録や観賞記録をつけたいし、つけることによって読書や映画鑑賞、展覧会へ出かけることを習慣化したい
・タロットリーディングをプログラムでできるようにしたら面白そう(おまけ)

その結果、5つのdiscord botをつくり、discord上に常時稼働させ、すべての作業をdiscord上で処理できるようにすれば捗るのではないかというアイデアを得ました。

しかし、私は全くプログラミングができません。Slackを課金して使っていたので、ワークフローくらいはつくれたし、IFTTTくらいは使ったことがあるのですが、それでもなという感じでした。

→結論:AIに聞こう

AIに全部コード書いてもらっちゃお! と思いました。私が使っているのはClaudeだったので、さっそく聞いてみます。

これは、小説進捗管理botをつくろうと思い立ったときにClaude(課金済)に送った最初のメッセージです。要件定義がガバガバすぎる! しかし、Claudeは忖度力が異常に高いので、私の意図を汲んで、その後丁寧な要件定義をやりなおしてくれました。

こんにちは!小説執筆の進捗管理bot、とても実用的で素晴らしいアイデアですね!ReplitでDiscord botを作ることは十分可能ですし、Googleスプレッドシートとの連携も実現できます。
まず、現在の要件を整理して、追加で便利そうな機能も提案させていただきますね。
現在の要件まとめ

作品情報管理: タイトル、締切、テーマ、字数制限等をDiscordから入力
スプレッドシート連携: 自動でGoogleスプレッドシートに記録
カウントダウン表示: 締切までの残り日数表示
ステータス管理: 未着手・着手中・完了の管理
個別作品シート: 着手中にすると作品専用シートを作成
日次進捗報告: 字数報告と進捗率計算
励まし機能: 進捗に応じた応援メッセージ
リマインダー: 毎日の進捗入力を促す通知

追加提案機能
進捗管理の強化

週間/月間統計: 合計執筆字数、平均執筆字数、執筆日数の可視化
執筆ペース分析: 締切に間に合うための必要日次字数を自動計算
執筆習慣トラッキング: 連続執筆日数のカウント

モチベーション向上

執筆ストリーク: 連続執筆日数でバッジ付与
マイルストーン祝福: 25%、50%、75%達成時の特別メッセージ
月間振り返り: 月末に執筆実績をまとめて表示

実用的な補助機能

プロット管理: 簡単なあらすじやプロットメモの保存
キャラクター管理: 登場人物の基本情報管理
執筆時間記録: 字数だけでなく執筆時間も記録可能
複数作品対応: 同時進行中の作品を並行管理

分析・レポート機能

執筆パターン分析: 曜日別・時間帯別の執筆傾向
完了作品アーカイブ: 過去の作品実績を一覧表示

技術的には、Discord.js(Node.js)とGoogle Sheets APIを使って実装できます。どの機能から実装していきたいですか?また、上記の追加機能で特に興味のあるものはありますか?

ゆ、有能すぎる……。これなら私でもできそう、と思い、いざ実装へ……ということで、頑張りました。

最初の環境

最初は、Replitというサービスを使っていました。コードの実装からデプロイまでこれ一つで完結するという優れものです。しかし問題がありました。botを常時稼働させるためには課金必須だったことです。それが、月20$とか。うーん。しかも、25$のクレジットを使い切ったらそのあとは「使った分だけ払ってね」システムに移行するとのことで、意外とお財布に優しくなかったです。そうそうに諦め次を検討。

次に検討したのは

Claudeに「もっといいもんあんだろ! 出せよ!」と迫った結果、RenderとGithubを使う方法を教えてもらいました。ぎ、ぎっとはぶ〜? あの、エンジニアが使うやつですか〜!? と及び腰だったものの、Claudeの懇切丁寧な解説によって無事に自分のプロジェクトをつくることができました。Renderは、Starterプランが月額7$で使えて、常時稼働したいならそれを使うしかなさそうでした。う、うーん。それでも、botを5つ稼働させたら月35$でしょう……? 5000円やでそれ君。厳しいな〜。

最終的に落ち着いた環境

Claudeに「まだ高いよ〜なんとかしてよ〜」と懇願した結果、「仕方ないにゃあ」と教えてもらったのが、Oracle Cloud Infrastructureでした。

実は、Discord botの常時起動には**もっと安い選択肢**がいくつかあります!Renderのstarterプランで5つのbotに月35ドルは確かに高いですね。

## より安い選択肢

### 1. **Railway** 🚂
- **月額8ドル/月**でstarter plan
- 複数のbotを1つのプロジェクトで動かせる
- デプロイが簡単でRenderと似た使い勝手

### 2. **Fly.io** ✈️
- **無料枠あり**(月512MB RAM時間まで)
- 小さなbotなら無料で動く可能性大
- 有料でも非常に安価(月数ドル程度)

### 3. **Oracle Cloud Always Free** ☁️
- **完全無料**のVMインスタンス提供
- ARM Ampere A1 Compute: 4 OCPU、24GB RAM
- 設定は少し複雑だが、無料で複数bot運用可能

### 4. **Google Cloud Run** 🌐
- **従量課金制**
- Discord botなら月数ドル程度
- リクエストがない時は課金されない

### 5. **Heroku Alternatives**
- **Koyeb**: 無料枠あり
- **Cyclic**: 無料枠あり

## おすすめの移行戦略

**最もコスパが良いのは Oracle Cloud Always Free + Railway/Fly.io の組み合わせ**です:

1. **Oracle Cloud Always Free**で3-4個のbot
2. **Fly.io**の無料枠で1個のbot

これなら**月0-5ドル程度**で5つのbotを運用できる可能性があります。

設定の難易度を考えると、**Railway**(月8ドル)に全て移行するのが一番簡単で、それでも27ドルの節約になりますね。

どの選択肢に興味がありますか?移行方法も詳しく説明できます!

む、無料……? というのにつられて、結局すべてのbotをOracle Cloud Infrastructureで動かせないか聞きました。インスタンス(って何)を2つ稼働させれば可能かと! と言われたので、「じゃあそれで!」と楽観的に頷きました。

しかし……じ、時間かかった〜! めっちゃ複雑、Claudeがいなかったら絶対無理だった……。あと、無料枠の在庫切れなどに遭遇し、そこが争奪戦なんだ……と思いました。勉強になりました。昨日、十数時間PCとにらめっこして、結果的に環境構築に成功しました! 長かった。勉強になったのかと言われると、よくわかりません。Claudeに頼り切りだったので……。言われたことそのままやったら動きますからね。

でも完成!結果的に勝ち!

というわけで、今はこんな感じで動いています。

・discord botや連携させるGoogleスプレッドシート、Google Cloud Consoleのサービスアカウント、Googleカレンダーなどを用意する
・Githubにbotを動かすためのプロジェクトを用意する
・Oracle Cloud Infrrastructureの永年無料で使えるものを選択して、インスタンス2つでbotを分散させて稼働

これ、全部Claudeに聞いてその通りにしただけです。時間はかかるけど、無料で5つのめっちゃ使えるbotを一つのdiscordサーバーで動かすことに成功してます。良い時代だな……(AIには水資源を使いまくる問題とかあるから積極的に小説執筆には使っていないけど、プログラミングにはつい使ってしまう……)。

以下、褒めてほしいのでつくったbotについて紹介していきます。ほめてほめて!

calendar bird

アイコン:タチヨタカの拾い画

calendar birdがやってくれること

・毎朝7時に、一週間先の予定までをdiscord上で通知してくれる。

・「/schedule add」コマンドで「イベント名、日付、開始時間、終了時間、終日予定にするか、カウントダウン通知を有効にするか、想定締切を別に設定するか、備考」などを設定したGoogleカレンダーの予定を作成

・「/countdown list 日数」で最大365日先までの予定一覧と、予定までの残り日数を一括表示

fumiyome bird

アイコン:タチヨタカの雛の拾い画

fumiyome birdがやってくれること

・本、映画、活動(展覧会に行くなど)を登録、一覧表示

・読書を開始する際にステータス変更、読了後にステータス変更
・毎日の読書記録など用に、日報を書く

・現在登録済みの本、映画、活動を確認する

・毎朝7時に、読みかけの本をお知らせしてくれる
・毎週21時に、今週の活動レポートを送信
・毎月1日に、先月の活動レポートを送信
・登録してから一週間経ったが活動履歴がない映画や活動をリマインドする

progress bird

アイコン:うちにいるハシビロコウのぬいぐるみの画像

progress birdができること

・進捗報告の催促が毎晩19時に飛んでくる

・作品(新しいプロジェクト)を作成する(自動で連携するGoogleスプレッドシートにそのプロジェクトのシートが作成される)、作品の進捗管理

・統計機能、週・月ごとに執筆字数などを連絡したり、執筆ペースや執筆週間をトラッキング

・毎日、毎週、毎月レポートやリマインドを送信(ヘルプの文言が古く、いまはReplitで動いているわけではない)

具体的な使用法はこんな感じ

tarot bird

アイコン:オーストラリアガマグチヨタカの雛の拾い画

tarot birdのできること

・占い!

使用例

task bird

アイコン:昔育ててたヒヨコの画像

task birdができること

・タスク管理、毎朝タスク状況をお知らせ

・「!add task タスク」で追加、「!tasks」でタスク一覧表示、「!complete タスクid」でタスク完了

ドシドシ生活を送る

ざっとうちのbirdたちを紹介しました。いかがでしたでしょうか。かなり便利だと思いませんか。もちろん、これらの鳥さんたちを使いこなせるかはこれからの私にかかっています。使いこなして、鳥さんたちにふさわしい自分になりたいですね。

ちょっと恥ずかしいですが、Githubのページはこれです。全部Claude任せなので、コードの美しさとかは私にはよくわからんです。ただ、動いているので何かの参考にはなるかもしれません。

https://github.com/YoFujii0705/bot-discord/tree/main

現時点での、自分の作業環境を記録しておきたいというモチベと、あと褒めてほしかったのでこの記事を書きました。

ドシドシ執筆して、本読んで、映画観て、タスク管理して、締切管理して、占いして、生活をするぞ〜。おつきあいいただきありがとうございました。