如何从反应添加事件中获取线程回复的内容?
Posted
技术标签:
【中文标题】如何从反应添加事件中获取线程回复的内容?【英文标题】:How to get a thread reply's content from reaction_added event? 【发布时间】:2020-02-16 06:11:10 【问题描述】:我正在构建一个松弛的常见问题解答应用程序,它使用消息反应来收集问题的最佳答案。我的计划是通过使用reaction_added
事件获取TS 属性,然后使用conversations.history
方法获取消息内容,来保存任何具有积极反应的Slack 消息。
这适用于父级或非线程消息,但它不适用于线程内的回复消息。由于某种原因,conversations.history
方法在使用线程回复的 TS 时会返回不相关的消息。
我检查了 Slack API conversations.history
方法文档以查看是否以任何特殊方式处理回复。我查看了conversations.replies
方法,看看它是否有帮助,但由于reaction_added
事件只是为消息提供了一个TS id,并且没有可以与conversations.replies
方法一起使用的thread_ts 值。
我正在使用螺栓框架。这是尝试使用reaction_added
事件和conversations.history
方法获取消息内容的代码的sn-p:
app.event('reaction_added', async ( event, context, say ) =>
try
const result = await app.client.conversations.history(
token: process.env.SLACK_USER_TOKEN,
channel: event.item.channel,
latest: event.item.ts,
limit: 1,
inclusive: true
);
save(`$result.messages[0].text`);
catch (error)
console.error(error);
);
预期结果: 已发布反应的主题回复的消息内容
实际结果: slack频道最新消息的消息内容
【问题讨论】:
I want to find thread message and delete it with slack-api的可能重复 不同之处在于,当您拥有reaction_added
事件时,此问题专门寻求有关查找线程消息的建议,该事件未提供查找线程消息所需的thread_ts
属性。
你是对的。只需重复您的示例,reaction_added
事件不包括 thread_ts
属性,您需要在线程中识别相关消息。对我来说,这似乎是一个缺失的功能,所以我建议作为支持请求向 Slack 开放。
谢谢,我做到了。我也会继续寻找解决方法,如果我发现了什么,我会在这里发布。
我也就此联系 Slack 支持。我认为添加它对他们来说是微不足道的,所以我希望他们可以。
【参考方案1】:
我不确定它最近是否更改或我误读了文档,但conversations.replies
API 端点不需要包含父线程时间戳的thread_ts
值来检索线程回复。
reaction_added
事件提供的event.item.ts
值足以检索添加了反应的回复的消息内容。
因此,要获取添加了反应的消息的消息内容,您可以将我原始问题中的代码更新为:
app.event('reaction_added', async ( event, context, say ) =>
try
const result = await app.client.conversations.replies(
token: process.env.SLACK_USER_TOKEN,
channel: event.item.channel,
ts: event.item.ts
);
save(`$result.messages[0].text`);
catch (error)
console.error(error);
);
【讨论】:
以上是关于如何从反应添加事件中获取线程回复的内容?的主要内容,如果未能解决你的问题,请参考以下文章
使用Element的el-carousel轮播图组件添加点击事件获取点击内容
使用Element的el-carousel轮播图组件添加点击事件获取点击内容
discord.js 如何从 fetchMessage 事件中获取“反应用户”列表?