【23日目】Discordで会話Botを作ってみる

# はじめに
こんにちは、なりかくんです。
今回は、discord.jsを使って会話Botを作ってみようと思います。

# 会話AIに使うサービス
今回は、会話AIにmeboという会話AI構築サービスを使ってみようと思います。
https://mebo.work/

まず無料で登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/b753aeb8-3a3c-388a-d99d-07063c7c3240.png)

登録出来たらダッシュボードから「新規作成して開始する」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/598f1d94-c467-2491-5791-8c9d399892a9.png)

ここで作成するエージェントの名前などを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/4babaaef-e1fa-c167-58d7-e182c37909d2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/855de4d8-0474-12ad-f3db-7a891aa07d34.png)

設定出来たら、「登録して開始する」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/26383248-c84e-66ad-af8c-b2e333b8cda0.png)

これで登録完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/9a0c7df6-b2e6-8150-abad-920981004d02.png)

トレーニングなどでAIを強化していきます。トレーニングしたら反映します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/c97f1d66-c2e4-2703-b609-66afe4ec9ad3.png)

プレビューで試してみると、会話はほぼ成り立ちませんが一応会話は出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/bd0b007d-439a-f9ac-7f30-9d55a300978a.png)

では、公開してみましょう。今回は限定公開で扱います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/5bc50b1b-5777-25e5-8f6f-ab0b1b34e532.png)

APIを有効にします。そして、出てくる情報をメモしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/632a1ee2-fe99-7b4e-802c-5ccc29714ffd.png)

# discord.jsに組み込む
では、discord.jsに組み込みたいと思います。
今回は、以下のようなコードを作りました。
```js:mebo.js
const request = require("request");
const { Client, GatewayIntentBits, IntentsBitField } = require('discord.js');
const { token } = require('./config.json');

const client = new Client({ intents: [GatewayIntentBits.Guilds, IntentsBitField.Flags.GuildMessages, IntentsBitField.Flags.MessageContent] });

client.on('ready', () => {
	console.log(`${client.user.tag}でログインしました。`);
});

client.login(token);

client.on('messageCreate', async message => {
	try {
        if (message.author.bot) return;
        let meboResult = await mebo(message.channel.id, message.content);
        message.reply(meboResult.bestResponse.utterance);
	} catch (error) {
		console.error(error);
	}
});

function mebo(chId, msg) {
    return new Promise((resolve, reject) => {
        request({
            url: "https://api-mebo.dev/api",
            method: "POST",
            json: {
                api_key: "API Key",
                agent_id: "Agent ID",
                utterance: msg,
                uid: chId
            }
        }, function (error, response, body) {
            if (error) {
                reject(error);
            } else {
                resolve(body);
            }
        });
    });
}
```

実際に動かしてみます。意外と結構会話がなりちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/911cf32d-67b3-5228-f579-c3da2198e763.png)

おじさんの相手には最適かもしれないですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/a1c3d4a1-e022-1f99-0330-f760aed68255.png)

今回は、meboを使って会話Botを作ってみました。無料プランだと会話できる回数が限られているので、他に無料で使えるやつがあればそれを使うのもいいかもしれないです。

以上です、最後までお読みいただきありがとうございました。