如何修复 Discord Bot Keyv [Object Promise] 错误?
How can I fix Discord Bot Keyv [Object Promise] error?
我是 discord.js 的新手,我正在为冬季开发一个机器人。我正在构建一个名为 !gift
的功能,它可以让您虚拟地向人们赠送东西。 (不是用钱或任何东西)。我正在使用 Keyv 来存储到目前为止每个用户收到了多少礼物。这是我的代码 -
client.on('message', message => {
const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
const command = args.shift().toLowerCase();
if (command === 'gift') {
let sender = message.author.username;
let receiver = message.mentions.users.first();
let [sender1, gift] = args;
if (keyv.get(receiver) === undefined) {
keyv.set(receiver, giftcount);
}
let prevvalue = keyv.get(receiver).then(prevvalue => {
return;
});
let currentval = keyv.set(receiver, prevvalue+=1).then(currentval => {
return;
});
};
//message.channel.send(currentval);
message.channel.send(sender + ' has gifted ' + receiver + ' ' + gift + '! They have ' + currentval + ' gifts right now.');
});
之前我加了.then()
,发消息的时候说
They have [object Promise] gifts right now.
我的朋友建议我添加 .then()
来解决这个问题,我做到了,但我不知道该把它放在哪里,他也不知道。
当我运行上述代码时,我得到以下错误-
ReferenceError: currentval is not defined
有人可以帮我吗?
[object Promise]
不是错误;它是未决承诺的字符串形式。你的朋友是对的,你需要使用Promise#then()
,并使用该函数中提供的变量。
另外,使用模板文字来提高可读性。
keyv.set(receiver, (prevvalue += 1)).then((currentval) => {
// message.channel.send(currentval);
message.channel.send(
`${sender} has gifted ${receiver} ${gift}! They have ${currentval} gifts right now.`
);
});
理解承诺的指南:
我是 discord.js 的新手,我正在为冬季开发一个机器人。我正在构建一个名为 !gift
的功能,它可以让您虚拟地向人们赠送东西。 (不是用钱或任何东西)。我正在使用 Keyv 来存储到目前为止每个用户收到了多少礼物。这是我的代码 -
client.on('message', message => {
const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
const command = args.shift().toLowerCase();
if (command === 'gift') {
let sender = message.author.username;
let receiver = message.mentions.users.first();
let [sender1, gift] = args;
if (keyv.get(receiver) === undefined) {
keyv.set(receiver, giftcount);
}
let prevvalue = keyv.get(receiver).then(prevvalue => {
return;
});
let currentval = keyv.set(receiver, prevvalue+=1).then(currentval => {
return;
});
};
//message.channel.send(currentval);
message.channel.send(sender + ' has gifted ' + receiver + ' ' + gift + '! They have ' + currentval + ' gifts right now.');
});
之前我加了.then()
,发消息的时候说
They have [object Promise] gifts right now.
我的朋友建议我添加 .then()
来解决这个问题,我做到了,但我不知道该把它放在哪里,他也不知道。
当我运行上述代码时,我得到以下错误-
ReferenceError: currentval is not defined
有人可以帮我吗?
[object Promise]
不是错误;它是未决承诺的字符串形式。你的朋友是对的,你需要使用Promise#then()
,并使用该函数中提供的变量。
另外,使用模板文字来提高可读性。
keyv.set(receiver, (prevvalue += 1)).then((currentval) => {
// message.channel.send(currentval);
message.channel.send(
`${sender} has gifted ${receiver} ${gift}! They have ${currentval} gifts right now.`
);
});
理解承诺的指南: