我正在为我的discord机器人创建一个awaitMessages,以便将项目添加到我的机器人上的虚拟商店。在这篇awaitMessages中,我想指出文章的价格。所以答案必须是一个数字,但问题是,当我写一个不是数字的答案时,awaitMessages就被取消了。我希望,当我发送一个不是数字的消息时,它会发送一个错误消息,但是awaitMessages不会取消,并且我会再次写一个响应。
const filter = m => m.author.id === message.author.id;
message.channel.send('Price').then(msg => {
message.channel.awaitMessages(filter, {
max: 1,
time: 10000,
errors: ['time'] })
.then(collected => {
if(isNaN(collected)) return message.channel.send('not a number')})
.catch(collected => msg.delete());
});发布于 2020-05-18 08:10:05
您需要向筛选器添加条件。
const filter = m => m.author.id === message.author.id && !isNaN(parseInt(m.content));
message.channel.send('Enter a price\nHas to be a number.').then(msg => {
message.channel.awaitMessages(filter, {
max: 1,
time: 10000,
errors: ['time']
})
.then(collected => {
// Do something
})
.catch(collected => msg.delete());
});这不会发送错误消息,但是它不会触发您的收集器,因此不会停止尝试收集号码,直到发送一个号码或直到超时。
https://stackoverflow.com/questions/61860434
复制相似问题