# -*- coding: utf-8 -*-
-
-# Copyright (C) 2010, 2011 Anaël Verrier <elghinn@free.fr>
-# Copyright (C) 2015, 2020 kaliko <kaliko@azylum.org>
-
-# 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
-# the Free Software Foundation, version 3 only.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
+# SPDX-FileCopyrightText: 2015, 2021 kaliko <kaliko@azylum.org>
+# SPDX-FileCopyrightText: 2010, 2011 Anaël Verrier <elghinn@free.fr>
+# SPDX-License-Identifier: GPL-3.0-or-later
from re import compile as re_compile
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<package>[0-9a-z.+-]+)$')
def __init__(self, bot):
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)
@botcmd
def bugs(self, rcv, args):
- """Intercepts bugs number in messages (as #629234), reply a 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