2
1

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.

Pycordチュートリアル

Last updated at Posted at 2023-07-06

初めに

Discordのボット開発は一般的にdiscord.pyを用いられていますが、個人的にPycordのほうが使いやすいと思ったのでそちらの環境構築から実際に動作するまでを書いていきます。

私自身勉強しながら書いていたので、説明が不正確だったり不足している可能性があることをご了承ください。

開発はVSCodeを使っていきます

1.環境構築

まずはライブラリをインストールしていきます。

$ pip install py-cord

以下の画像のような文章が出力されたらインストールに成功です。
WindowsTerminal_BvXRCEseCh.png

2.Botの作成

アカウントの作成

次にボットを作成していきます。

Discordのデベロッパーポータルでサインインしてください。

サインインに成功すると右上にNew Applicationというボタンがあるので、そこをクリックするとBotの名前が決められます。

利用規約とポリシーに同意して作成するとGeneral Informationという画面が現れます。
image.png

トークンの取得

トークンとはプログラムが今作成したアカウントを認証するのに必要なコードです。

左上のメニューからBotに移動してください。
そしたら以下のような画像の画面が現れます。

image.png

USERNAMEの欄には先ほど入力した名前が表示されているはずです。
その下にReset Tokenというボタンがあります。
ここからトークンを取得していきます。

クリックするとトークンが表示されます。
このトークンは絶対に公開しないでください。

このトークンは後程使いますので、どこかにメモしておいてください。

導入

サーバーに今作成したボットを導入していきます。

左上のメニューからOAuth2→URL Generatorに移動してください。

image.png

ここでスコープと権限を設定していきます。

今回作成するボットは一般公開を想定していないのでSCOPESはbot BOTPERMISSIONSはAdministratorにします。
権限は目的に応じて変更してください。

image.png

設定に完了すると一番下にURLが生成されます。
それをコピーしてブラウザで検索しましょう

そうすると導入するサーバーを選択することができるので開発用サーバーを選択してはいを押しましょう。

image.png

サーバーからボットが無事に導入されていることを確認したらこちらでの作業はおしまいです。

3.開発

コード

今回は /testと入力するとボットがtestと返してくる機能を追加します。

コードは以下の通りです。

import discord

bot = discord.Bot()
token = 'トークン'

@bot.event
async def on_ready():
    print('起動しました。')

@bot.slash_command()
async def test(ctx):
    await ctx.respond("test")

bot.run(token)

解説

ライブラリ・トークン

上から説明していきます。

import discord

ここではpycordのライブラリを取り込んでいます。

この1文を忘れるとボットを起動したり、機能を追加することができません。

bot = discord.Bot()
token = 'トークン'

ここではクラスとトークンを代入しています。
トークンのところには先ほどメモしておいたトークンを入れてください。

起動確認

@bot.event
async def on_ready():
    print('起動しました。')

この部分はボットの起動確認を行います。
ボットが起動に成功すると、ターミナルに以下のように表示されます。

起動しました。

また、@の部分はデコレーターと呼ばれます。
これは機能を追加したりするために必須な部分で、うまく動作しないときはこれを忘れている可能性があります。

コマンド

@bot.slash_command()
async def test(ctx):
    await ctx.respond("test")

ここでコマンドを追加しています。
/ の後のコマンド部分の指定はデフォルトでは関数名になっています。
もし変更したい場合は

@bot.slash_command(name = 'hello')

このようにnameにコマンドを代入してください。

また、Discordのボットはネットワークを介して動作するので、非同期処理が必須となります。

async
await

上のコードは非同期処理をするためのキーワードでasyncは関数の前に付けることで、非同期関数として定義することができます。

awaitは非同期関数内で使用され、非同期処理の結果を待つために使用されます。

await ctx.respond("test")

ここでコマンドを受け取ったチャンネルにメッセージを送信しているのでawaitが必須となっています。

起動

bot.run(token)

ここでボットを起動しています。runメソッドの中ではトークンを入れており、これがないと起動しません。

4.動作確認

無事に起動が完了すると、サーバー内でボットがオンラインになっています。
image.png

/testと打って無事にtestと帰ってきたら成功です。サーバーにコマンドが反映されるまでに少し時間がかかります。

image.png

終わりに

基本的な開発はこんな流れになります。
pycordの公式ドキュメントを見て、何ができるか試してみるといいと思います。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?