search
LoginSignup
15
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

PythonでDiscordのボットサンプルを作成(rewrite版)

(2019/04/09)discord.pyが正式リリースされたので一部内容を変更しました。
(※rewrite版と呼ばれていたものがdiscord.pyになりました)

対象

PythonもDiscord Botも初めての方が対象です。

今回作るもの

Discordで 「!眠たい」 と入力すると 「"ユーザー名"さん 寝ましょう」 と返事をする簡単なBotを作ります

※このページではrewrite版(async版を新しく書き換えたもの)でBotを作ります。
従来のasync版でBotを作りたい場合は、Pythonで簡単なDiscord Botの作り方 を参考にしてください。

この記事を書いた時の環境

(2019/03/06)
- Windows 10
- Pycharm (Pythonコードを書く環境)
- Python 3.7.2
- discord.py 1.0.0a (rewrite版)

Discordとは

Discordとは、無料のゲーマー向けチャット・音声通話ツールです

あらかじめやっておくこと

  • Pythonを書くテキストエディタを入れておく

PythonをWindowsにインストールする

PythonをWindowsにインストールする を参考にして導入してください。

discord.pyのインストール

discord.pyをインストールします。

$ python3 -m pip install -U https://github.com/Rapptz/discord.py/archive/rewrite.zip

↓(2019/04/09)discord.pyが正式リリースされたので記述が変わりました。
(下記の方法でインストールしてください)

$ python3 -m pip install -U discord.py

Bot用のトークンを手に入れる

DiscordのDeveloperのサイトに行って新しいBotを登録します
無題.png
左側のBot欄を選択しCreateを押します。
無題5.png
次にTOKEN欄に行ってCopyをクリックします。
(これを後で使いますのでメモ帳あたりにペーストしておいてください)
無題2.png
最後にOAuth2欄に行きます。
botを選択し、Copyを押します。
無題3.png
WWWブラウザのアドレス欄にペーストすると以下の画面が表示されます。
無題4.png
導入したいサーバーを選択します。

コードを書く

1.以下のコード部分を全てコピペしてください。
2.一番下の行の”アクセストークン”にBotのトークンを貼り付けてください
3.:exclamation:UTF-8という形式で保存してください:exclamation:
4.保存してください

main.py
import discord
import random  # おみくじで使用

client = discord.Client()  # 接続に使用するオブジェクト


@client.event
async def on_ready():
    """起動時に通知してくれる処理"""
    print('ログインしました')
    print(client.user.name)  # ボットの名前
    print(client.user.id)  # ボットのID
    print(discord.__version__)  # discord.pyのバージョン
    print('------')


@client.event
async def on_message(message):
    """メッセージを処理"""
    if message.author.bot:  # ボットのメッセージをハネる
        return

    if message.content == "!眠たい":
        # チャンネルへメッセージを送信
        await message.channel.send(f"{message.author.mention}さん 寝ましょう")  # f文字列(フォーマット済み文字列リテラル)

    elif message.content == "!投票":
        # リアクションアイコンを付けたい
        q = await message.channel.send("あなたは右利きですか?")
        [await q.add_reaction(i) for i in ('⭕', '❌')]  # for文の内包表記

    elif message.content == "!おみくじ":
        # Embedを使ったメッセージ送信 と ランダムで要素を選択
        embed = discord.Embed(title="おみくじ", description=f"{message.author.mention}さんの今日の運勢は!",
                              color=0x2ECC69)
        embed.set_thumbnail(url=message.author.avatar_url)
        embed.add_field(name="[運勢] ", value=random.choice(('大吉', '吉', '凶', '大凶')), inline=False)
        await message.channel.send(embed=embed)

    elif message.content == "!ダイレクトメッセージ":
        # ダイレクトメッセージ送信
        dm = await message.author.create_dm()
        await dm.send(f"{message.author.mention}さんにダイレクトメッセージ")


# botの接続と起動
# (botアカウントのアクセストークンを入れてください)
client.run("アクセストークン")

実行してみよう

保存したファイルをコマンドプロンプトで実行してみましょう

$ python main.py
ログインしました
ボットの名前
ボットのID
discord.pyのバージョン
------

これが表示されていると起動・ログインに成功しています。
最後にDiscordのBotのいるサーバーのテキストチャンネルで「!眠たい」と打つと返事が返ってきます。

関連

PythonでDiscordボットを作る時のFAQ
https://qiita.com/Karaf/items/7d52c95c94268627b618

参考

Pythonで簡単なDiscord Botの作り方
(私が初めてBotを導入した時に大変参考にさせていただきました)
https://qiita.com/PinappleHunter/items/af4ccdbb04727437477f

PythonをWindowsにインストールする
https://qiita.com/psychoroid/items/9930e871fb8169a91f9a

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
What you can do with signing up
15
Help us understand the problem. What are the problem?