【发布时间】: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.awaitMessagesdiscord.js.org/#/docs/main/stable/class/… -
嗯...我想既然这是一条私人消息,就没有“频道”可以发送它。我想这解决了这个问题。我觉得自己像个白痴。谢谢! XD 如果您想将其发布为答案而不是评论,我可以将其标记为答案。
标签: node.js asynchronous async-await discord