2017-05-30 88 views
1

我已經創建了自己的不和諧機器人爲我的服務器,我想回答我,如果我說的是誰在陣列tabHello特定的單詞:discord.js的Node.js - 機器人回覆

var tabHello = ['Bonjour','Salut','Hello', 'Guten tag', 'Buenos Dias']; 
    var tabAnsw= ['Bonjour votre majesté.','Salutations jeune Douzien !','Ouais, ouais. T\'es qui déjà ?', 'Bonjour ' + message.author + ', comment vas-tu aujourd\'hui ?']; 

    if (message.content.indexOf('Hello') > 0 && message.isMentioned(client.user)){ 
     var row = Math.floor(Math.random() * tabAnsw.length); 
     message.channel.sendMessage(tabAnsw[row]); 
    } 

隨着這段代碼,如果我說「@bot Hello」,他回答一個值爲的tabAnsw數組。但我想回答我,如果我說一個值tabHello數組。 而且,如果說「你好@bot」,他不回答我。

有人可以幫助我嗎?

對不起,我的英語:■

回答

0

您可以隨時使用for循環。

var tabHello = ['Bonjour','Salut','Hello', 'Guten tag', 'Buenos Dias']; 
var tabAnsw = ['Bonjour votre majesté.','Salutations jeune Douzien !','Ouais, ouais. T\'es qui déjà ?', 'Bonjour ' + message.author + ', comment vas-tu aujourd\'hui ?']; 
var content = message.content.split(' '); 

for(var x = 0; x < content.length; x++){ 
    if(tabHello.includes(content[x]) && message.isMentioned(client.user)){ 
     var row = Math.floor(Math.random() * tabAnsw.length); 
     message.channel.send(tabAnsw[row]); 
    } 
} 
+0

噢,謝謝你! :) – SalakissODV

0

這應該做的伎倆

var tabHello = ['Bonjour','Salut','Hello', 'Guten tag', 'Buenos Dias']; 
var tabAnsw= ['Bonjour votre majesté.','Salutations jeune Douzien !','Ouais, ouais. T\'es qui déjà ?', 'Bonjour ' + message.author + ', comment vas-tu aujourd\'hui ?']; 

if (tabHello.indexOf(message.content) > -1 && message.isMentioned(client.user)){ 
    var row = Math.floor(Math.random() * tabAnsw.length); 
    message.channel.sendMessage(tabAnsw[row]); 
} 

所以不是檢查消息爲世界你好,這種檢查如果消息包含在數組中。

+0

嗨!我在來這裏之前試過這個,但是沒有反應。 – SalakissODV

+0

是否有反正你可以發佈你的機器人的地方或給我一個github鏈接,所以我可以檢查出來,看看有什麼不對? –

+0

喲,可以在這裏找到這個機器人的源https://github.com/SalakissODV/Jollia我刪除了令牌 – SalakissODV

0

我去了,使這個對你來說,它的工作原理與厄里斯我試圖將其轉換爲discord.js,它應該工作,但不是100%肯定它會。

var tabHello = ['bonjour', 'salut', 'hello', 'guten tag', 'buenos dias']; 
var tabAnsw = ['Bonjour votre majesté.', 'Salutations jeune Douzien !', 'Ouais, ouais. T\'es qui déjà ?', 'Bonjour ' + message.author.username + ', comment vas-tu aujourd\'hui ?']; 

for (i = 0; i < tabAnsw.length; i++) { 
    if (message.content.startsWith(client.user.mention) && message.content.toLowerCase().indexOf(tabHello[i])) { 
     var row = Math.floor(Math.random() * tabAnsw.length); 
     message.channel.sendMessage(tabAnsw[row]); 
     break; 
    } 
} 

我去和轉換tabHello的所有內容,這樣以後你可以忽略用戶的外殼爲小寫的版本,例如,如果約翰#1234是進入「@Bot你好」它仍然會工作,因爲我們忽略套管。

0

我已經建立了這個小腳本,讓您可以在此之上構建機器人:

index.js:

const Discord = require('discord.js'); 
const client = new Discord.Client(); 
const config = require('./config.json'); 
const commands = require('./commands'); 
const prefix = config.prefix; 

const commandExecuter = new commands(); 

client.on("ready",() => { 
    client.user.setGame('Minecraft'); 
    var servers = client.guilds.array().map(g => g.name).join('.'); 
    console.log('Bot started'); 
}); 

client.on('message', message => { 
    //Check if its a command 
    isBotCommand(message.content, (command) => { 
     //If it is, lets execute it if we can 
     if (command) { 
      commandExecuter.execute(message, client, command); 
     } 
    }); 
}); 



const isBotCommand = (message, callback) => { 
    //Get the first char of the message 
    let firstChar = message.charAt(0); 
    //If it does not equal our prefix answer that it's not a bot command 
    if (firstChar !== prefix) return callback(false) 
    //We got here, so it seems to be a command 
    return callback(message.substring(1)); 
} 

client.login(config.token); 

添加文件「commands.js」到根目錄和粘貼以下內容:

const botCommandExecuter = function() {} 

const findCommandFromStack = (command, callback) => { 
    //Find the command in the commands array 
    commands.some((iteratedCommand) => { 
     //If our keyword is inside the currently iterated command object we have a match 
     if (iteratedCommand.keywords.indexOf(command) > -1) { 
      //Call the callback and break the loop 
      callback(iteratedCommand.action); 
      return true; 
     } 
    }); 
} 

botCommandExecuter.prototype.execute = (messageInstance, client, command) => { 
    //Find the command 
    findCommandFromStack(command, (commandToExecute) => { 
     //Execute the command we found 
     commandToExecute(messageInstance, client); 
    }); 
} 

//List of commands 
const commands = [ 
    { 
     keywords: ['Bonjour','Salut','Hello', 'Guten tag', 'Buenos Dias'], 
     action: (message, client) => { 
      var tabAnsw = ['Bonjour votre majesté.','Salutations jeune Douzien !','Ouais, ouais. T\'es qui déjà ?', 'Bonjour ' + message.author + ', comment vas-tu aujourd\'hui ?']; 
      var row = Math.floor(Math.random() * tabAnsw.length); 
      message.channel.sendMessage(tabAnsw[row]); 
     } 
    } 
]; 

module.exports = botCommandExecuter; 

仍然有很多改進和錯誤處理的空間,但我會留給你。祝你好運!