Created: 2024/10/22

Discord.pyとGeminiでAIチャットbotを作成してみたはなし 後編

この記事はまだ完成していません.もう暫くお待ち下さい.

前回までのあらすじ


前編
https://nect-life.com/activities/7

ジッピーに褒められました.ということで前回はGeminiくんと楽しくお喋りできる所までが完成したので,やっとこさDiscord上に組み込む所までを解説していきます.


TL;DR

完成したものは此方です.記事の最後にも貼っています.

python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Geminiくんの召喚とフィルター関係
import google.generativeai as genai
from google.generativeai.types import HarmCategory, HarmBlockThreshold

# discord.pyを呼び出す
import discord

token = "discordのトークンを貼る"

# ~~discordの設定~~

# intents(おまじない)を唱える
intents = discord.Intents.default()
intents.message_content = True

# discordのクライアントを作成
client = discord.client(intents=intents)


# ~~Geminiの設定~~

# APIキーを貼り付けましょう
api_key = "ここにさっき出てきたAPIキーを貼り付ける"

# うし,じゃあ(APIキーを)ぶち込んでやるぜ!
genai.configure(api_key=api_key)

# モデルをジュンピ
model = genai.GenerativeModel("gemini-1.5-pro-latest")


# 起動した時の設定
async def on_ready():
    print(f"Logged in as {client.user.name}")

# メッセージが送られたら反応する関数
async def on_message(message):
    # bot自身には反応しない
    if message.author == client.user:
        return

    if message.content.startswith("!t"):
        # "!t"の文字を消す
        prompt = message.content[2:].strip()

        # チャット形式に変える!
        chat = model.start_chat(history=[])

        #新たにsafety_settingsを追加
        response = chat.send_message(
            prompt, 
            safety_settings={
                HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: HarmBlockThreshold.BLOCK_NONE,
                HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_NONE,
                HarmCategory.HARM_CATEGORY_HARASSMENT: HarmBlockThreshold.BLOCK_NONE,
                HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT:HarmBlockThreshold.BLOCK_NONE
                })

        # Geminiくんの返信をdiscordに送信
        message.reply(response.text)

if __name__ == "__main__":
    # botを起動!
    client.run(token)

ほんへ

1. Discord.pyってなんぞ???

簡単に言うとDiscordのbotを作る為のライブラリです.
・・・当たり前ですね(え?)

今回はこれを使っていきます.JavaScript版もあったりしますが今回はPythonで.

Discord.py 日本語リファレンス(英語版もあります)
https://discordpy.readthedocs.io/ja/latest/api.html


2.Discord_botの下拵え

という訳で早速準備の方,入らせていただきます~
先ずはbotの垢を作るゾ.botを管理する為のサイトに飛ぶゾ↓
https://discord.com/developers/applications
ログインしてない人はここでログイン,そもそも自分の垢がない人はここで作成,しよう!


したら画像のような画面に飛ぶので,右上にあるNew Applicationっていう青いボタンがあるのでそれをクリック.


するとCREATE APPLICATIONというウインドウが出てくるのでNAMEにbotのすてきなおなまえをつけましょう.(名前は後から変更できるので焦る必要は)ないです.
名前をつけたらBy clicking Create, you agree to ~~と書かれた所にチェックしておきましょう.英訳としては「bot開発の規約とポリシーに同意するんだな!?!?!?」という意味です.用心深い人は青い文字列からリンク先に飛んで英語を頑張って読みましょう.
それができたら右下の青いボタンCreateをクリック.これでbotそのものが作れます.
今回はgemini_chatというおなまえにしました.


すると画面のようなダッシュボードに切り替わります.なんか英語でよーわからん項目が左側にずらーっと並んでいますが,焦らないでください.解説しますゾ.

左側の項目からInstr

おわりに

参考文献