Source code for cowidev.grapher.db.utils.slack_client

import os
from dotenv import load_dotenv
from slack import WebClient
from slack.errors import SlackApiError

load_dotenv()

SLACK_API_TOKEN = os.getenv("SLACK_API_TOKEN")
client = WebClient(token=SLACK_API_TOKEN) if SLACK_API_TOKEN else None

ERROR_COLOR = "#a30200"
WARNING_COLOR = "#f2c744"
SUCCESS_COLOR = "#01a715"


[docs]def send_error(channel, title, message=None, trace=None): if not client: return None title = f"Error: {title}" if message is None: message = "" if trace is not None: message += f"\n```{trace}```" return client.chat_postMessage( channel=channel, attachments=[ {"color": ERROR_COLOR, "title": title, "fallback": title, "text": message} ], )
[docs]def send_warning(channel, title, message=None, trace=None): if not client: return None title = f"Warning: {title}" if message is None: message = "" if trace is not None: message += f"\n```{trace}```" return client.chat_postMessage( channel=channel, attachments=[ {"color": WARNING_COLOR, "title": title, "fallback": title, "text": message} ], )
[docs]def send_success(channel, title, message=None, trace=None): if not client: return None if message is None: message = "" if trace is not None: message += f"\n```{trace}```" return client.chat_postMessage( channel=channel, attachments=[ {"color": SUCCESS_COLOR, "title": title, "fallback": title, "text": message} ], )
if __name__ == "__main__": send_error(channel="bot-testing", title="Random error", message="Abc\ndef\nghi") send_warning(channel="bot-testing", title="Random error", message="Abc\ndef\nghi") send_success(channel="bot-testing", title="Random error")