Spring Boot Slack Bot-允许删除消息

时间:2019-04-27 13:17:35

标签: spring-boot slack slack-api

如何允许通过Spring Boot实现的Slack Bot删除消息?

Spring Boot Slack Bot使用了simple-slack-api。发送deleteMessage时,收到的答复为: cant_delete_message 。因此是授权问题。

Slack Bot代码是:

SlackSession session = SlackSessionFactory.createWebSocketSlackSession(slackToken);
session.connect();
SlackMessagePostedListener messagePostedListener = new SlackMessagePostedListener() {
    @Override
    public void onEvent(SlackMessagePosted event, SlackSession session) {
        if (session.sessionPersona().getId().equals(event.getSender().getId())) {
            return; // don't react on slack bot's own replies
        }
        SlackChannel channelOnWhichMessageWasPosted = event.getChannel();
        String messageContent = event.getMessageContent();
        SlackUser messageSender = event.getSender();
        if( messageContent.startsWith( "secret")) {
            session.sendMessage(event.getChannel(), "pssst: " + messageContent);
            SlackMessageHandle handle = session.deleteMessage( event.getTimeStamp(), channelOnWhichMessageWasPosted);
            logger.info( "Delete result : " + ((ParsedSlackReply) handle.getReply()).getErrorMessage());
        } else { ... }
    }
};
session.addMessagePostedListener(messagePostedListener);

1 个答案:

答案 0 :(得分:1)

通常,用户只能删除自己的消息,不能删除其他人的消息。管理员和所有者除外。可以在工作区设置中设置此行为。

如果要确保您的机器人可以从其他人删除消息,请确保由管理员用户安装了该消息,然后使用其访问令牌(而不是机器人令牌)。