discord
DiscordDay 7

DiscordPHPを使って簡単なBotを作ってみる - 導入編

Discord Advent Carendar 2017 7日目

空いてたので、導入編として最初の設定だけ書いちゃいます。

DiscordPHPとは

3日目や4日目の記事にもあった erisdiscord.js みたいなライブラリの一種ですね。
名前どおりPHPで書けるライブラリです。

やってみよう

DiscordPHPのドキュメントがありますので、そこのGetting Startedからやっていってみます。

Botユーザの作成

Getting Startedを始める前にBot自身を作成しないといけませんので、そちらも作成しておきましょう。
詳細は3日目にsbhrさんが書かれていますので、ここでは割愛しますね。
sbhrさんの記事

今回はPHP珠ちゃんのBotを使います。
image.png

composerでdiscord-phpを導入

PHP界隈では有名なcomposerを使用します。
composerのインストールについてはここでは触れませんので、ご了承ください。

まずcomposer用ファイルのcomposer.jsonを作成します。

composer init と入力

ターミナルで入力してね
⫸ composer init


  Welcome to the Composer config generator



This command will guide you through creating your composer.json config.

Package name (<vendor>/<name>) [*****/discord-php-sample]:
Description []: discord php sample project
Author [***** <*****@gmail.com>, n to skip]:
Minimum Stability []:
Package Type (e.g. library, project, metapackage, composer-plugin) []:
License []:

Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]?
Search for a package:
Would you like to define your dev dependencies (require-dev) interactively [yes]?
Search for a package:

composer init すると上記のように色々と出てきて入力が求められますが
すべてEnterで大丈夫です。

composer.jsonが作成されたので、次はDiscordPHPのライブラリを導入してしまいましょう。

composer require team-reflex/discord-php を入力します。
入力するとずら~っとたくさん出てきて勝手に終わってくれます。

これで導入自体は完了です。

簡単なプログラムだけ書いてみる

あともう少しだけおつきあいを。
今回はまだDiscord上に流したりするようなものまでは書きませんが、動作確認程度はしてみましょう。
(Getting Startedに書いてあるコードをそのまま流用します。)

run.php
<?php

include __DIR__.'/vendor/autoload.php';

$discord = new \Discord\Discord([
    'token' => 'your-auth-token', // ←作成したBotのTokenを入力してね
]);

$discord->on('ready', function ($discord) {
    echo "Bot is ready.", PHP_EOL;

    // Listen for events here
    $discord->on('message', function ($message) {
        echo "Recieved a message from {$message->author->username}: {$message->content}", PHP_EOL;
    });
});

$discord->run();

動かしてみますぞ

さて、動かしてみましょうか。

ターミナルで php run.php を入力します。

プログラム側で記述していた Bot is ready. が最後に表示されていれば成功です。
image.png

Discord側では↓のようにBotがオンライン状態になっていればOKです。
image.png

では実際に動作を確認してみましょう。

Discord側での入力
image.png

確認しますぞ。
image.png

ちゃんとログに残ってますね!

まとめ

composerの扱いに慣れていれば、導入自体は一瞬で終わります。
簡単ですね。

おわりに

Getting Startedをただ日本語でQiitaに書いただけでしたね。
また後日、今度はDiscord上でのやりとりの部分を記事にしたいと思います。