"""Slack stuff.""" import os from datetime import datetime from mappings import Message, get_session from slack_sdk import WebClient RESULTS_FILE = "results.json" def get_slack_client(): """Initialize the slack client.""" token = os.environ["SLACK_TOKEN"] return WebClient(token=token) def get_messages(): """Get messages.""" c = get_slack_client() r = c.search_messages(query="@cody", sort="timestamp") if r.data["ok"]: return r.data["messages"]["matches"] else: return [] def fetch_results(): """Query slack for the latest results.""" messages = get_messages() if messages: write_to_database(messages) print("Archival Complete.") else: print("Failed to search slack.") def write_to_database(messages): """Write messages to database.""" session = get_session() for msg in messages: username = msg["username"] timestamp = datetime.fromtimestamp(int(msg["ts"].split(".")[0])) if ( session.query(Message) .filter(Message.username == username) .filter(Message.timestamp == timestamp) .count() != 0 ): continue print("New notification") session.add( Message( iid=msg["iid"], type=msg["type"], username=username, text=msg["text"], timestamp=timestamp, ) ) session.commit() if __name__ == "__main__": fetch_results()