Discord.js 消息收集器不值得
我正在发出一个支持命令:你键入一个命令,机器人向你发送一条消息,然后你回复该消息。我使用了等待消息功能,但它不起作用Discord.js 消息收集器不值得,discord.js,Discord.js,我正在发出一个支持命令:你键入一个命令,机器人向你发送一条消息,然后你回复该消息。我使用了等待消息功能,但它不起作用 case `support` : { message.channel.send("What's your problem?"); let filter = m => m.author.id === message.author.id; let msg = await message.channel.awaitMessa
case `support` : {
message.channel.send("What's your problem?");
let filter = m => m.author.id === message.author.id;
let msg = await message.channel.awaitMessages(filter, {maxMatches: 1});
message.channel.send("Your problem is: " + msg.first().content);
break;
}
要使用.then()
,您需要返回一个。这是如何使用承诺的一个基本示例:
const myFunction = () => {
return new Promise((resolve, reject) => {
if(taskIsSuccesFullyDone)
{
resolve(true); // Pass anything
}else{
reject('Something went wrong!');
}
});
}
myFunction().then(() => {
// Task is succesful completed.
// Do anything
})
.catch(error => console.log(error.message || error));
在您的情况下,您的代码如下所示:
function support_message() {
return new Promise((resolve, reject) => {
message.author.send(`Hello, <@${message.author.id}>, reply to this message explaining the problem you have.`)
.then(message => resolve(message))
.catch((error) => {
message.reply("I can't send you messages, be sure that you allow direct messages from unknown users to use this command.");
reject(error);
})
});
}
case `staff-support` : {
support_message().then(message => {
// We got the message object passed from the resolved Promise
// Do anything here
})
.catch((err) => {
// There was a problem!
// Do anything here.
});
break;
}
功能支持\u消息(){
返回新承诺((解决、拒绝)=>{
message.author.send(`Hello,回复此消息,解释您的问题。`)
。然后(消息=>解析(消息))
.catch((错误)=>{
reply(“我无法向您发送消息,请确保您允许来自未知用户的直接消息使用此命令。”);
拒绝(错误);
})
});
}
案例“工作人员支助”:{
支持_message()。然后(message=>{
//我们从已解决的承诺中传递了消息对象
//在这里做什么
})
.catch((错误)=>{
//有个问题!
//在这里做任何事。
});
打破
}
谢谢您的回答,我现在在邮件收集器上还有其他问题。所以我编辑了post@manujonex现在还不清楚消息收集器有什么问题。你能解释一下或者编辑一下你的帖子让它更容易理解吗?