|
5 | 5 | from slack import ROOT_URL, methods |
6 | 6 | from slack.events import Message |
7 | 7 | from slack.exceptions import SlackAPIError |
8 | | - |
9 | | -from pybot.endpoints.airtable.messages import (claim_mentee_attachment, |
10 | | - mentor_request_text) |
| 8 | +from slack.io.aiohttp import SlackAPI |
| 9 | +from pybot.plugins.airtable.api import AirtableAPI |
| 10 | +from .message_templates.messages import claim_mentee_attachment, mentor_request_text |
11 | 11 |
|
12 | 12 | MENTORS_CHANNEL = os.environ.get("MENTORS_CHANNEL") or "G1DRT62UC" |
13 | 13 |
|
14 | 14 |
|
15 | | -async def _get_requested_mentor(requested_mentor: Optional[str], app: SirBot) -> Optional[str]: |
| 15 | +async def _get_requested_mentor(requested_mentor: Optional[str], slack: SlackAPI, |
| 16 | + airtable: AirtableAPI) -> Optional[str]: |
16 | 17 | try: |
17 | 18 | if not requested_mentor: |
18 | 19 | return None |
19 | | - mentor = await app.plugins['airtable'].api.get_mentor_from_record_id(requested_mentor) |
| 20 | + mentor = await airtable.get_mentor_from_record_id(requested_mentor) |
20 | 21 | email = mentor['Email'] |
21 | | - slack_user_id = await _slack_user_id_from_email(email, app) |
| 22 | + slack_user_id = await _slack_user_id_from_email(email, slack) |
22 | 23 | return f" Requested mentor: <@{slack_user_id}>" |
23 | 24 | except SlackAPIError: |
24 | 25 | return None |
25 | 26 |
|
26 | 27 |
|
27 | | -async def _slack_user_id_from_email(email: str, app: SirBot, fallback: Optional[str] = None) -> str: |
28 | | - response = Message() |
29 | | - response['email'] = email |
| 28 | +async def _slack_user_id_from_email(email: str, slack: SlackAPI, fallback: Optional[str] = None) -> str: |
30 | 29 | try: |
31 | | - response = await app.plugins['slack'].api.query(url=ROOT_URL + 'users.lookupByEmail', data=response) |
| 30 | + response = await slack.query(url=ROOT_URL + 'users.lookupByEmail', data={'email': email}) |
32 | 31 | return response['user']['id'] |
33 | 32 | except SlackAPIError: |
34 | 33 | # TODO: something better here |
35 | 34 | return fallback or 'Slack User' |
36 | 35 |
|
37 | 36 |
|
38 | | -async def _get_matching_skillset_mentors(skillsets: str, app: SirBot) -> List[str]: |
| 37 | +async def _get_matching_skillset_mentors(skillsets: str, slack: SlackAPI, airtable: AirtableAPI) -> List[str]: |
39 | 38 | if not skillsets: |
40 | 39 | return ['No skillset Given'] |
41 | | - mentors = await app.plugins['airtable'].api.find_mentors_with_matching_skillsets(skillsets) |
42 | | - mentor_ids = [await _slack_user_id_from_email(mentor['Email'], app, fallback=mentor['Slack Name']) for mentor in |
| 40 | + mentors = await airtable.find_mentors_with_matching_skillsets(skillsets) |
| 41 | + mentor_ids = [await _slack_user_id_from_email(mentor['Email'], slack, fallback=mentor['Slack Name']) for mentor in |
43 | 42 | mentors] |
44 | 43 | return [f'<@{mentor}>' for mentor in mentor_ids] |
45 | 44 |
|
46 | 45 |
|
47 | 46 | def _create_messages(mentors: List[str], request: dict, requested_mentor_message: str, service_translation: str, |
48 | | - slack_id: str) -> Tuple[Message, Message, Message]: |
49 | | - first_message = Message() |
50 | | - first_message['text'] = mentor_request_text(slack_id, service_translation, request.get('skillsets', None), |
51 | | - requested_mentor_message) |
52 | | - first_message['attachments'] = claim_mentee_attachment(request['record']) |
53 | | - first_message['channel'] = MENTORS_CHANNEL |
54 | | - details_message = Message() |
55 | | - details_message['text'] = f"Additional details: {request.get('details', 'None Given')}" |
56 | | - details_message['channel'] = MENTORS_CHANNEL |
57 | | - matching_mentors_message = Message() |
58 | | - matching_mentors_message['text'] = "Mentors matching all or some of the requested skillsets: " + ' '.join(mentors) |
59 | | - matching_mentors_message['channel'] = MENTORS_CHANNEL |
| 47 | + slack_id: str) -> Tuple[dict, dict, dict]: |
| 48 | + first_message = { |
| 49 | + 'text': mentor_request_text(slack_id, service_translation, request.get('skillsets', None), |
| 50 | + requested_mentor_message), |
| 51 | + 'attachments': claim_mentee_attachment(request['record']), |
| 52 | + 'channel': MENTORS_CHANNEL |
| 53 | + } |
| 54 | + |
| 55 | + details_message = { |
| 56 | + 'text': f"Additional details: {request.get('details', 'None Given')}", |
| 57 | + 'channel': MENTORS_CHANNEL |
| 58 | + } |
| 59 | + |
| 60 | + matching_mentors_message = { |
| 61 | + 'text': "Mentors matching all or some of the requested skillsets: " + ' '.join(mentors), |
| 62 | + 'channel': MENTORS_CHANNEL |
| 63 | + } |
| 64 | + |
60 | 65 | return first_message, details_message, matching_mentors_message |
61 | 66 |
|
62 | 67 |
|
|
0 commit comments