From 2de489d0843968d58aae7c2337c7820613ffea9f Mon Sep 17 00:00:00 2001 From: Hong Minhee Date: Thu, 14 Dec 2017 01:53:22 +0900 Subject: [PATCH] Option to mention someone --- README.rst | 11 +++++++++++ slack_logger.py | 13 ++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 96afe95..6f47f8d 100644 --- a/README.rst +++ b/README.rst @@ -62,3 +62,14 @@ You can also filter some messages only logger.info('info message') # Not posted to slack logger.info('info message to slack', extra={'notify_slack': True}) # Posted to slack + +Mentioning someone +'''''''''''''''''' + +Use ``mention`` option to send message with mentioning someone: + +.. code-block:: python + + sh = SlackHandler('YOUR_WEB_HOOK_URL', mention='U012ABC34') + +You can find a member ID (e.g., ``U012ABC34``) from user's profile view. diff --git a/slack_logger.py b/slack_logger.py index 5bba91b..f2b0dd9 100644 --- a/slack_logger.py +++ b/slack_logger.py @@ -5,7 +5,7 @@ class SlackHandler(HTTPHandler): - def __init__(self, url, username=None, icon_url=None, icon_emoji=None, channel=None): + def __init__(self, url, username=None, icon_url=None, icon_emoji=None, channel=None, mention=None): o = urlparse(url) is_secure = o.scheme == 'https' HTTPHandler.__init__(self, o.netloc, o.path, method="POST", secure=is_secure) @@ -13,17 +13,24 @@ def __init__(self, url, username=None, icon_url=None, icon_emoji=None, channel=N self.icon_url = icon_url self.icon_emoji = icon_emoji self.channel = channel + self.mention = mention and mention.lstrip('@') def mapLogRecord(self, record): + text = self.format(record) + if isinstance(self.formatter, SlackFormatter): payload = { 'attachments': [ - self.format(record), + text, ], } + if self.mention: + payload['text'] = '<@{0}>'.format(self.mention) else: + if self.mention: + text = '<@{0}> {1}'.format(self.mention, text) payload = { - 'text': self.format(record), + 'text': text, } if self.username: