所以我有这个东西,如果你在控制台中编写它,它会将消息发送到特定频道,在我的情况下,该特定频道是用户的 DM,但是..我得到了无法读取的属性“发送”未定义错误?
let y = process.openStdin()
y.addListener('data', res => {
let x = res.toString().trim().split(/ +/g)
const dmper = client.users.cache.get("704996899132014652");
dmper.send(x.join(' '));
})
错误是;
/home/runner/ottawa-v2/index.js:14
dmper.send(x.join(' '));
^
TypeError: Cannot read property 'send' of undefined
at ReadStream.<anonymous> (/home/runner/ottawa-v2/index.js:14:9)
at ReadStream.emit (events.js:314:20)
at ReadStream.EventEmitter.emit (domain.js:483:12)
at addChunk (_stream_readable.js:297:12)
at readableAddChunk (_stream_readable.js:272:9)
at ReadStream.Readable.push (_stream_readable.js:213:10)
at TTY.onStreamRead (internal/stream_base_commons.js:188:23)
答案 0 :(得分:0)
您的代码中有 2 个可能的错误。第一个是特定ID不正确,另一个是该ID所属的用户没有被缓存,导致他不是client.users.cache
集合的一部分。在第一种情况下,只需确保 ID 正确即可。在第二种情况下,您可以将 client.users.cache.get()
方法替换为 client.users.fetch()
,这会导致您获取 ID 的 User 对象,而不管用户是否被缓存。
注意:fetch()
返回一个 promise,因此在定义其结果时需要等待该方法。
.fetch()
的最终代码let y = process.openStdin()
y.addListener('data', res => {
let x = res.toString().trim().split(/ +/g)
const dmper = await client.users.fetch("704996899132014652");
dmper.send(x.join(' '));
})
答案 1 :(得分:0)
要使用 send() 方法,您需要有一个频道或用户对象。
在这种情况下 dmpr 未定义,client.users.cache.get();
出现问题,可能是您提供的 ID;但我建议你使用:
client.users.fetch(ID).then(user => {
user.send(yourMessage);
});