我正在尝试在用户的 DM 中运行 AwaitMessage 函数,但它不起作用。有人可以帮忙吗?
错误:类型错误:无法读取未定义的属性“awaitMessages”
const discord = require('discord.js')
module.exports = {
name: "team",
description: "You can create a new team",
usage: "team",
category: "info",
run: (client, message) => {
const member = message.member;
const user = message.author;
member.send("Do you want continue ? (Yes/No)");
message.dmChannel.awaitMessages(user == message.author, {max: 1 , time: 40000})
.then (collect => {
if (collected.first().content.toLowerCase() == 'yes') {
member.send("Test")
} else {
member.send("Test")
}
});
}
}```
答案 0 :(得分:0)
首先,我建议对多个 awaitMessage 使用 async/await,因为代码会变得非常嵌套且难以查看。
代替
message.dmChannel.awaitMessages(user == message.author, { max: 1 , time: 40000 })
使用
let collected = await message.dmChannel.awaitMessages(filter, { max: 1, time: 400000 });
如果您试图只允许触发命令的用户通过过滤器,只需匹配如下 ID:
let filter = (m) => { m.author.id == message.author.id; }
最后,如果用户没有回复,只需使用 try/catch 块,就像这样
let filter = (m) => {
m.author.id == message.author.id;
};
try {
let collected = await message.dmChannel.awaitMessages(filter, {
max: 1,
time: 400000,
});
let response = collected.first().content.toLowerCase();
if (response == "yes") {
member.send("Test");
} else {
member.send("Test");
}
} catch (e) {
return message.reply("Looks like you took too long to reply!");
}
希望可以为您服务。