繁体   English   中英

有什么方法可以从用户 object 那里获取 dmChannel id? (discord.js v11)

[英]Is there any way to get a dmChannel id just from the user object? (discord.js v11)

如果我想弄清楚如何获取 dmChannel 的 id,只有用户的 object 以便我可以在用户的 dms 中批量删除,我该怎么做? 我到目前为止的代码是:

let dm = client.users.get('123481923481234').createDM()

我得到的错误是:

TypeError: Cannot read property 'createDM' of undefined

我还尝试从公会成员列表中获取用户,这是代码:

        let dms = client.guilds.get('783871449466142750').then(guild=>{
          guild.members.get('432325763753050122').createDM().channel.id
        })

这得到了错误:

TypeError: client.guilds.get(...).then is not a function

有谁知道怎么了? 任何帮助,将不胜感激!

您是否尝试查看 discord.js 文档? 这是 discord.js 准确记录如何使用 discord.js 中可用的每种方法和属性的网站,您只需查看文档即可在几秒钟内解决您在此问题中遇到的所有问题。 文档是告诉您如何使用 discord.js 中所有内容的地方,应该是您寻找答案的第一个地方; 当您完全陷入困境时,StackOverflow 更像是您遇到的最后一种情况,而这肯定不是其中一种情况。

在您遇到的第一个问题中,错误告诉您一切: Cannot read property 'createDM' of undefined 这告诉我们什么? 它告诉我们client.users.get('123481923481234')undefined ,或者换句话说,在你的机器人缓存中找不到具有该 ID 的用户( client.users代表机器人的用户缓存)。 要么您使用了不正确的 ID,要么机器人的缓存根本没有更新以包含该特定用户。 如果您想获取该用户,即使他们不在您的机器人缓存中,您也可以使用client.fetchUser()直接向 Discord API 询问该信息。 此方法返回Promise ,因此您需要使用.then()来访问其异步数据。 .createDM()也是一个Promise所以你需要一个 .then .then()来访问创建的DMChannel )。 它应该是这样的:

client.fetchUser('123481923481234', true).then(user => {

    user.createDM().then(dmchannel => {

        //Now do whatever you want with the ID
        var channelID = dmchannel.id;

    });

})

至于你尝试的第二件事,那是完全错误的。 我不知道您是如何创建该代码的,但您肯定没有查看文档以查看您是否做得对; 老实说,它看起来就像您只是猜到了,而没有检查它实际上是如何工作的。 首先client.guilds.get()不返回Promise ,所以你不要使用.then() 您应该已经知道这一点,因为您在尝试的第一件事中没有在.get() ) 上使用.then() 其次,如前所述, .createDM()确实返回Promise ,因此确实需要一个您在尝试中未使用的 .then .then() 在第二次尝试的上述两个部分中,你最终做了与你需要做的相反的事情。 第三, Promise .createDM()的 Promise 为您提供DMChannel object 而不是DM object,因此您应该DMChannel.id DMChannel.channel.id 修复所有这些可能会使第二次尝试起作用,但由于您的第一次尝试不起作用的原因,它可能仍然不起作用。 如果是这种情况,您只需在第二次尝试中将.get()的所有用法切换到其获取等效项,您可以在文档中轻松找到它。 为了一个简单易读的答案,我不会在第二个答案中使用获取等效项。 所以这是你第二次尝试的样子:

var guild = client.guilds.get('783871449466142750');
guild.members.get('432325763753050122').createDM().then(dmchannel => {
    //Now do whatever you want with the ID
    var channelID = dmchannel.id;
});

以下是文档中解释如何使用这两个答案中的方法和对象的页面的链接。 请 go 到这些页面并查看这些方法是如何工作的,并在将来当你不确定某事是如何工作时,当你想弄清楚如何做某事时,或者当你开发了某事时,请参考文档discord.js 工作不正常。 文档中的大多数方法都带有提供的、易于理解的示例以及所有可用选项和参数的文档。 如果文档无法回答,请仅在此处提问。

https://discord.js.org/#/docs/main/v11/class/Client?scrollTo=fetchUser https://discord.js.org/#/docs/main/v11/class/User?scrollTo=createDM https://discord.js.org/#/docs/main/v11/class/DMChannel https://discord.js.org/#/docs/collection/master/class/Collection?scrollTo=get

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM