异步函数 discord.js 中的 awaitMessages

Posted

技术标签:

【中文标题】异步函数 discord.js 中的 awaitMessages【英文标题】:awaitMessages inside async function discord.js 【发布时间】:2019-10-20 22:52:28 【问题描述】:

我对异步相当陌生,我正在尝试通过私人消息从用户那里获得对机器人的响应。我以前同步过,但不是异步的。我有工作代码可以正确等待我在以下代码中工作的反应,但它的工作方式(显然)似乎与我在运行它时收到(node:10080) UnhandledPromiseRejectionWarning: TypeError: msg.awaitMessages is not a function 错误时不同。

我环顾四周,试图找到 awaitMessages 来处理异步函数中的私人消息,但它看起来比把这个问题的答案Await reply in private message discord.js 之类的东西更复杂

async function cardExists() 
let matchedcards = []

let msg = await message.author.send(`Please provide the cardnames that you would like to add to '$userdeckname'.\n\n**NOTE:** Please separate each card with a comma and space, like so "Pact of Darkness, Aquos Slam, Karmic Balance"`)

const filter = m => m.author.id === message.author.id
const reply = await msg.awaitMessages(filter,  max: 1 )
.catch(console.error);

let cardsToAdd = reply.first()

let usercardnamearray = cardsToAdd.content.split(", ")

我只是想提出问题,并等待用户在私人消息中回复 discord 机器人。在上面的 sn-p 之后运行的一些代码(一旦声明了 cardsToAdd)最终会检查列表中的每个卡片是否存在于 mysql 数据库中,并将成功的卡片推送到一个数组以供以后使用,并将失败的卡片发送到私聊。

提前感谢您的帮助!

【问题讨论】:

我不熟悉那个库,但看起来你应该使用 msg.channel.awaitMessages 而不是 msg.awaitMessages discord.js.org/#/docs/main/stable/class/… 嗯...我想既然这是一条私人消息,就没有“频道”可以发送它。我想这解决了这个问题。我觉得自己像个白痴。谢谢! XD 如果您想将其发布为答案而不是评论,我可以将其标记为答案。 【参考方案1】:

根据official documentation,使用msg.channel.awaitMessages 而不是msg.awaitMessages

【讨论】:

以上是关于异步函数 discord.js 中的 awaitMessages的主要内容,如果未能解决你的问题,请参考以下文章

如何在异步函数 discord.js 中使用 message.react() 中的循环

discord.js bot await 仅在异步函数中有效

await 仅对异步函数有效城市字典 api discord js

Discord JS bot 如何从 API 获取递归异步函数

Express RESTful API 中的 Discord.js

异步函数停止同步函数