4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

itohalAdvent Calendar 2022

Day 2

discord botを作成する流れ

Last updated at Posted at 2022-12-01

初めに

この記事では,discord.pyを利用したdiscord botの作成の流れをします.
ただ,discord.pyはPython 3.8 以降で動作するそうなので,そこだけ注意してください.

discord botアカウントの作成

discord botを作るには,そのアカウントが必要です.そのためアカウントを作成します.
英語が読めるなら,公式ドキュメントを読むのが一番ですが,discord botについての日本語記事はいっぱいあるので適当に探してください.自分が参考にしたものは,「Discord Botアカウント初期設定ガイド for Developer」という記事です.

botを作成するとアクセストークンを入手できるようになると思います.忘れるとトークンを再生成しないといけなくなります.当然の話ではありますが,もし再生成した場合,再生成以前のトークンは使えなくなるので注意してください.その対策として環境変数にトークンを入れておきましょう.

環境変数への設定

botのトークンをOSに環境変数として設定しておきましょう.(環境変数の設定は私が書いた記事があるので読んでいただけると喜びの舞を捧げます.ちなみに結論だけ知りたいなら別の記事を読んだ方がいいです)

ただ,わざわざOSに設定しなくてもPythonなら,.envファイルに環境変数を記述しpython-dotenvを利用した設定もあります.おそらくこちらの方が取り回しが良いと思います.
python-dotenvについては,「python-dotenvを使って環境変数を設定する」,「.env ファイルで環境変数を設定する (python-dotenv)」といった記事を参考にすると良いと思います.

環境変数の取得

pythonにおいて環境変数の値を取得するにはos.getenvを利用します.os.environでも取得できるそうですが,細かい話は「Pythonで環境変数を活用する」という記事が参考になると思いますのでそちらを見てください.

というわけで,試しに.envpython-dotenvを使った環境変数について試してみましょう

環境変数の実験

ファイル構成
.
├── .env
└── envtest.py
.env
QIITA=qiita
RAM="sheep meat"
envtest.py
import os
from dotenv import load_dotenv
load_dotenv()

print(os.getenv("QIITA"))
print(os.environ.get("RAM"))

このようにファイルを用意して,実行してみます.

bash
$ python3 envtest.py 
qiita
sheep meat

大丈夫そうですね.同じようにしてbotのトークンも設定しておきましょう.

discord.pyのインストール

続いて,discord.pyのインストールをしましょう.GitHubのREADMEだったり,discord.pyのドキュメントにインストールの方法が書いてあるのでその通りにインストールすれば大丈夫です.

discord.pyのインストールができたら,ようやくbotを動かしましょう.

botを動かす

まずはbotのアカウントを自分のサーバーに招待しておきましょう.アカウント作成したときに参考にした記事に招待の方法がありますのでそちらを見てください.
招待してbotがサーバーに入ったのを確認したらコードを書いていきます.とりあえずで動かすだけなら公式ドキュメントのクイックスタートをそのまま持ってくるのが早いと思います.

botアカウントにログインさせるだけなら以下の通りです.

discordbot.py
import os
import discord
from dotenv import load_dotenv
load_dotenv()


intents = discord.Intents.default()
client = discord.Client(intents=intents)
client.run(os.getenv("TOKEN"))

これで動かすと

image.png

こんな感じでログインしてくれると思います.

intentsは,

Permissions と同様に、提供されるプロパティは双方向で利用できます。通常の真偽値であるかのように、 プロパティを使用し個々のビットを設定したり取得したりできます。

とあります.要するにbotに何をさせるか,させないかの権限みたいですね.基本的にdiscord.Intents.default()で基本的なものはONにさせとくのが楽だと思います. ただし,message_contentなど一部のものは個別で指定する必要があり,また,developer portalでそのbotのBOT項目Privileged Gateway IntentsにおいてもONに設定する必要があります.

image.png

あとはひたすらにコーディングしたり,APIリファレンスとにらめっこしたり,「こういうのしたいんだけどどうしたらいいんだろう」っていうのを検索したり,エラーと格闘したり,APIリファレンスとにらめっこしたりしてbotを作っていきましょう.

以上がdiscord botの作成までの流れとなります.
お疲れ様でした.

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?