はじめに
@kakunpc さんが動かしていたマルコフ連鎖のBotで楽しく遊んでいたのですが、ふとこういうBotを自分でも作ってみたいと思い、ソース公開していないんですか?と質問したら公開してもらえたので、それを利用してDiscordで動くBotを作りました
環境
- Windows10
- Python3.6.4
Botの動き
Botに話しかけると、特定のファイルから日本語文章を読み込んで、その文章と、Discordの特定の名前のチャンネルの発言をあわせたテキストからマルコフ連鎖で生成した文章が投稿されます
マルコフ連鎖の文章を生成するプログラム:MarkovInu
こちらでソースが公開されています
https://github.com/kakunpc/MarkovInu
MarkovInu(以下マルコフ犬)のソースコードは C# で書かれています。そのため、ビルドしてやる必要があります
VisualStudioがない場合、VisualStudioをダウンロードしてきましょう。コミュニティ版は無償で使えます。
https://www.microsoft.com/ja-jp/dev/compare-editions
コンパイルに先立って、以下の2点を修正しました
- Sample.txt へのパスを
./base_text.txt
に変更 - 以下の1行を削除した
- https://github.com/kakunpc/MarkovInu/blob/master/MarkovInu/MarkovInu/Program.cs#L51
修正が終わったら、メニューの「ビルド」-「MarkovInuをビルド」を選択すると、MarkovInu\MarkovInu\bin\Debug
の中にライブラリなど含めて一通りビルドされています。
ファイル内の Sample.txt
を base_text.txt
にリネームしてこのディレクトリに配置してください。
ここでコマンドプロンプトを立ち上げて、ファイル内のMarkovInu.exe
を実行し、1行出力されたら、マルコフ連鎖の文章生成部分は完成です。
DiscordへのBotの登録
長くなったので記事をわけました
https://qiita.com/oosawa/items/e5b01e88a209d9087432
- Bot用のアプリケーションを作成し、TOKENを得る
- Botをディスコードのサーバに招待する
- Botを招待したサーバに、
maou-no-niwa
というチャンネルを作る
という3つの作業が必要です
Botの実装
Botのソースは以下で公開しています
https://gist.github.com/oosawa/7c38797b602d8da04e4a1f8eb2f16a08
これを動かすためには、pythonのインストールと、discord.pyのインストールが必要です。
python -m pip install -U discord.py
ファイルの配置
以下のようにファイルを配置してください
ディレクトリ
└reply.py
└create_base_text.py
└Inu
├MarkovInu.exe
├base_text.txt
├dic
:
Botの実行
コマンドプロンプトを立ち上げて
python reply.py
でBotがたちあがります
#maou-no-niwa
でいろいろ発言したあと、Botに話しかけてみてください
参考
https://github.com/Rapptz/discord.py
http://discordpy.readthedocs.io/en/latest/