16
24

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 5 years have passed since last update.

DiscordのBotをPythonで作ってみた

Last updated at Posted at 2018-06-16

はじめに

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

今回作るもの

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

下準備

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

  1. Discordのアカウントを作成
  2. Botのトークンキー取得
  3. discord.pyのダウンロード

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

Botのトークンキー取得

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

  1. マイアプリの新しいアプリをクリック
Discordのこういうところ好き
  1. アプリケーション名のところにBotの名前を記入
  1. Botユーザを作成をクリック
  1. トークンキーを確認(後で使います)
  1. Generate OAuth2 URLをクリック
    キャプチャ6.PNG

  2. 表示されたURLに飛ぶ

  1. 自分のサーバに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

16
24
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
16
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?