[Node.js] [Discord] Discord の Bot を作る。 その2

全体の流れ

  1. Botの用意をする。
  2. 開発環境を用意する。 <- いまここ
  3. テストコードを作成する。 <- ここもやる
  4. ボイスチャンネルの入退出に反応するようにする。

開発環境を用意

まず前提として Node.js が必要になるので無い人はインストールしてください。 そして、コマンドプロンプトやターミナル上で npm が使用できることを確認してください。

次に適当な場所に作業フォルダを作っておいてください。
(例として今回は e:\work\discord_bot を作業用フォルダにしてます。)

そしたら次にコマンドプロンプトで作業用フォルダを開き、以下を実行します。

e:\work\discord_bot\> npm install --no-optional eris

※今回はVoice関連の機能を利用しないので --no-optional を付けてます。もし必要であれば --no-optional を外しましょう。

npm initをしていないため、package.json が無いとの警告は出ますが、今回は動かすだけなので 気にせずにいきます。

テストコードを作成

環境が整ったところでソースコードを書いていきます。 なにかしらのテキストエディタがあると楽です。
※個人的にはNode.js向けの環境が初めからある程度整ってる Visual Stadio Code をおすすめしておきます。

動作テスト用のテストコードは Erisの公式サイト にありますのでそちらを流用します。

まずは作業フォルダに適当な名前のjavascriptファイル(今回はtest.js)を作成します。 そして以下のソースコードを書いてきます。

const Eris = require("eris");

// BOT_TOKEN は 自身が作成したBotの Bot token の文字を記述します。
var bot = new Eris("BOT_TOKEN");

bot.on("ready", () => {
    // bot が準備できたら呼び出されるイベントです。
    console.log("Ready!");
});

bot.on("messageCreate", (msg) => {
    // 誰かがメッセージ(チャット)を発言した時に呼び出されるイベントです。
    if(msg.content === "!ping") {
        // "!Ping" というメッセージを受け取ったら "Pong!" と発言する。
        bot.createMessage(msg.channel.id, "Pong!");
    } else if(msg.content === "!pong") { 
        // "!Pong" というメッセージを受け取ったら "Ping!" と発言する。
        bot.createMessage(msg.channel.id, "Ping!");
    }
});

// Discord に接続します。
bot.connect();

BOT_TOKEN については 前回の記事 でBotを作ったページを開き、 以下の画像の赤枠箇所をクリックすると
BotToken

以下の画像の赤枠内にずらーっとながい文字列が並ぶので、それをコピーして貼り付けてください。
BotToken

このTokenは他人には教えないようにしてください。悪用の恐れがあります。

ソースコードの内容としては "!ping" とメッセージを入力したら "Pong!"、"!pong"と入力したら "Ping!"と返します。

Erisはこのようにイベントを登録して、そのイベントが発生すると処理を行うという形になっています。 この仕組を利用して、返信したりするBotを作成していきます。

ここまで出来たら実行をしてみます。

コマンドプロンプトやターミナルを開いて、以下を実行してください。

e:\work\discord_bot\> node test.js

実行に成功すると以下のようになるはずです。

e:\work\discord_bot\> node test.js
Ready!
_

ではDiscordを開いて、サーバーのほうを確認してみます。

ちなみにmarkdown編集用sublimetextです。

Botがログインしてるのがわかります。やったー。

では先程のソースコードの通り、返信されるかも確認します。

チャット欄に "!ping" または "!pong" と打ち込むと...

簡単とはいえ反応返してくれるだけでも楽しい

ちゃんと返信されました!

返信するだけのものであればこんな感じに結構簡単につくれるようになってます。


次回はボイスチャンネルの入退室に反応するようにします。

[Node.js] [Discord] Discord の Bot を作る。 その1

ボイスチャンネルの入退出お知らせを出来るのを目標にチュートリアルを書きます。 一気に内容を書くのも私が疲れるので、3回ぐらいに分けます。

なお、javascriptやnode.jsをある程度使えることを前提にしてます。 あとOSはWindowsですが、Node.jsが使える環境であれば同じだと思います。

全体の流れ

  1. Botの用意をする。 <- いまここ
  2. 開発環境を用意する。
  3. テストコードを作成する。
  4. ボイスチャンネルの入退出に反応するようにする。

今回はこの中の Botを用意する を行います。

Botの用意

※今後、Discord側の仕様が変更された場合に方法が変わっている可能性がありますのでご注意ください。

まずはDiscordのホームページを開きます。

次に開発者ページに移動します。 ※Discordへのログインが必要です。
開発者ページ

次に My App をクリックします。
My App

右側にこのようが画面が表示されるので、 New Appをクリックします。
ChenBotはこの記事を書く前に作成してました。

Botの名前と必要であれば画像を選択し、Create Appをクリックします。
NekoBot

作成に成功したら、以下の画面になるので、Create a Bot Userをクリックします。
Create Bot User

次にブラウザで以下のURLにアクセスします。

