3
4

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.

はじめてのDiscordBot

Posted at

背景

グラブルのDiscordの鯖で毎日定時に日課の募集かけてくれるBot欲しいよねーって話があって、試しに作ってみた。
プログラミング自体はJavaとかを少々やってるくらい。
Botに関してはなんか自動で動くものっぽい程度の認識。
いわゆる超初心者がBotを始めて作ってみたよ、って感じの備忘録。

準備するもの(物理)

  • Botを稼働させる環境(とりあえず電源いれっぱなしのPCを利用)

準備するもの(PC)

  • pythonの開発環境(本記事では簡単に)
  • DiscordのBotアカウント

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

  • こちらの記事を参考にBotアカウントを作成。
    • 普段アプリ版を使っていてDEVELOPER PORTALがどこにあるか結局分からなかったので、ブラウザ版でDiscordにログインしてDEVELOPER PORTALにアクセスした。

2.pythonのインストール

  • 公式サイトから落としてくる
    • 記載時点で最新のバージョン(3.7.3)を利用
    • 普通にOK連打でインストール完了
    • これで動くのかなーと思って他の方が作ったコードを動かしてみたところ、importエラーっぽいものが発生。
      • pythonさんがデフォルトでdiscordBotに対応してるワケないよねってことでそれも導入

3.discordBot開発に必要なライブラリの導入

  • この辺を参考にしながら導入。
  • コマンドプロンプトでコマンドを打つと、一応完了。
> py -m pip install -U discord.py

なんか python -m pip install --upgrade pip してくれみたいなメッセージも出たので一緒に更新しておく。

> py -m pip install --upgrade pip

4. いろいろ試行錯誤しながら作成

  • discord.pyは3.6以前と3.7以降で結構変わったらしい。
    • 古いサンプルはそのまま流用できない。
    • この記事に詳しく書いてあるので参考にしながら手直し。
  • リアクション付ける時に数字のリアクション用意するのが大変だった。
    • 結果としては f'{1}\N{COMBINING ENCLOSING KEYCAP}' みたいに書くことで動いた。まさかフォーマット指定で数値を入れるとは。
    • 普通の絵文字は \N{Unicode名称} でOK。数値が特殊。
  • チャンネルIDはDiscordの開発者モードを有効にしないと取得できない。
# coding:UTF-8
import discord
from datetime import datetime
from discord.ext import tasks

client = discord.Client()

TOKEN = "トークン"

@client.event
async def on_ready():
    print('ready.')
    time_check.start()

@tasks.loop(seconds=60)
async def time_check():
    timeStr = datetime.now().strftime('%H:%M')
    if timeStr == '07:00':
        channel = client.get_channel(チャンネルのID)
        msg = await channel.send("本日アルバハに参加したい方を募集します。\n\n21時~ :one:\n22時~ :two:\n23時~ :three:\nいつでも :four:")
        await msg.add_reaction(f'{1}\N{COMBINING ENCLOSING KEYCAP}')
        await msg.add_reaction(f'{2}\N{COMBINING ENCLOSING KEYCAP}')
        await msg.add_reaction(f'{3}\N{COMBINING ENCLOSING KEYCAP}')
        await msg.add_reaction(f'{4}\N{COMBINING ENCLOSING KEYCAP}')

client.run(TOKEN)

5.起動

コマンドプロンプトから

py 作成したファイル.py

でとりあえずは動く。
理想を言えばどっかに別サーバ立てて自分のPCを落としても問題なく動くようにしたいところではあるけれど、身内用の簡単なBotだしこんなもんでいいか、ということで終了。

3
4
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
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?