Edited at

DiscordのBotをPythonで作ってみた

More than 1 year has passed since last update.


はじめに

友達とゲームをするときにボイスチャットって重要ですよね.ボイチャアプリを色々ネットで探してたらDiscordが強いということを小耳にはさみました.せっかくDiscordを使うならBotを使って便利にしてみようと思いました.


今回作るもの

友達がDiscordのサーバに接続(≒ゲームを開始)したら「○○さんがonlineになりました!」みたいな投稿するBotがあれば便利そうなので作ってみます.


下準備

DiscordのBotを作るには以下のことをしておく必要があります.

1. Discordのアカウントを作成

2. Botのトークンキー取得

3. discord.pyのダウンロード

1.はアカウントを作るだけなので省略します.以下で,2-3について述べていきます.


Botのトークンキー取得

Discordの開発者用のページで新しいBotを登録します.


  1. マイアプリの新しいアプリをクリック



    Discordのこういうところ好き


  2. アプリケーション名のところにBotの名前を記入


  3. Botユーザを作成をクリック


  4. トークンキーを確認(後で使います)


  5. Generate OAuth2 URLをクリック

    キャプチャ6.PNG


  6. 表示されたURLに飛ぶ


  7. 自分のサーバにBotを追加


こんな感じに追加できていたら準備完了です.

キャプチャ9.PNG


discord.pyのダウンロード

pipを使ってインストールします.


$ pip install discord.py


Bot作成

discord.pyをインポートし,トークンキーとテキストチャットのチャンネルIDを書いておきます.


import discord

TOKEN = "**************************" # トークンキー
TEXT_CHANNEL = **************************** # テキストチャットのチャンネルID

client = discord.Client()

text_chat = discord.Object(id=TEXT_CHANNEL)

チャンネルIDは詳細設定の開発者モードをオンにした後,



チャンネルを右クリックすると,IDをコピーできます.

キャプチャ11.PNG

今回は,「Botがログインしたら」,「こんにちはメッセージが送られてきたら」,「メンバのステータスが変更されたら」の3つの機能を実装してみました.


# Botがログインしたら
@client.event
async def on_ready():
msg = "やあ!TEST Botです.よろしくね!"
await client.send_message(text_chat,msg)

# こんにちはメッセージ
@client.event
async def on_message(message):
if message.content.startswith("こんにちは"):
if client.user != message.author:
msg = "こんにちは " + message.author.name + "さん!"
await client.send_message(message.channel, msg)

# メンバのステータスが変更されたら
@client.event
async def on_member_update(before, after):
if before.status != after.status:
msg = after.display_name + " さんが " + str(after.status) + " になりました"
await client.send_message(text_chat,msg)

# Bot起動
client.run(TOKEN)

on_readyon_messageon_member_updateなどの使い方はAPIリファレンスを参考にしました.

基本的にsend_message(CHANNEL,MESSAGE)で,任意のチャンネルにメッセージを送信できます.


実行結果

$ python3 test.py

Botがあいさつしてくれます.

キャプチャ14.PNG

ユーザが接続,切断するたびに通知が飛びます.

最初のほうはよかったんですが,通知が飛びまくるのでだんだんうざく感じるようになりました...

(友達から通知がうるさいと苦情が来たので,この機能はお蔵入りになりました.....)


今回参考にしたページ

意外と簡単だったからDiscordのBOTを作ってみるよ

Pythonで実用Discord bot(discord.py解説)

Pythonで簡単なDiscord Botの作り方

API Reference - discord.py 0.16.12 documentation