我有一个可以工作的DM命令,但如果我尝试DM一个关闭了DMs的人,user.send('test')
会给出以下错误:
UnhandledPromiseRejectionWarning:DiscordApiError:无法向此用户发送消息
我如何让它检查用户是否打开了DMs?
不幸的是,user对象上没有任何属性可以告诉您是否可以DM它们。但是,您可以将.send()
方法包装在try-catch块中。如果它抛出,则不会发送消息:
const user = message.mentions.users.first();
try {
await user.send('test');
message.channel.send(`Message sent to ${user}`);
} catch (error) {
console.log(error);
message.channel.send(`I couldn't message ${user}`);
}