ロゴ ロゴ

DiscordのチャットボットをPythonで実装してみた

概要

 今回はDiscord上で動くチャットボットの作成に挑戦しました。その作成過程を簡単に書いていこうと思います。
 また、説明は以下の作成手順に沿って書いていきます。

<作成手順>
①Discord Botの作成
②Botのプログラム
③プログラムの補足説明を少し
④結果

①Discord Botの作成

 この部分はブログを見ながら作成しました。私は、以下のリンクのサイトで
「プログラミング言語の選定」~「Botをサーバーに招待」(目次から参照する)
までを読んで作成することができました。
サーバー認証が終わると、作成したBotがDiscord上に現れます。

<参考リンク>
・Discordのテキストチャット読み上げbotの作り方を紹介!|app world
https://appli-world.jp/posts/16908

②Botのプログラム

 サーバーとBotの準備が終わったのでプログラムを書きました。

import discord
import sys #終了時に使用
import pya3rt #A3RTのTalk APIを使用

TOKEN = '*******************************' #①で作成したサーバーのTOKENに置き換えます

TALK_API_KEY = '**********************' #取得したAPIキーに置き換えます。説明は後ほど

client = discord.Client()
chat_client = pya3rt.TalkClient(TALK_API_KEY)

channel_id = ******************* #ここはチャンネルのIDを置き換えます。説明は後ほど


async def greeting():
    greet = client.get_channel(channel_id)
    await greet.send('こんにちは!')

#ログイン時
@client.event
async def on_ready():
    print('Logged in !') #コマンドプロンプト上
    await greeting() #Discord上

@client.event
async def on_message(message):

    #メッセージを送ったのがBot自身であるときは何もしない。
    if message.author == client.user:
        return

    #「!exit」と入力すると終了する
    if message.content == '!exit':
        await message.channel.send("またね!")
        sys.exit()
    #他の時は送ったメッセージに対して反応してくれる
    else:
        response = chat_client.talk(message)
        await message.channel.send((chat_client.talk(message.content)['results'][0]['reply']))


client.run(TOKEN)

③プログラムの補足説明を少し

1.A3RTのTalk APIとは?
 Talk APIはChatBotを作成するためのAPIで、株式会社リクルートが公開したAPIの一つです。Recurrent Neural Networkが用いられているそうです。今度どのようなブログラムなのか勉強してみようと思います。 
 「A3RT」というAPI群にTalk APIはあり、他にも様々なAPIが公開されています。ぜひ見てみて下さい。
 また、API KEYの発行はメールアドレスを記入するだけで可能なので簡単に取得することができました。

<参考リンク>
・Talk APIの製品紹介ページ|A3RT
https://a3rt.recruit-tech.co.jp/product/talkAPI/

2.チャンネルのIDとは?
 チャンネルIDとは、Discordのテキストチャンネルを識別する番号のことです。
 今回のプログラムでは、この番号を設定することで、Botの起動時に特定のテキストチャンネルに「こんにちは!」と出力させることができます。

<注意>
 チャンネルIDを取得するためには、開発者モードをオンにする必要があります。開発者モードの設定には、

「ユーザ設定」→「アプリの設定」→「詳細設定」→「開発者モード」

とし、開発者モードをオンにすれば可能です。
 その後、設定したいテキストチャンネルを右クリックし、「IDをコピー」からIDを取得します。

結果

1.Chatbotのログインが完了すると「こんにちは!」と表示されます。

2.例えば、「好きな食べ物はなんですか?」と聞くと「果物です」と答えてくれました。

3.他にも、挨拶をしたり質問ではないメッセージを送ったりしても会話を行うことができました。

4.会話を終わらせるときは「!exit」とすると「またね!」というメッセージとともに終了します。強制的に終了させる場合は、コマンドプロンプト上で「Ctrl + C」を押すことで可能です。

<実行方法>

 私が使っているWindows10のパソコンでは、コマンドプロンプトやターミナル上で

py -3 (ファイル名).py

と入力することで実行ができました。

コメント

 以上の方法によって、一通りチャットボットを作成することができました。
 これからは一日中ログインした状態にできるように工夫したり、しりとりができるような機能を追加できたらいいなと思います!

参考にしたリンク(紹介していないもの)

・Pythonで実用Discord Bot(discordpy解説)
https://qiita.com/1ntegrale9/items/9d570ef8175cf178468f

・discord.py へようこそ。 – Read the Docs
https://discordpy.readthedocs.io/ja/latest/index.html

コメント入力

関連サイト