【发布时间】:2021-12-18 12:44:41
【问题描述】:
现在我正在制作一个反应收集器,它可以工作,但是机器人会向我的消息添加一个反应而不是它自己的,但是当我让它自己添加反应时,我不能使用变量 I用于收集器的承诺中。
import { ICommand } from 'wokcommands'
import { Message, MessageEmbed, MessageReaction, User } from 'discord.js'
export default {
category: 'Testing',
description: 'Tests the collector system',
hidden: true,
callback: ({ message, channel }) => {
const answerUsernameEmbed = new MessageEmbed()
.setTitle('Please confirm this action')
.setColor('#1be730')
message.reply({
embeds: [answerUsernameEmbed]
}).then((newMessage) => {
newMessage.react('????')
})
const filter = (r: MessageReaction, user: User) => {
return user.id === message.author.id
}
const collector = message.createReactionCollector({
filter,
max: 1,
time: 1000 * 10,
})
collector.on('collect', reaction => {
console.log(reaction.emoji.name)
})
collector.on('end', collected => {
if (collected.size === 0) {
const badCollector = new MessageEmbed()
.setTitle('You did not react in time...')
.setColor('#ff0000')
message.reply({
embeds: [badCollector]
})
return
}
let text = 'Collected:\n\n'
collected.forEach((message) => {
text += `${message.emoji.name}\n`
})
message.reply(text)
})
}
} as ICommand
如您所见,我可以使用 .then 让机器人对自己的消息做出反应,但是 newMessage 在承诺范围之外是不可访问的,我不能将收集器放在承诺中,因为那一次给我8个错误...
【问题讨论】:
标签: typescript discord.js