参考 : discord.jsのフレームワークKlasaが強すぎる
合わせて読んでください。
準備
- 環境
- Win10
- Node.js 12.13.0
- npm 6.12.0
適当にプロジェクトフォルダを作成し discord.js と Klasa をインストール
npm install--save discordjs/discord.js dirigeants/klasa
コーディング
最初の一歩
app.js
を作成
app.js
constsecret=require('./secret.js');// BOTトークンはここに記述consttoken=secret.token;const{Client}=require('klasa');newClient({prefix:'!!',// ボットのPrefixlanguage:'ja-JP',// 言語コード}).login(token);
この状態で一度 node app.js
から起動し、危険なログが出てなければとりあず成功。
コマンドの作成
commands/general
配下に以下のソースを作成。Klasaはファイル名がそのままコマンド名になる。
ディレクトリ名はヘルプのカテゴリ名になる。
なお、下のソースに書かれている usage
は単なる説明文ではなく引数のマッチャを参照するための記述なので注意。(これで30分ぐらい潰した……)
commands/general/hello.js
const{Command}=require('klasa');module.exports=classextendsCommand{/**
* @constructor
* @param {...any} args
*/constructor(...args){// コマンドのオプション: https://klasa.js.org/#/docs/klasa/master/typedef/CommandOptionssuper(...args,{description:'挨拶を返す',usage:'<name:string>',// <>は必須引数、[]はオプション引数、<名前:型>のように書く});}/**
* @param {*} message
*/asyncrun(message,[name]){returnmessage.sendMessage(`${name}さんこんにちは!`);}};
参考 :
Klasa : CreatingArguments
Klasa : CreatingCommands
BOTの反応はこんなかんじ
データストアの作成
providers
ディレクトリにプロバイダを作成する。公式を見るとなんか適当に書いてよさそうだったので適当に書いてみる。
providers/datas.js
const{Provider}=require('klasa');module.exports=classextendsProvider{/**
* @constructor
* @param {...any} args
*/constructor(...args){super(...args,{name:'datas'});this.counter=0;}/**
* init
*/init(){this.counter=1;}/**
* countup
* @return {Number} count
*/countup(){this.counter++;returnthis.counter;}};
hello.js
から動作確認してみる。
const{Command}=require('klasa');module.exports=classextendsCommand{/**
* @constructor
* @param {...any} args
*/constructor(...args){// コマンドのオプション: https://klasa.js.org/#/docs/klasa/master/typedef/CommandOptionssuper(...args,{description:'挨拶を返す',usage:'<name:string>',});this.data=this.client.providers.get('datas');}/**
* @param {*} message
*/asyncrun(message,[name]){returnmessage.sendMessage(`${name}さんこんにちは!${this.data.countup()}回めの挨拶ですね!`);}};
本当に適当に動いてしまった。