Files
langchain-hn-rag/slack.py
2025-07-01 13:32:18 +02:00

56 lines
1.6 KiB
Python

import logging
import os
from langchain_core.documents import Document
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
def prepare_message_blocks(stories: list[Document]) -> list:
blocks = []
for story in stories:
block = [
{
"type": "header",
"text": {"type": "plain_text", "text": story.metadata["title"]},
},
{
"type": "context",
"elements": [
{
"type": "plain_text",
"text": f"Categories: {', '.join(story.metadata.get('categories', []))}",
},
],
},
{
"type": "context",
"elements": [
{
"type": "plain_text",
"text": f"Posted on: {story.metadata['created_at']}",
}
],
},
{"type": "section", "text": {"type": "mrkdwn", "text": story.page_content}},
]
blocks.append(block)
return blocks
def send_message(channel: str, text: str) -> None:
client = WebClient(token=os.environ["SLACK_BOT_TOKEN"])
try:
response = client.chat_postMessage(
channel=channel,
username="HN Ragandy",
text=text,
unfurl_links=False,
)
response.validate()
logging.info(f"Message sent successfully to channel {channel}")
except SlackApiError as e:
logging.error(f"Error sending message: {e.response['error']}")