当前位置: 首页 > 知识库问答 >
问题:

从消息中只删除一个反应(Discord.js)

向修谨
2023-03-14

我正在创建一个嵌入,您可以通过响应在页面中导航。通过遵循一个教程,我想到了这一点,但问题是:当用户对它做出反应时,它会删除所有相同类型的反应(基本上,如果我使用❤️, 机器人消除了我和他们的反应,让⚙️ 是唯一可用的反应)

let embed= new Discord.MessageEmbed()
            .setTitle(Title)
            .setURL(url)
            .setThumbnail(image)
const filter1 = (reaction, user) => reaction.emoji.name === '⚙️' && user.id === message.author.id
const filter2 = (reaction, user) => reaction.emoji.name === '❤️' && user.id === message.author.id
let msg = await message.channel.send(embed)
            await msg.react('⚙️')
            await msg.react('❤️')
const collector1= await msg.createReactionCollector(filter1, {time: 60000})
const collector2= await msg.createReactionCollector(filter2, {time: 60000})
collector1.on('collect', async r => {
                embed.setDescription('Page 1')
                r.remove(message.author.id) // <<== This removes also the bot reaction
                msg.edit(embed)
            })
collector2.on('collect', async r => {
                embed.setDescription('Page 2') 
                r.remove(message.author.id) // <<== This removes also the bot reaction
                msg.edit(embed)
            })

希望你能理解我的问题,我只是想让机器人消除我的反应,而不是全部。

共有1个答案

彭涵衍
2023-03-14

根据文档,MessageReaction.remove()删除整个反应,而不仅仅是一个用户。如果调用ReactionUserManager上的删除()函数,则可以从反应中删除1个用户

看看下面的示例代码,并尝试一下。

collector1.on('collect', async (reaction, user) => {
    embed.setDescription('Page 1');
    reaction.users.remove(user);
    msg.edit(embed);
});
 类似资料:
  • 向源生成特殊的clear-message,这将导致聚合的消息变为空 将消息直接写入具有空数据的中间主题 另一种方式,也许kafka-streams已经有一个API调用了? 加分问题:如果我知道我不想让消息坐在中间话题中的时间超过6个月,我可以指示kafka-streams创建6M留存的中间话题,还是在我运行App之前我自己手动创建话题?

  • 我开始用11.5discord.js写一个不和谐机器人。 我不想使用像,因为每个人都需要几天的时间才能添加自己的反应,而且它位于一个小的通道中,总是只通过几条消息来清理。 我正在通过提取一条特定的消息并希望从中读取现有的反应来获取旧消息。但我一直在阅读信息中的反应。 差不多 返回一个空数组。 文档提到不可能监听旧的消息反应,只有在12. x中可以。但是我没有使用监听器,所以我想这个限制在这种情况下

  • 我最近将一台服务器从ActiveMQ从5.8升级到了最新版本(5.11.1)。从那以后,我偶尔注意到,消息将在特定队列中累积,而不会被删除。 我们的架构有一个生产者,一个消费者。我可以看到消费者仍然保持联系,但制作人的信息越来越多。我的解决方案是通过web控制台删除队列。之后,我立即看到消费者重新连接,消息再次开始处理。 如果相关,在这种情况下,生产者正在运行NMS。NET和消费者在Java 1.

  • 对于从Spring Boot API发送的每个查询,我都会收到以下警告消息,并希望将其从日志中删除。 我正在使用RestHighLevelClient。根据Elasticsearch的说法,这可以通过迁移到他们最近推出的Elasticsearch Java API客户端来解决。然而,这将需要很长时间才能让我们做出这样的改变。 Elasticsearch版本是7.14.1,不幸的是,我们无法升级它。

  • 因此,我是使用Apache Kafka的新手,我正在尝试创建一个简单的应用程序,以便我可以尝试更好地理解API。我知道这个问题在这里被问了很多,但是我该如何清除存储在主题上的消息/记录? 我看到的大部分回答都是说更改消息保留时间或者删除