python-zulip-api/humbug/bots/feedback-bot
Luke Faraone f2f4a2f8bd Move the API into a subdirectory for ease of imports.
Previously, if users of our code put the API folder in their pyshared
they would have to import it as "humbug.humbug". By moving Humbug's API
into a directory named "humbug" and moving the API into __init__, you
can just "import humbug".

(imported from commit 1d2654ae57f8ecbbfe76559de267ec4889708ee8)
2013-01-16 16:55:22 -05:00

59 lines
1.8 KiB
Python
Executable file

#!/usr/bin/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
forwarded_message = {
"type": "stream",
"to": "support",
"subject": "feedback from %s" % message["sender_email"],
"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)