Skip to main content
Glama
jjsteffen23

CME Prediction Markets MCP Server

by jjsteffen23
bot.py2.55 kB
from slack_sdk.web.async_client import AsyncWebClient from slack_sdk.socket_mode.aiohttp import SocketModeClient from slack_sdk.socket_mode.request import SocketModeRequest from slack_sdk.socket_mode.response import SocketModeResponse import structlog from src.config import get_settings from src.integrations.slack.events import handle_message_event from src.integrations.slack.commands import handle_slash_command logger = structlog.get_logger() settings = get_settings() class SlackBot: """Slack bot for claim verification.""" def __init__(self): self.web_client = AsyncWebClient(token=settings.SLACK_BOT_TOKEN) self.socket_client = None self.running = False async def start(self): """Start the Slack bot.""" self.socket_client = SocketModeClient( app_token=settings.SLACK_APP_TOKEN, web_client=self.web_client ) self.socket_client.socket_mode_request_listeners.append(self.handle_request) await self.socket_client.connect() self.running = True logger.info("slack_bot_started") async def stop(self): """Stop the Slack bot.""" if self.socket_client: await self.socket_client.close() self.running = False logger.info("slack_bot_stopped") async def handle_request(self, client: SocketModeClient, req: SocketModeRequest): """Handle incoming Slack requests.""" if req.type == "events_api": # Acknowledge the request response = SocketModeResponse(envelope_id=req.envelope_id) await client.send_socket_mode_response(response) # Handle the event event = req.payload.get("event", {}) await handle_message_event(self.web_client, event) elif req.type == "slash_commands": # Acknowledge the request response = SocketModeResponse(envelope_id=req.envelope_id) await client.send_socket_mode_response(response) # Handle the command await handle_slash_command(self.web_client, req.payload) async def send_message( self, channel: str, text: str = None, blocks: list = None ): """Send a message to a Slack channel.""" try: await self.web_client.chat_postMessage( channel=channel, text=text, blocks=blocks ) except Exception as e: logger.error("slack_send_error", error=str(e))

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jjsteffen23/dk_mcp_2'

If you have feedback or need assistance with the MCP directory API, please join our Discord server