5
5
6
6
import django_rq
7
7
8
- from apps .slack .common .handlers . ai import get_blocks
8
+ from apps .ai .common .constants import QUEUE_RESPONSE_TIME_MINUTES
9
9
from apps .slack .common .question_detector import QuestionDetector
10
10
from apps .slack .events .event import EventBase
11
11
from apps .slack .models import Conversation , Member , Message
@@ -22,33 +22,26 @@ class MessagePosted(EventBase):
22
22
def __init__ (self ):
23
23
"""Initialize MessagePosted event handler."""
24
24
self .question_detector = QuestionDetector ()
25
- self .bot_user_id = None
26
25
27
26
def handle_event (self , event , client ):
28
27
"""Handle an incoming message event."""
29
- if event .get ("subtype" ) or event .get ("bot_id" ) or event . get ( "thread_ts" ) :
28
+ if event .get ("subtype" ) or event .get ("bot_id" ):
30
29
logger .info ("Ignored message due to subtype, bot_id, or thread_ts." )
31
30
return
32
31
33
- if not self .bot_user_id :
34
- auth_response = client .auth_test ()
35
- self .bot_user_id = auth_response .get ("user_id" )
32
+ if event .get ("thread_ts" ):
33
+ try :
34
+ Message .objects .get (
35
+ slack_message_id = event .get ("thread_ts" ),
36
+ conversation__slack_channel_id = event .get ("channel" ),
37
+ ).update (has_replies = True )
38
+ except Message .DoesNotExist :
39
+ logger .warning ("Thread message not found." )
40
+ return
36
41
37
42
channel_id = event .get ("channel" )
38
43
user_id = event .get ("user" )
39
44
text = event .get ("text" , "" )
40
- bot_mention_string = f"<@{ self .bot_user_id } >"
41
-
42
- if bot_mention_string in text :
43
- query = text .replace (bot_mention_string , "" ).strip ()
44
-
45
- client .chat_postMessage (
46
- channel = channel_id ,
47
- blocks = get_blocks (query = query ),
48
- text = query ,
49
- thread_ts = event .get ("ts" ),
50
- )
51
- return
52
45
53
46
try :
54
47
conversation = Conversation .objects .get (
@@ -64,14 +57,17 @@ def handle_event(self, event, client):
64
57
65
58
try :
66
59
author = Member .objects .get (slack_user_id = user_id , workspace = conversation .workspace )
67
- message = Message .update_data (
68
- data = event , conversation = conversation , author = author , save = True
69
- )
70
-
71
- django_rq .get_queue ("default" ).enqueue_in (
72
- timedelta (minutes = 1 ), generate_ai_reply_if_unanswered , message .id
73
- )
74
-
75
60
except Member .DoesNotExist :
76
- logger .warning ("Could not find Member" )
77
- return
61
+ user_info = client .users_info (user = user_id )
62
+ author = Member .update_data (user_info ["user" ], conversation .workspace , save = True )
63
+ logger .info ("Created new member" )
64
+
65
+ message = Message .update_data (
66
+ data = event , conversation = conversation , author = author , save = True
67
+ )
68
+
69
+ django_rq .get_queue ("ai" ).enqueue_in (
70
+ timedelta (minutes = QUEUE_RESPONSE_TIME_MINUTES ),
71
+ generate_ai_reply_if_unanswered ,
72
+ message .id ,
73
+ )
0 commit comments