if (message.content === "!test"){
client.users.cache.get('id').send('message');
console.log("message sent")
}
这个方法不起作用,我找不到任何其他有效的方法是拼写错误还是这种方法过时了?
实际上我自己也遇到过一次这个错误。你可能会面临两个问题:
- 用户尚未被discord.js缓存
- 尚未为该用户打开
DMChannel
要解决第一个问题,您必须先获取用户,然后再使用它。请记住,这是一个Promise,因此您必须使用await
才能完成它,或者使用.then(...)
。
const user = await client.users.fetch('id')
一旦通过用户ID获取了用户,就可以创建一个DMChannel
,它再次返回一个promise。
const dmChannel = await user.createDM()
然后你可以像正常一样使用你的频道
dmChannel.send('Hello!')
尝试创建这样的变量:
var user = client.users.cache.find(user => user.id === 'USER-ID')
然后这样做:
user.send('your message')