はじめに
友達とゲームをするときにボイスチャットって重要ですよね.ボイチャアプリを色々ネットで探してたら**Discordが強い**ということを小耳にはさみました.せっかくDiscordを使うならBotを使って便利にしてみようと思いました.
今回作るもの
友達がDiscordのサーバに接続(≒ゲームを開始)したら「○○さんがonlineになりました!」みたいな投稿するBotがあれば便利そうなので作ってみます.
下準備
DiscordのBotを作るには以下のことをしておく必要があります.
- Discordのアカウントを作成
- Botのトークンキー取得
- discord.pyのダウンロード
1.はアカウントを作るだけなので省略します.以下で,2-3について述べていきます.
Botのトークンキー取得
Discordの開発者用のページで新しいBotを登録します.
- マイアプリの新しいアプリをクリック
- アプリケーション名のところにBotの名前を記入
- Botユーザを作成をクリック
- トークンキーを確認(後で使います)
- 自分のサーバにBotを追加
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をコピーできます.
今回は,「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_ready,on_message,on_member_updateなどの使い方はAPIリファレンスを参考にしました.
基本的にsend_message(CHANNEL,MESSAGE)
で,任意のチャンネルにメッセージを送信できます.
実行結果
$ python3 test.py
最初のほうはよかったんですが,通知が飛びまくるのでだんだんうざく感じるようになりました...
(友達から通知がうるさいと苦情が来たので,この機能はお蔵入りになりました.....)
今回参考にしたページ
意外と簡単だったからDiscordのBOTを作ってみるよ
Pythonで実用Discord bot(discord.py解説)
Pythonで簡単なDiscord Botの作り方
API Reference - discord.py 0.16.12 documentation