見出し画像

初心者がReplitで、AI搭載&好みのボイスも聴けるオリキャラdiscord botを作った話(今のところ無料)

要素もりこみすぎてよくわからなくなりましたが、表題の通りです。
Python初心者が、Replitを使って大満足のオリキャラdiscord botを2,3時間かけて作りました!このdiscord botは、以下のことができます。

  1. チャット内の特定の単語に反応して定型文を返す

  2. ボイスチャンネルの入退室

  3. ボイスチャンネルにイケボ(音声ファイル)を流す

  4. GPT4を使ってAIで考えて受け答えする

discordにいるだけで気分も上がるし超遊べます!!

さて、この記事はひとまず<1>までのやり方をまとめようと思います。

<2>以降は、自分のサーバでできてはいるのですが、記事公開するには自分の技術力が足りないのとたまに挙動がバグってるので、とりあえずできたよーーーーってことだけのご報告にします。

でもこのできたよーーーーーて報告結構重要だと思います!わたしは、Replitだとボイスチャンネルまわりのbotはできないのかなってずっと調べていたので、できたよってことだけも情報として価値があると信じています!ちなみにChat GPT4 さんと検索のお世話になりながらPythonミリシラ勢でも実装できましたよ!

基本のdiscord botの作成

1. discord のdeveloperサイトでbotのガワを作る

まずはdiscordのdeveloper portalからお好みの名前と画像のbotを作ります。
https://discord.com/developers/applications

開発中のゲームのキャラクターのbotです

いろいろ設定がありますが、個人で使うなら「PUBLIC BOT」をオフに、discordの文章を読ませて特定の言葉に反応させるなら「MESSAGE CONTENT INTENT」をオンにします。
そして、TOKENをどこかにコピーしておきましょう。人には見せちゃいけないやつですよ。
botの権限はやりたいことにあわせて・・・。URLを発行して・・・そこからサーバに招待します。

2. Replitへの登録

Replitはブラウザ上でプログラミングができるサイトです。いろいろ下準備がいらない、というところが最大のメリットですね!

わたしはこの件でReplit大好きになりました。

3. コーディング準備

特定の受け答えだけのdiscord botは以下をテンプレートとして利用させていただき、簡単にできました。
https://replit.com/@replit/Python-Discord-Bot

Use Templateボタンを押すと、もりもりテンプレが自分のReplitにコピーされます。
コピーが終わったら、自分のdiscordとつなげます(トークンをコピーします。)左下のToolsというボタンが並んでいる箇所に「SECRET」という項目を選び、KEYに「TOKEN」、VALUEに先ほどのdiscord botのトークンを入力して保存します。

4. 受け答え内容をコーディングしていく

次はいよいよbotの内容を編集して行きましょう!main.pyの以下の部分を編集していきます。

    if message.content.startswith('$hello'):
        await message.channel.send('Hello!')

これは、「$hello」から始まる文章がdiscordに書かれたら「Hello」と返すというコードです。ここの部分をお好みの内容に変えていきます。もっとたくさん欲しければ以下のような感じでelif行で増やします。

     if message.content.startswith('おやすみなさい'):
        await message.channel.send('ああ。おやすみなさい。しっかり休むんだぞ。')
    elif message.content.startswith('同意して'):
        await message.channel.send('俺もその通りだと思う。')
     elif message.content.startswith('否定して'):
        await message.channel.send('うーん。そういうこともあるかもしれないが…')


完成!

あとは「RUN」を押せば、discord botが動いてくれてると思います。

おまけ:botの受け答え内容をAIに考えさせる

上記のような受け答え定型文のバリエーションも考えるのめんどうな場合は、ChatGPT4さんに考えてもらうといいですよ!
たとえば、以下のようなプロンプトでChatGPT4にコードごと書いてもらうのがコピペが楽でおすすめです。性格や設定はもっとたくさん入れたほうが精度はあがると思います。

クールでまじめな性格の司令官のchatbotを作っています。chatbotは以下のように、discord上で特定のメッセージが記載されると、定型文を返します。 この挨拶や定型文の種類を20種類ほど考えて、以下のようなPythonの形式で回答してください。挨拶や定型文の内容は日本語にしてください。
elif message.content.startswith('おやすみなさい'):
   await message.channel.send('ああ。おやすみなさい。しっかり休むんだぞ。')
elif message.content.startswith('同意して'):
  await message.channel.send('俺もその通りだと思う。')

Chat GPT4用プロンプト例


Q1 ボイス実装はどうやったの?

ボイスは、coefontさんなどで制作しました。個人の非商用利用の範囲なら無料のようです。

ボイスチャンネルに音声を流すには、ffmpgというのをreplit側に用意しないといけないのですが、これを何度も失敗して色々試したので、どれがスムーズな正解だったのかいまいちわからず・・・。ただ、できないかと思いきやちゃんとできました!

Q2 AIはどうやって用意したの?

こっちはめちゃ簡単です。chatGPTとかで有名なopen AIのAPIに会員登録して、呼び出すだけです。
https://platform.openai.com/

実装例も他の方の記事でたくさんありますので、本稿では割愛します。注意点を記載するとすれば、一定回数使い無料枠を超えると有料になるから気を付けましょう。
わたしはこちらを参考にさせていただきました!

また、今をときめく高性能はGPT4を使いたい場合、こちらは使えるようになるまでには現在は順番待ちをしないといけないのですよね。将来使いたい場合は行列に並んでおくのが吉ですよ!


Q3 botすぐ落ちるんだけど

このbotはReplitで実行しているときのみ動くので、Replit側でタイムアウトすると落ちてしまいます。24時間実行するには、作ったbotを別のサーバのサービスにお引越しする必要があります。お金もちょっとかかってくるかもしれません。
わたしは、わたしが遊びたいときやサーバーのコアタイムに来てくれればOKという考えだったのでそこまで至ってません。

Q4 botは複数作れるの?

botを複数作って、掛け合いみたいなのを作っておくのも楽しいですよ!Replitで同時に起動できるのか不明でしたが、別窓で開いて実行したら大丈夫でした!


司令官とひばなちゃんが活躍するゲーム「Tokyo Waning Moon」は現在Steamにてウィッシュリスト登録受付中です!


まだ発売していないから上記のbotも自分たちだけが楽しい遊びーーーー
よろしくお願いします!


この記事が参加している募集

#やってみた

36,992件

#AIとやってみた

27,805件

この記事が気に入ったらサポートをしてみませんか?