https://discordapp.com/oauth2/authorize?&client_id={Client ID}&scope=bot&permissions=0

{Client ID} は以下の画像のように表示されてる数値をそのまま入力してください。
Client ID

成功すると以下のような画面が出るので、Botを追加する先のサーバーを選択して、認証ボタンをクリックします。
※最初のうちはテスト用のサーバーを作っておくのがいいかもです。
Server選択

Discordクライアントを見てサーバーに以下のようにBotが参加してたらOKです。
※テスト用サーバーなのでぼっちなのは仕様です。
ぼっちサーバー


今回はここまで。次回から開発環境を用意して、とりあえず動かすところまでやります。

Node.js で Discord の bot を作ってみたお話。

ちょっとしたきっかけでDiscordのbotを作ってみました。

↓こんな感じのもの。

ちぇんちゃんが入退室お知らせしてくれる。

返信よるコマンド機能とか

Botの作り方は別の記事で書くとして、とりあえず紹介として今回利用した環境は以下の感じ。

javascriptとNode.jsの知識があれば割りとすぐに出来る感じです。

[ゲームプレイ] SFRTS風ハクスラ、PixelPrivateers

先日、steamにてリリースされたPixelPrivateersが面白くてハマってます。

とても派手でスピーディーな戦闘なのでテンポがよい。

内容的には一言で言うと、RTS風SFのDiabloライクなハクスラRPG。 ランダムに生成される宇宙マップと惑星を探索してミッションをこなしながら、 装備を拾いパーティを強化しなが進んでいくというゲームになっています。

戦闘にはMMORPGのようなロール要素が存在し、敵を引きつけタンクを受け持つVanguard、味方を回復するMedic、二丁拳銃やグレネードなどで殲滅するMarine、 遠距離から高火力支援を行うScout、煙幕やタレットなどで支援を行うEngineerの5つのクラスがあります。

クラスは装備しているTools(盾やグレネード、回復ボットなど)で自動的に変更され使用できるスキルも変わってきます。

成長システムはキャラクターがレベルアップした時のステータス振り分けと、リサーチによるパッシブ能力の取得(これは一度とれば自分の乗員全てに適用される)のみでシンプル。 ただ前途のToolsのや武器種類、防具のオプションの豊富さがビルドの幅を広げてるので構成を考えていくと思ったより面白いです。 武器は近接武器のほか銃器も多彩でアサルトライフルからスナイパーライフル、火炎放射器やランチャーなどの種類が。

ちなみにTool欄に銃を持たせると二丁拳銃のMarineになる

レベルアップのテンポもよく、装備もどんどんおちるので装備更新やキャラクター成長のテンポも早く、 ついつい時間を忘れてやってしまうというハクスラ特有の中毒性もしっかり抑えてあってついついやってしまう。 なによりゲームバランスが良いのが○。簡単だなーとおもったらミッションの難易度を上げることも。

戦闘がRTS風なので若干操作が慣れるまで難しいけど、シングルプレーであれば時間を止めることができるので 作戦を練りながらやることも出来ます。そうでなくてもある程度は操作キャラクターを切り替えなくても画面にでるアイコンをクリックすればスキルを使えるので、 操作が面倒ってことはあまりないです。回復系はAIにほぼ任せっきりでとりあえずなんとかなる。

またこのゲーム、最大4人までのマルチプレイも出来て、シングルだと最大8人のキャラクターを自分ひとりで操らなきゃいけないのが、 各プレイヤーが自分のキャラクターを持ち寄って分隊毎の役割分担ができるのでMMOちっくなロールプレイも楽しめる!実際やってみたけどマルチはかなり楽しいです。 ちなみにキャラクター8人の枠が増えるわけでなく、全プレイヤー合わせて8人(3プレイヤーだったら3,3,2という割当といった具合)なのでそこはお間違えなく。

SteamでJPYで1,480円で買えるのでハクスラRPG好きな人はお勧めです。

[PoE] [2.5] サモナー記録 Part 3

日付が空きましたがpart3です。

ちょっと思うことがありパッシブツリーを大きく取り直しが必要になってキャラを作り直したので、まだnormalが終わってません。作業もしながらだから多分次リーグまでにマップ入れるかちょっと怪しい。

Act3突入段階での、いまのパッシブツリーの状態がこちら。

パッシブツリー

ゾンビとスケルトンの数を増やせるノードを先に取りつつ、右下のLeadershipを取りに行く語りです。左下にも数を増やせるノードはあるのですがそちらは少し後回しです。

ミニオンをオーラで補強するのであればオーラ範囲上昇系は必要でした。デフォだと狭くて全然届かなくてしょんぼり。


3.0の情報が公式で発表されましたね。

まさかのストーリーがAct10までの実装となって驚きましたが、いまの3つの難易度はどうなるのかなーと気になる所です。1週+αだけしたらとりあえずマップに入れるぐらいなら楽でいいんだけどなーとか。