10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ChatGPTをDiscordに連携してみた。

Posted at

よく話題になっているchatGPTを使っていろいろやりたいと思っていたけどいちいちchatGPTのwebサイトにいって使うのが面倒…

いい感じのアプリにもなっていないので、Discordと連携させて手軽に使いたいと思ったので作ったときの記録を残します。

ちょっとした調べ物をするときにすぐにChatGPTに聞けるようになったので結構便利だったので気になった方はぜひ作ってみてください。

作るもの

下記のように「chat XXXX」とDiscordに投稿すると、XXXXをChatGPTへ問い合わせた結果をDiscordで確認できるものを作成します。

Discord_bot.jpg

必要なもの

Discordのアカウント

Discordのアカウントを持っていない人は下記などを参考に適当にアカウントを作成してください。

https://support.discord.com/hc/ja/articles/360033931551-の始め方

Discordのbot

ボットの作成方法は以下を参照。使うプログラムもこのページで紹介されているdiscord.pyを利用したものになります。

https://www.freecodecamp.org/japanese/news/create-a-discord-bot-with-python/

ChatGPTのAPIアカウント

ChatGPTのAPIアカウントの作成方法は以下を参照。

https://saasis.jp/2023/03/06/遂に公開されたchatgpt-apiとは?-利用するまでの流れ【/

起動させるサーバ

24h立ち上げているマシンがなにかすでにある人であれば問題ないが、無い人に向けたおすすめのbot用サーバ

  • AWS EC2(t4g.small)
  • Raspberry Pi

両方試したが、私が使っているRaspberry Pi3は10年近く前のものなので、動作が安定しなかった。EC2(t4g.small)は2023年12月31日まで無料トライアル中(1ヶ月あたり最大750時間)なので動かすサーバが無い人にはおすすめです。

https://e-kamo.net/t4g-small-free-trial

利用しているソフトウェアとバージョン

  • Python 3.9.13

ライブラリのインストール

discordのbotを制御するdiscord.pyとChatGPTのAPIを利用するためのライブラリをインストールします。

# python3 -m pip install -U discord.py
# pip3 install openai

プログラムの作成

下記のプログラムでをchatGPT.pyという名前で作成します。

Discordのbot_keyとChatGPTのAPI_keyは取得したものに置き換えてください。

#!/usr/bin/env /opt/Python-3.9.13/python

import discord
import openai

client_key = "Discordのbot_key"
openai.api_key = "ChatGPTのAPI_key"

intents = discord.Intents.default()
intents.message_content = True

client = discord.Client(intents=intents)

@client.event
async def on_ready():
    print(f'We have logged in as {client.user}')

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('chat'):
        quesion = message.content.split('chat')[1]
        wait_message = "" + quesion + "」について調べるよ。\n"
        await message.channel.send(wait_message)
        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "user", "content": quesion},
            ]
        )
        await message.channel.send(response["choices"][0]["message"]["content"])

client.run(client_key)

プログラムの実行方法

作成したプログラムをpythonで実行します。

# python3 chatGpt.py

実行結果

We have logged in as (Discordのbotの名前) が表示されればbotが正常に起動しています。

# python3 chatGpt.py
2023-03-25 15:42:21 INFO     discord.client logging in using static token
2023-03-25 15:42:22 INFO     discord.gateway Shard ID None has connected to Gateway (Session ID: a4467d07dc16abae8c21f3b885a2990f).
We have logged in as XXXX

動作確認

chat XXX(ChatGPTに聞きたいワード) を入力して回答が表示されればokです。

Discord_bot_test.jpg

試しに今回作成するにあたって必要なdiscordのbotアカウントの作り方を聞いてみました。

質問

chat discordのbotの作り方を教えて

回答

discordのbotを作るためには、discordアカウントが必要です。以下の手順を実行して、botを作成できます:

  1. discord Developer Portalにアクセスします:https://discord.com/developers/applications

  2. "New Application"を選択して、アプリケーションを作成します。

  3. アプリケーションの設定で、"Bot"を選択して、新しいBotを作成します。

  4. Botの名前、アイコンなどの設定を実行して、"Copy"を選択して、Botのトークンをコピーします。

  5. コマンドラインに移動し、Discord botを作成するために必要なモジュールをインストールします。

例えば、discord.pyの場合は以下を実行します:

pip install discord.py
  1. 自分のプロジェクトにdiscord botのトークンを設定します。
import discord

client = discord.Client()

TOKEN = 'your_token_here'

client.run(TOKEN)
  1. Botを作成し、Discordサーバーのコマンドを実行できるように、適切なコードを書いてBotをプログラムします。
@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('!hello'):
        await message.channel.send('Hello!')
  1. Botを起動します。
client.run(TOKEN)

以上の手順を実行すれば、discord botを作成できます。もちろん、より複雑なBotを作成するために、discord.pyなどのリファレンスドキュメントを参照することをお勧めします。
Discord Developer Portal
Discord Developer Portal — API Docs for Bots and Developers

おわりに

連携するための手順をまとめましたが、botの作り方のように簡単なものであればChatGPTが教えてくれた手順に沿って実施するだけで実施できそうなことがわかりました。

AIがもっと進歩して、開発周りが楽になってくれると嬉しいですね。

10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?