6
9

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備忘録 ①ボット作成編

Posted at

はじめに

Discord bot を作成した備忘録

とある事情でDiscord bot を作成したいと思ったので、bot作成から様々なアクションの備忘録
slackbot以外にも手を出してみたかった

お品書きは以下の通り

  • Discord とは
  • Discord bot の作成方法
  • モジュール,ディレクトリ構造など
  • いろいろ作ってみた

Discord とは

Discord(ディスコード)とは、~~~ 音声通話・VoIPフリーソフトウェアである。
(Wikipediaより)

私は今までSlackみたいに使ったことが何度かあった

SlackにボットがあるんだからDiscordも…と思って調べてみたらdiscordにもあったので作ってみようと

Discord bot の作成方法

discord developerから作成

Applications ページの New Applicationをクリック
cut1.PNG

ボット名を聞かれるので好きなボット名をつける

Bot ページを開き、Add Botボタンをクリック
Yes, do it!もクリック
cut2.PNG

作成されたボットが表示される
アイコンや名前も変更可能

TOKEN名をコピーしておく
cut3.PNG

OAuth2を以下のように設定する
(とりあえずTEXT系はすべてONにしてみた)
cut4.PNG
cut5.PNG

OAuth2設定画面にあるURLに接続するとどこのDiscordルームにBotを招待するか聞かれる
正体が完了されれば、見事Botがルームに入ってくる

cut6.PNG

モジュール,ディレクトリ構造など

モジュール

モジュールは以下の通り
必要があればインストールしてください

pip install discord   # discordを使用する際に必要

ディレクトリ構造

ディレクトリ構造は以下の通り

- dis_python
  - img
    - good.png
  -dis_test.py

いろいろ作ってみた

公式さん

discord.pyさんいろんなことが書いてあります。
やってみたいことを徹底的に調べると楽しい

プログラム

dis_test.py
import discord

TOKEN = "BotのTOKENを張り付ける"
client = discord.Client()

GOOD_IMG = "./img/good.PNG"

### イベントハンドラ一覧 #################################################
# async def の後を変えるだけで実行されるイベンドが変わる
# メッセージ受信時に実行:   on_message(message)
# Bot起動時に実行:      on_ready(message)
# リアクション追加時に実行:  on_reaction_add(reaction, user)
# 新規メンバー参加時に実行: on_member_join(member)
# ボイスチャンネル出入に実行: on_voice_state_update(member, before, after)
###################################################################


# bot起動時処理
@client.event
async def on_ready():
    channel = client.get_channel(チャンネルIDを張り付ける)
    await channel.send("やぁ!元気かい?")

# message を受け取ったとき
@client.event
async def on_message(message):
    # 送り手がボットの場合、無視
    if message.author.bot:
        return
    
    if message.content.startswith("こんにちは"):
        await message.channel.send("こんにちは!")
    
    if len(message.attachments) > 0:
        await message.channel.send("何かファイルを送ったね???")

@client.event
async def on_reaction_add(reaction, user):
    await reaction.message.channel.send('{}を押したね??'.format(reaction.emoji), file=discord.File(GOOD_IMG))


client.run(TOKEN)

細かい説明は次回にまとめることとします…

少し解説

TOKEN と チャンネルIDは自分が使用しているものを使ってください
チャンネルIDはURLの一番後ろの「数字たち2」です

://discordapp.com/channels/数字たち1/数字たち2

イベントハンドラ一覧には使いそうなものをまとめてあります
特にon_message()は良く使いますねー

出力結果

コマンドライン
cut7.PNG

botとの戯れ
cut8.PNG
cut9.PNG

とりあえずざっとまとめてみた

ドキュメントに関しては内容が濃いので、次回に回したいと思います
特にon_messageでのファイル操作などが意外と面倒だったのでそのあたりの備忘録を( ˘ω˘ )

6
9
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
6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?