import random from slack_sdk.web.async_client import AsyncWebClient def generate_voting_blocks(deployment_id: int, message: str, approve_count: int, reject_count: int, voting_enabled: bool): blocks = [ { "type": "header", "text": { "type": "plain_text", "text": f"Voting | Deployment #{deployment_id}" } }, { "type": "section", "text": { "type": "mrkdwn", "text": f"*Message:*\n> {message}" } }, { "type": "section", "text": { "type": "mrkdwn", "text": f"*Votes:*\n> Approve: {approve_count}\n> Reject: {reject_count}" } }, ] if voting_enabled: blocks.append({ "type": "actions", "elements": [ { "type": "button", "text": {"type": "plain_text", "text": "Approve ^_^"}, "style": "primary", "action_id": f"vote_approve_{deployment_id}" }, { "type": "button", "text": {"type": "plain_text", "text": "Reject T_T"}, "style": "danger", "action_id": f"vote_reject_{deployment_id}" } ] }) return blocks async def get_random_channel(oauth_token: str): client = AsyncWebClient(token=oauth_token) try: response = await client.conversations_list(types="public_channel", limit=200, exclude_archived=True) channels = [c for c in response.get("channels", []) if c.get("is_member", False)] if not channels: return None channel_approved = False while not channel_approved: channel = random.choice(channels) # FIXME: Check if CM-approved here channel_approved = True return channel except Exception as e: print(f"random channel is broken, we might be cooked: {e}") return None