2017-12-18 20 views
0

私はdisord.jsで不具合ボットを作って、すべての利用可能なコマンドをユーザーに表示するためのヘルプコマンドを実行しようとしました。discord.jsすべてのボットコマンドを一覧表示

例コマンド:は私のようなコマンドの完全なリストを含むメッセージを送信しようとしそして

module.exports.run = async(bot, message, args) => { 
    let msg = await message.channel.send("doing some magic ..."); 
    let target = message.mentions.users.first() || message.author; 

    await message.channel.send({files: [ 
     { 
      attachment: target.displayAvatarURL, 
      name: "avatar.png" 
     } 
    ]}); 

    msg.delete(); 
} 

module.exports.help = { 
    name: "avatar", 
    description: "show the avatar of a user", 
    usage: "[@user]" 
} 

avatar.js:

  • コマンド1つの
  • 説明
  • 用法
  • コマンド2
  • 説明
  • 使い方
  • ...

help.js

const fs = require("fs"); 
const Discord = require("discord.js"); 

module.exports.run = async(bot, message, args, con) => { 
    fs.readdir("./cmds/", (err, files) => { 
     if(err) console.error(err); 

     let jsfiles = files.filter(f => f.split(".").pop() === "js"); 
     if(jsfiles.length <= 0) { 
      console.log("No commands to load!"); 
      return; 
     } 

     var namelist = ""; 
     var desclist = ""; 
     var usage = ""; 

     let result = jsfiles.forEach((f, i) => { 
      let props = require(`./${f}`); 
      namelist = props.help.name; 
      desclist = props.help.description; 
      usage = props.help.usage; 
     }); 

     message.author.send(`**${namelist}** \n${desclist} \n${usage}`); 
    }); 
} 

module.exports.help = { 
    name: "help", 
    description: "show all commands", 
    usage: "" 
} 

私のコードはちょっと働いているが、それは最初のコマンドだけを送信します。

私はかなりjavascriptに新しいと私はこれに対する解決策を見つけることができません。 私はgoogleにforeachマップのすべての不和コレクションやものを試そうとしましたが、結果が結合される例を見つけることはできません。

誰かが私を助けたり、私にこのようなものを検索できるヒントを与えてくれれば誰でも。素晴らしいだろう。

答えて

1

あなたのコードが1つのコマンドを送信しているのは、あなたのコードがmessage.author.send('...'を1回だけ呼び出すためです。変数namelist,desclist、およびusageをすべてのファイルのデータで正常に設定しましたが、.forEach(...ループは次のファイルに移動するときにすべてのデータを上書きします。

このような.forEach(...ループの各反復内のデータを送信してください:

var namelist = ""; 
var desclist = ""; 
var usage = ""; 

let result = jsfiles.forEach((f, i) => { 
    let props = require(`./${f}`); 
    namelist = props.help.name; 
    desclist = props.help.description; 
    usage = props.help.usage; 

    // send help text 
    message.author.send(`**${namelist}** \n${desclist} \n${usage}`); 
}); 
関連する問題