fix: use message reaction for query acknowledgement
This commit is contained in:
@@ -79,7 +79,7 @@ ALLOWED_VERSIONS = {
|
||||
}
|
||||
CANDIDATE_BATCH_SIZE = 4
|
||||
CANDIDATE_CONTINUATION_TTL_SECONDS = 6 * 60 * 60
|
||||
RECEIVED_ACKNOWLEDGEMENT = "👀"
|
||||
RECEIVED_REACTION_TYPE = "OnIt"
|
||||
|
||||
|
||||
def _inclusive_date_range(start: date, end: date) -> frozenset[date]:
|
||||
@@ -1160,33 +1160,40 @@ def reply(client: lark.Client, message_id: str, text: str) -> None:
|
||||
logging.info("Feishu reply sent: message_id=%s parts=%s", message_id, len(post_contents))
|
||||
|
||||
|
||||
def reply_received_acknowledgement(client: lark.Client, message_id: str) -> None:
|
||||
request = (
|
||||
lark.im.v1.ReplyMessageRequest.builder()
|
||||
.message_id(message_id)
|
||||
.request_body(
|
||||
lark.im.v1.ReplyMessageRequestBody.builder()
|
||||
.msg_type("text")
|
||||
.content(
|
||||
json.dumps(
|
||||
{"text": RECEIVED_ACKNOWLEDGEMENT},
|
||||
ensure_ascii=False,
|
||||
)
|
||||
)
|
||||
.uuid(f"{message_id[:44]}-ack")
|
||||
def add_received_reaction(client: lark.Client, message_id: str) -> bool:
|
||||
try:
|
||||
request_body = (
|
||||
lark.im.v1.CreateMessageReactionRequestBody.builder()
|
||||
.reaction_type({"emoji_type": RECEIVED_REACTION_TYPE})
|
||||
.build()
|
||||
)
|
||||
.build()
|
||||
)
|
||||
response = client.im.v1.message.reply(request)
|
||||
if not response.success():
|
||||
logging.error(
|
||||
"Feishu acknowledgement failed: code=%s message_id=%s",
|
||||
response.code,
|
||||
request = (
|
||||
lark.im.v1.CreateMessageReactionRequest.builder()
|
||||
.message_id(message_id)
|
||||
.request_body(request_body)
|
||||
.build()
|
||||
)
|
||||
response = client.im.v1.message_reaction.create(request)
|
||||
except Exception:
|
||||
logging.exception(
|
||||
"Feishu received reaction raised; continuing query: message_id=%s",
|
||||
message_id,
|
||||
)
|
||||
return
|
||||
logging.info("Feishu acknowledgement sent: message_id=%s", message_id)
|
||||
return False
|
||||
if not response.success():
|
||||
logging.error(
|
||||
"Feishu received reaction failed: code=%s msg=%s message_id=%s",
|
||||
response.code,
|
||||
response.msg,
|
||||
message_id,
|
||||
)
|
||||
return False
|
||||
logging.info(
|
||||
"Feishu received reaction added: type=%s message_id=%s",
|
||||
RECEIVED_REACTION_TYPE,
|
||||
message_id,
|
||||
)
|
||||
return True
|
||||
|
||||
|
||||
_seen_message_ids: set[str] = set()
|
||||
@@ -1215,7 +1222,7 @@ def handle_message(client: lark.Client, data: lark.im.v1.P2ImMessageReceiveV1) -
|
||||
)
|
||||
return
|
||||
|
||||
reply_received_acknowledgement(client, message_id)
|
||||
add_received_reaction(client, message_id)
|
||||
|
||||
if continuation_state is None:
|
||||
clear_candidate_continuation(key)
|
||||
|
||||
Reference in New Issue
Block a user