Slack后端:是否可以检测到编辑?

时间:2016-10-27 17:12:54

标签: errbot

我们的errbot在看到正确的故障单模式时提供到JIRA故障单的链接。不幸的是,在闲暇时,用户通常会编辑他们的帖子,如果两个编辑都包含JIRA票证模式,errbot会提供两次链接,这很烦人。

我可以检测邮件何时是编辑而不是原始邮件?

3 个答案:

答案 0 :(得分:1)

现在你可以了,因为从消息的.extra参数中你可以从松弛中获取消息ID。

答案 1 :(得分:0)

目前不可能(在任何后端上),没有。对于允许编辑消息的聊天网络,errbot当前将编辑的消息作为新消息注入。

如果您需要此功能,请在errbot的问题跟踪器上打开一个问题,以便我们可以集思广益,了解如何引入此功能。

答案 2 :(得分:0)

我的机器人也注意并扩展了有关Jira问题的参考;我要做的一件事是跟踪在该频道中看到了多少条消息,以及上次是什么时候我回答了任何给定的问题。最近N(我使用10个)消息中扩展的问题将被忽略。这样,如果他们自己编辑问题密钥,通常会得到新的扩展,但如果他们编辑邮件的其他部分,则不会。

def activate(self):
    self.messages_seen={} # room: messages seen
    self.last_shown={} # issue_key : { room : message number last shown }
    super().activate()

def callback_message(self, msg):
    if msg.is_group:
        try:
            self.messages_seen[msg.to.id] += 1
        except KeyError:
            self.messages_seen[msg.to.id] = 1

def record_expanded(self, msg, key, orig_key=None):
    if msg.is_group:
        channel=msg.to.id
        keys = [ key, orig_key ] if orig_key and orig_key != key else [ key ]
        for k in keys:
            if k in self.last_shown:
                self.last_shown[ k ][ channel ] = self.messages_seen[ channel ]
            else:
                self.last_shown[ k ] = { channel : self.messages_seen[ channel ] }

def should_expand(self, msg, key):
    expand=False
    if msg.body.split()[0] == 'jira':
        # User said 'jira <key>', so always expand
        expand=True
    if msg.is_group:
        channel=msg.to.id
        message_number=self.messages_seen.get(channel, 1)

        expanded_in = self.last_shown.get(key, {})
        if expanded_in:
            if channel not in expanded_in: # key has been expanded, but not in this channel
                expand=True
            else:
                expanded_last_here = message_number - expanded_in[channel]
                if expanded_last_here >= self.bot_config.JIRA_EXPAND_ONLY_EVERY: # not recently enough
                    expand=True
                else:
                    self.log.debug("not expanding '%s' because expanded %d messages ago" % (key, expanded_last_here))
        else:
            # this key has not been seen anywhere before
            expand=True
    else:
        # direct IM - always expand
        expand=True
    if not expand:
        self.log.debug("Recently expanded %s, suppressing" % key)
    return expand