1
/
5

【Python】DiscordのBotを作ってみた

はじめに

記念すべき初記事となるわけですが、
今回は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の他の機能を使うことで、本当に様々なものを作れるのでよかったら遊んでみてください!!

ロジカルスタジオではエンジニアを募集しています。

興味を持っていただけたら、是非採用サイトからご応募ください!

PHPエンジニア
即戦力募集中!PHPで世界をちょっとよくしたいエンジニアをWanted!
ロジカルスタジオは、テクノロジーとデザインの視点からクライアントの課題解決をめざす、大阪のクリエイティブプロダクションです。 クライアントの期待を超えて「もっと良くなる、を見つける」のが私たちのスタイル。企画・提案からデザイン制作・システム構築、運用、改善提案をワンストップで行えるのが一番の強みです。近年ではその実績と品質が評価され、案件も急増しています。 代表の古川が掲げる企業理念は「絆を大切に、周りの人を豊かにし、社会に貢献する」。 私たちはこのミッションを推進するため、「新しい技術へのチャレンジ精神」を軸に、「切磋琢磨する仲間」と「働きやすい職場環境」を整え、「成長と可能性を大切にする風土」を育ててきました。 2019年9月に増床し、外部向けのセミナーにも活用できるカンファレンスルームを拡充。スタッフによる公式ブログや、マスコットキャラクター「ロージー&カール」によるTwitterなど、情報発信も強化しています。 可能性の芽をすくい上げられるこの場所を、より大きくしていきたい。 私たちと一緒に、このビジョンを実現しませんか。
株式会社ロジカルスタジオ
Invitation from 株式会社ロジカルスタジオ
If this story triggered your interest, have a chat with the team?
株式会社ロジカルスタジオ's job postings
7 Likes
7 Likes

Weekly ranking

Show other rankings
Like 矢澤 凌's Story
Let 矢澤 凌's company know you're interested in their content