如何允许通过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);
答案 0 :(得分:1)
通常,用户只能删除自己的消息,不能删除其他人的消息。管理员和所有者除外。可以在工作区设置中设置此行为。
如果要确保您的机器人可以从其他人删除消息,请确保由管理员用户安装了该消息,然后使用其访问令牌(而不是机器人令牌)。