Javascript Node.JS Discord bot输入
我正在制作一个discord机器人,需要从用户命令中捕获文本,例如!添加var1 var2 var3 var4 var5 var6,其中vars是需要放入mysql的信息。代码的功能也很好,但我不熟悉node.js和discord,在google上找不到任何关于如何捕获命令输入以用作数据库值的信息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
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];//外部```