我们的errbot在看到正确的故障单模式时提供到JIRA故障单的链接。不幸的是,在闲暇时,用户通常会编辑他们的帖子,如果两个编辑都包含JIRA票证模式,errbot会提供两次链接,这很烦人。
我可以检测邮件何时是编辑而不是原始邮件?
答案 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