python-zulip-api/bots/feedback-bot
Tim Abbott f0e6618b66 [manual] feedback-bot: Include sender domain in feedback messages.
feedback-bot needs to be updated and restarted after this is pushed to
prod for these changes to take effect.

(imported from commit fcabd2f4bb26c794454e096242a8073805fc786c)
2013-05-02 15:32:04 -04:00

65 lines
2 KiB
Python
Executable file

#!/usr/bin/env python
import sys
from os import path
import logging
sys.path.append(path.join(path.dirname(__file__), '..'))
import humbug
class StreamLogger(object):
"""
Give a file-like interface to a logger instance.
"""
def __init__(self, logger, log_level=logging.INFO):
self.logger = logger
self.log_level = log_level
self.buffer = ""
def write(self, message):
self.buffer += message
if message[-1] == "\n":
self.logger.log(self.log_level, self.buffer.rstrip())
self.buffer = ""
logging.basicConfig(filename="/var/log/humbug/feedback-bot.log",
level=logging.DEBUG, format="%(asctime)s %(levelname)s\t%(message)s")
# The API prints to stdout, so capture and format those messages as well.
stdout_logger = StreamLogger(logging.getLogger("stdout"), logging.INFO)
sys.stdout = stdout_logger
stderr_logger = StreamLogger(logging.getLogger("stderr"), logging.ERROR)
sys.stderr = stderr_logger
prod_client = humbug.Client(
email="feedback@humbughq.com",
api_key="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
verbose=True,
site="https://humbughq.com")
staging_client = humbug.Client(
email="feedback@humbughq.com",
api_key="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
verbose=True,
site="https://staging.humbughq.com")
def forward_message(message):
if message["type"] != "private" or len(message["display_recipient"]) != 2:
return
if "sender_domain" in message:
subject = "feedback: %s (%s)" % (message["sender_email"], message["sender_domain"])
else:
subject = "feedback from %s" % message["sender_email"],
if len(subject) > 60:
subject = subject[:57].rstrip() + "..."
forwarded_message = {
"type": "stream",
"to": "support",
"subject": subject,
"content": message["content"],
}
staging_client.send_message(forwarded_message)
logging.info("Forwarded feedback from %s" % (message["sender_email"],))
prod_client.call_on_each_message(forward_message)