キロロくんとおしゃべりする Discord Bot です。 Cloudflare Workers 上で作動します。
サーバーに招待し、スラッシュコマンド /kiro <おしゃべりの内容>
で呼び出します。
/kiro キロロはお酒飲む?
キロロはお酒は飲めないキロ。
/kiro キロロ6連射
キロロ
キロロ
キロロ
キロロ
キロロ
キロロ
$ npm install
$ brew install ngrok
-
Discord App を登録し、以下の API キーを取得します。
- General Information → Application ID, Public Key
- Bot → Token
-
Bot → Privileged Gateway Intents より
Message Content Intent
を有効にします。 -
OpenAI API に登録し、API キーを取得します。
-
Cloudflare D1 に
kiroro-bot
という名称で DB を追加し、Database ID
を取得します。 -
wrangler.example.toml
をwrangler.toml
としてコピーし、database_id
を先ほど取得した ID に置換します。cp wrangler.example.toml wrangler.toml vi wrangler.toml
環境変数を登録した上でコマンドを実行し、Slash commands を登録します。
$ export DISCORD_BOT_TOKEN=<DISCORD_BOT_TOKEN>
$ ts-node src/register.ts
-
.dev.vars
に環境変数を記述した上で、以下のコマンドを実行します。
KIRORO_ID
は、開発者モードを有効にした状態で、右クリック →「ユーザー ID をコピー」から取得できます。DISCORD_PUBLIC_KEY = "<DISCORD_PUBLIC_KEY>" DISCORD_BOT_TOKEN = "<DISCORD_TOKEN>" OPEN_API_KEY = "<OPEN_API_KEY>" KIRORO_ID = "<KIRORO_ID>"
$ npm install $ npm run dev
-
ngrok を用いてローカル環境を公開します。ポート 8787 で起動した場合には、以下のように指定します。
$ ngrok http 8787 ngrok ... Forwarding https://***.ngrok.io -> http://localhost:8787
-
ngrok によって割り当てられたアドレス(この場合
https://***.ngrok.io
)を、Discord App の設定画面のInteractions Endpoint URL
に設定します。
-
以下のコマンドを実行し、上記と同じ環境変数を登録した上で、デプロイします。
$ wrangler secret put DISCORD_PUBLIC_KEY ... $ npm run deploy
-
npm run deploy
の出力結果として表示されたアドレス(例:https://kiroro-bot.<Workersのサブドメイン>.workers.dev/
)を、Discord App の設定画面のInteractions Endpoint URL
に設定します。
心無い利用をするユーザから GPT-3.5 へのアクセスを禁止し、やさしいインターネットを目指しましょう。
環境変数 BANNED_USERS
に Discord のユーザネームをスペースなしのカンマ(,
)区切りで追加します。環境変数が存在しない場合はどのユーザからの応答でも受け付けます。
$ wrangler secret put BANNED_USERS
user1,user2
BAN されているユーザを確認するには、以下の通りにしゃべりかけます。
/kiro BANされてるユーザを教えて
キロロ寿司とusernameが嫌いキロ
ワンピースをいち早く知りたい友人のためにワンピースのネタバレ機能を実装しました。
-
Cloudflare D1 のデータベース上に、以下のテーブルを作成します。
CREATE TABLE onepiece( id INTEGER, content TEXT );
-
以下のコマンドを実行して、ワンピースの情報をスクレイピングで取得し、データベースに追加します。
export OPEN_API_KEY=<OPEN_API_KEY> npm run onepiece
ネタバレを教えてもらうには、「ワンピース」を含めてしゃべりかけます。
/kiro キロロ、ワンピースの1087話好き?
キロロがこっそり教えちゃうキロ……
(1087 話のネタバレ)