Discourse API 获取当前主题

你好!

我看到 Discourse 的 API 脚本插件可以获取当前用户:

<script type="text/discourse-plugin" version="0.8.18">
    if(api.getCurrentUser() != null) {
        $("#logged-in-user").text(" " + api.getCurrentUser().username);
    }
</script>

是否有类似的命令可以获取当前主题?我的使用场景是修改帖子末尾的重定向按钮的 URL,使其指向一个预填好的私信链接,发送给原帖作者。为了找到原帖作者的用户名,我似乎需要先获取主题 ID,然后通过 "/t/<TOPIC_ID>.json" 查询原帖作者?

该按钮插件已内置 <TOPIC_ID>,但我不确定如何在“管理 > 自定义”中使用 JavaScript 实现这一点。谢谢!

我不确定这是否是最佳方法,但可以通过以下方式获取主题创建者的用户名:

const controller = Discourse.__container__.lookup("controller:topic")
const username = controller.get("model.details.created_by.username")

这段代码无法直接在 <script> 标签中运行,您可能需要在 api.onPageChange 或其他事件中调用它(在快速测试中,使用 setTimeout 设置为 0 毫秒也有效,但我不确定是否存在副作用)。

2 个赞