DiscordのBotを作ってみよう #1(導入編)
はじめに
どうも、SkypeからDiscordに移行した水無瀬です。
最近Discord流行ってますよね。
そのDiscordでbotが作れるみたいなので、試しに作ってみようと言う企画になります。
試しに作るのはダイスボットと言うことで。
さくっと導入から簡単なものを動かせるようになるまで。
導入...の前に
今回botに使用するのはPythonなので、そこの準備は適当に。
homebrewが入っているならbrew install python3
とかでinstall出来ます。
さくっと導入
プログラムの準備
まずはライブラリを以下のコマンドで導入します。
python3 -m pip install -U discord.py[voice]
[voice]は無くてもインストール出来ますが、
音声サポート受けるならこっちって書いてあったので、とりあえずこっちで。
サンプルを丸コピすれば動きますが、その前にDiscord側の設定を。
Discord側の設定
"newApp"をクリック。"APP NAME"を入力すると右下のボタンが"Create App"に変わるのでクリック。
成功すると"APP DETAILS"が出てくるので、"Client ID"を覚えといて下さい。
僕みたいに記憶力に自信がなければ、メモ帳にでもコピペしとけば問題ないです。
次に、その1個下にある"Create a Bot User"をクリックするとなんか確認が出てくるので、"Yes,do it!"をクリックで。
そうすると、"Token"の隣にある"click to reval"をクリックしてTokenをメモっといて下さい。
サーバにBot君を招待して上げなきゃいけないので、以下のURLの【】の部分を自環境に合わせて変えて下さい。
ここで先程の"Client ID"を入れてあげます。
https://discordapp.com/oauth2/authorize?&client_id=【ApplicationClientID】&scope=bot&permissions=0
これでようやく事前準備が完了です。
Botを作ってみよう
サンプルコードをダイスボットへとサクッと改良。
コードは以下の通りです。
# -*- coding: utf-8 -*- import discord import asyncio import re,random client = discord.Client() @client.event @asyncio.coroutine async def on_ready(): pass print('Logged in as') print(client.user.name) print(client.user.id) print('------') @client.event async def on_message(message): matchDice = re.search(r'1d100 <= (\d+)', message.content) # 1d100 <= '数字' で1d100の判定が出来る if matchDice: num = randNum() targetNum = matchDice.group(1) resultMessage = '1D100 <= ' + str(targetNum) + '→' + str(num) if num <= int(targetNum): await client.send_message(message.channel, resultMessage + '成功') else: await client.send_message(message.channel, resultMessage + '失敗') # お試し100面ダイス振るだけよう elif message.content == '1d100': num = randNum() await client.send_message(message.channel, str(num) + 'だよ') def randNum(): # 乱数精製 randomNum = random.randint(1,100) return randomNum client.run(【Token】)
コードのやってることはコメントの通りです。
やってるのは1d100の判定と100面ダイスを振るだけです。
動かすとこんな感じ。
まとめ
サンプルとしては良いかなってところです。
これから機能を追加できて行く予定。
また追加されたらそのときにでも。
それでは今回はこの辺で。