如何修复Discord Bot Keyv〔Object Promise〕错误



我对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的字符串形式。您的朋友是正确的,您需要使用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.`
);
});

理解承诺的指南:

  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises
  • https://discordjs.guide/additional-info/async-await.html
  • https://javascript.info/async-await

相关内容

最新更新