X-Git-Url: http://git.kaliko.me/?a=blobdiff_plain;f=sid%2Fbts.py;h=03eef515ea078797cbcdd7cb978df6b95f60d0f7;hb=ce3cd5d64e51d2075237b909762a1ed0459eaf80;hp=201df9a0fb5c8bfbb3704d520567f0fa842a78df;hpb=034db6aba932f1e955732ad8f7bb7f226e8f9231;p=sid.git diff --git a/sid/bts.py b/sid/bts.py index 201df9a..03eef51 100644 --- a/sid/bts.py +++ b/sid/bts.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Copyright (C) 2010, 2011 Anaël Verrier -# Copyright (C) 2015, 2020 kaliko +# Copyright (C) 2015, 2021 kaliko # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -25,21 +25,28 @@ from .plugin import Plugin, botcmd class Bugs(Plugin): """Gets bugs info from the BTS + + .. note:: + This plugin depends on external module: **python-debianbts** """ - re_bugs = re_compile(r'(?<=#)(\d{6,7})') + #: Bug id regexp, intercepts bug id in strings : "#629234", "bugs.debian.org/629234" and "bugreport.cgi?bug=629234" + re_bugs = re_compile(r'(?:(?<=#)|(?<=bugreport\.cgi\?bug=)|(?<=bugs\.debian\.org/))(\d{6,7})') + #: Package name regexp re_pkg = re_compile(r'(?P[0-9a-z.+-]+)$') def __init__(self, bot): Plugin.__init__(self, bot) - bot.add_event_handler("muc::%s::message" % self.bot.room, self.muc_message) + bot.add_event_handler("muc::%s::message" % + self.bot.room, self.muc_message) def muc_message(self, msg): - """Handler method dealing with MUC incoming messages""" + """Handler method dealing with MUC incoming messages. + + Intercepts bugs number in MUC messages (as #629234), replies a bug + summary.""" # Does not reply to myself if msg['mucnick'] == self.bot.nick: return - if '#' not in msg['body']: - return bugs = list() for bug_id in set(Bugs.re_bugs.findall(msg['body'].strip())): self.log.debug('got bug id: %s', bug_id) @@ -65,8 +72,9 @@ class Bugs(Plugin): @botcmd def bugs(self, rcv, args): - """ intercepts bugs number in any message, looking for string like #629234 and display bug summary. - !bugs pkg-name : Returns latest bug reports if any + """Gets bugs info from the BTS + + ``!bugs pkg-name`` : Returns latest bug reports if any """ if not args: return @@ -83,11 +91,9 @@ class Bugs(Plugin): return reports = debianbts.get_status(reports_ids) reports = sorted(reports, key=lambda r: r.date) - rprt_nb = len(reports) - msg = ['Open reports for {1} (total {0})'.format(rprt_nb, pkg.string)] + msg = ['Latest reports for {1} (total {0})'.format(len(reports), pkg.string)] # Reverse and take last reports for rep in reports[::-1][:4]: msg.append('{r.bug_num}: {r.date:%Y-%m-%d} {r.subject}'.format(r=rep)) message = {'mbody': '\n'.join(msg)} self.reply(rcv, message) -