(payload: SlackEventPayload)
| 629 | * Main event dispatcher |
| 630 | */ |
| 631 | export async function handleSlackEvent(payload: SlackEventPayload): Promise<void> { |
| 632 | const event = payload.event; |
| 633 | |
| 634 | if (!event) { |
| 635 | logger.warn('Slack event payload missing event object'); |
| 636 | return; |
| 637 | } |
| 638 | |
| 639 | switch (event.type) { |
| 640 | case 'team_join': |
| 641 | await handleTeamJoin(event as SlackTeamJoinEvent); |
| 642 | break; |
| 643 | |
| 644 | case 'user_change': |
| 645 | await handleUserChange(event as SlackUserChangeEvent); |
| 646 | break; |
| 647 | |
| 648 | case 'member_joined_channel': |
| 649 | await handleMemberJoinedChannel(event as SlackMemberJoinedChannelEvent); |
| 650 | break; |
| 651 | |
| 652 | case 'message': |
| 653 | await handleMessage(event as SlackMessageEvent); |
| 654 | break; |
| 655 | |
| 656 | case 'reaction_added': |
| 657 | await handleReactionAdded(event as SlackReactionAddedEvent); |
| 658 | break; |
| 659 | |
| 660 | // Addie (AAO Community Agent) events |
| 661 | case 'assistant_thread_started': |
| 662 | if (isAddieReady()) { |
| 663 | const assistantEvent = event as SlackAssistantThreadStartedEvent; |
| 664 | await handleAssistantThreadStarted({ |
| 665 | type: 'assistant_thread_started', |
| 666 | assistant_thread: assistantEvent.assistant_thread, |
| 667 | event_ts: assistantEvent.event_ts, |
| 668 | channel_id: assistantEvent.channel, |
| 669 | } as AssistantThreadStartedEvent); |
| 670 | } else { |
| 671 | logger.debug('Addie not ready, ignoring assistant_thread_started'); |
| 672 | } |
| 673 | break; |
| 674 | |
| 675 | case 'app_mention': |
| 676 | if (isAddieReady()) { |
| 677 | const mentionEvent = event as SlackAppMentionEvent; |
| 678 | await handleAppMention({ |
| 679 | type: 'app_mention', |
| 680 | user: mentionEvent.user, |
| 681 | text: mentionEvent.text, |
| 682 | ts: mentionEvent.ts, |
| 683 | channel: mentionEvent.channel, |
| 684 | thread_ts: mentionEvent.thread_ts, |
| 685 | event_ts: mentionEvent.event_ts, |
| 686 | } as AppMentionEvent); |
| 687 | } else { |
| 688 | logger.debug('Addie not ready, ignoring app_mention'); |
no test coverage detected