Javascript Node.JS Discord bot输入

Javascript Node.JS Discord bot输入,javascript,node.js,discord,Javascript,Node.js,Discord,我正在制作一个discord机器人,需要从用户命令中捕获文本,例如!添加var1 var2 var3 var4 var5 var6,其中vars是需要放入mysql的信息。代码的功能也很好,但我不熟悉node.js和discord,在google上找不到任何关于如何捕获命令输入以用作数据库值的信息 const prefix = "!"; client.on("message", message => { if (message.content.startsWith(prefix + "ko

我正在制作一个discord机器人,需要从用户命令中捕获文本,例如!添加var1 var2 var3 var4 var5 var6,其中vars是需要放入mysql的信息。代码的功能也很好,但我不熟悉node.js和discord,在google上找不到任何关于如何捕获命令输入以用作数据库值的信息

const prefix = "!";
client.on("message", message => {
if (message.content.startsWith(prefix + "kos")) {
    connection.query("SELECT kos_id, kos_name, kos_coords,kos_seenby FROM rogue_kos ORDER BY 
kos_name", function(err, rows, fields) {
    rows.forEach(function(row) {
    console.log(row.kos_id, row.kos_name, row.kos_coords, row.kos_seenby, row.kos_date);
        const embed = new Discord.RichEmbed()
        .setTitle('Records Management')
        .setColor(3447003)
        .setDescription('Please select an option.')
        .setTimestamp()
        .addField('1. View KoS List', 'Respond with "1" to SEARCH records')
        .addField('2. Add to KoS List', 'Respond with "2" to ADD a record - Currently 
Unavailable.');
        message.channel.send({embed})


        message.channel.awaitMessages(response => (response.content === '1' || response.content === 
"2"), {
            max: 1,
            time: 100000,
            errors: ['time']
        }).then(mg => {
            if (mg.first().content === "1"){ //Have to use .first() because mg is a Collection
        const embed = new Discord.RichEmbed()
        .setTitle('Search Results')
        .setColor(3447003)
        .setDescription('ID | NAME | COORDS | ADDED BY | DATE ADDED\n\n' + row.kos_id + ' | ' + 
row.kos_name + ' | ' + row.kos_coords + ' | ' + row.kos_seenby + ' | ' + row.kos_date)
        .setTimestamp()
        message.channel.send({embed})
            }else if (mg.first().content === "2"){
        const embed = new Discord.RichEmbed()
        .setTitle('Add Record')
        .setColor(3447003)
        .setDescription('Currently Unavailable')
        .setTimestamp()
        message.channel.send({embed})
            }
        }).catch((err) => {
            message.channel.send("Ran out of time!");
        })
    })
})
}
});

我不知道语法是否相同,但是对于sqlite3数据库,您可以使用如下查询

const arg = commandArgs;
const user = message.author;
const query = `UPDATE yourTableNameHere SET yourColumn=? WHERE user_id= ?`
  db.run(query, [arg, user],(err, rows) {
    if (err) {
      return console.error(err.message);
    }
***your if/else statements here***    
});

当然这并不确切,但它可能会让你知道如何做。此外,您还需要添加限制和检查,以确保命令参数符合您的预期。

好的,我会尝试一下,看看它是如何运行的,并让您知道,谢谢。事实上,现在我已经对它熟睡了,我建议将其设为回调函数并以这种方式使用。这就是我编写所有更新代码的方式,它工作得很好,尽管您不必这样做。另外,您正在更新的信息是否也是discord集合的一部分?如果是,您需要添加其他内容来更新两者。收集部分可以忽略,因为我不熟悉这种类型的编码,所以我遇到的问题是将每个值与命令输入分开,并在insert语句中使用它们,而不是将多个命令值放入一列中。因此,空格后面的每个值都需要自己的var或类似的东西,如果这样做有意义的话,那么我该怎么做呢:
!add name level coords self是此处输入的一些代码,用于转换或拆分这4个值的连接;callback2.argsSplit[1];//外部```