はじめに
どもー。
今年新卒入社したりょりょです。
エンジニア
りょりょ
季節の変わり目で体調崩しがちです。
皆さんお気をつけ。。。
エンジニア
りょりょ
記念すべき初記事となるわけですが、
今回はPythonを使ってDiscordのBotを使ってみようと思います。
Discordとは…
SkypeやSlackのように通話やチャットができるアプリケーション。
ゲームをやる人が使っているイメージ。
今回はこちらがキーワードを送信すると返信してくれる、一番基本的なBotを作っていきます。
〜環境〜
・Python 3.10.7
・pip 22.2.2
・discord.py 2.0.1
Pythonを書く前に
実はPythonで実際にプログラムを書く前にやることがあります。
それはTokenの作成です。
TokenはBotとプログラムを紐つけているようなもので、Bot作成には不可欠です。
何ならこれからの作業を行えばBotの招待自体はできるので、Bot作成完了と言っても過言ではありません。(もちろんまだ動きませんが…)
まず、DiscordDeveloperPortalにアクセスします。
右上の”NewApplication”をクリックしてApplicationを作成します。
次に左のサイドバーメニューから”Bot”をクリックします。
“AddBot”をクリックしてBotを作成します。
ここではBotの名前や画像などを設定するわけですが
今回はLogicalStudioのマスコットキャラクター”ロージー“で設定してみます。
あらかわいい♡
下にある項目も必要に応じて設定してあげてください。
結構詳しめに説明書いてあるので、読めばなんとなくわかると思います。
“ResetToken”をクリックするとTokenが生成されます。(このTokenはプログラミングで使います)
このTokenは絶対に第三者に漏らさないようにしてください。
Tokenが漏れてしまうとBotにアクセスされてしまいます。
次に設定したBotを招待するためのURLを生成します。
“OAuth2″→”URL Generator”と進みます
次にSCOPESを設定します。
今回はBotですので”bot”にチェックを入れます。
するとBotの権限を設定する項目が出てきます。
権限は使う機能に合わせて設定してください。
ここまでできたら、GENERATED URLのURLをコピーして、ブラウザのURL欄に貼り付けて遷移します。
これで招待完了です。サーバーを確認して作ったBotがいれば、早速プログラミングを始めましょう!!
プログラミングしよう
さっそくプログラムを書いていきましょう!!
discord.pyのドキュメントに書いてあるサンプルを動かしてみましょう!!
# This example requires the 'message_content' intent.
import discord
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
@client.event
async def on_ready():
print(f'We have logged in as {client.user}')
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('$hello'):
await message.channel.send('Hello!')
client.run('your token here')
‘your token here’の部分には自分のBotTokenを入れてあげてくださいね。
できたらこのプログラムを実行!!
ロージーがオンラインになりましたね!
クイックスタートのプログラムは”$hello”と入力すると”Hello!”と返してくれるシンプルなプログラムです。
実際に”$hello”と入力してみると・・・
こんな感じで返事をしてくれます(かわいい)
-おまけ- 改造して簡単なおみくじ機能を作ろう
ここまでできたら色々プログラムを追加していくだけなのですが、
今回はちょっとだけ改造して、おみくじ機能を実装してみようと思います!!
# This example requires the 'message_content' intent.
import discord
# 乱数を使うのでimport忘れずに!!
import random
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
# ここも追加分
OMIKUJI = ['大吉', '吉', '中吉', '小吉', '末吉', '凶', '大凶']
@client.event
async def on_ready():
print(f'We have logged in as {client.user}')
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('$hello'):
await message.channel.send('Hello!')
# ここから追加分
if message.content == '$おみくじ':
await message.channel.send(f'あなたの運勢は"{OMIKUJI[random.randrange(len(OMIKUJI))]}"しゅこ~')
# ここまで追加分
client.run('your token here')
おみくじの中身を配列で持っておいて、乱数で吐き出しています。
こんな感じで、コマンド→処理→アウトプットという感じで、簡単にコードを実装できます。
コードを実行してみると…
こんな感じでおみくじを楽しめます!!
おわりに
今回はPythonでDiscordBotを作ってみました。
Pythonの他のライブラリや、discordpyの他の機能を使うことで、本当に様々なものを作れるのでよかったら遊んでみてください!!
ロジカルスタジオではエンジニアを募集しています。
興味を持っていただけたら、是非採用サイトからご応募ください!