Skip to content

Commit 1455869

Browse files
committed
fix(runner): rename last_received_at to last_mentioned_at for clarity and update related logic
Signed-off-by: Frost Ming <me@frostming.com>
1 parent 8ce09ac commit 1455869

1 file changed

Lines changed: 7 additions & 9 deletions

File tree

src/bub/channels/runner.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def __init__(self, session_id: str, debounce_seconds: int, message_delay_seconds
1414
self._prompts: list[str] = []
1515
self._event = asyncio.Event()
1616
self._timer: asyncio.TimerHandle | None = None
17-
self._last_received_at: float | None = None
17+
self._last_mentioned_at: float | None = None
1818
self._running_task: asyncio.Task[None] | None = None
1919
self._loop = asyncio.get_running_loop()
2020

@@ -23,11 +23,6 @@ async def _run(self, channel: BaseChannel) -> None:
2323
prompt = f"channel: ${channel.output_channel}\n" + "\n".join(self._prompts)
2424
self._prompts.clear()
2525
self._running_task = None
26-
if (
27-
self._last_received_at is not None
28-
and self._loop.time() - self._last_received_at > self.message_delay_seconds * 6
29-
):
30-
self._last_received_at = None
3126
try:
3227
result = await channel.run_prompt(self.session_id, prompt)
3328
await channel.process_output(self.session_id, result)
@@ -44,7 +39,10 @@ async def process_message(self, channel: BaseChannel, message: Any) -> None:
4439
is_mentioned = channel.is_mentioned(message)
4540
_, prompt = await channel.get_session_prompt(message)
4641
now = self._loop.time()
47-
if not is_mentioned and self._last_received_at is None:
42+
if not is_mentioned and (
43+
self._last_mentioned_at is None or now - self._last_mentioned_at > self.message_delay_seconds * 6
44+
):
45+
self._last_mentioned_at = None
4846
logger.info("session.receive ignored session_id={} message={}", self.session_id, prompt)
4947
return
5048
self._prompts.append(prompt)
@@ -57,13 +55,13 @@ async def process_message(self, channel: BaseChannel, message: Any) -> None:
5755
logger.exception("session.run.error session_id={}", self.session_id)
5856
elif is_mentioned:
5957
# wait at most 1 second to reply to mentioned messages.
60-
self._last_received_at = now
58+
self._last_mentioned_at = now
6159
logger.info("session.receive.mentioned session_id={} message={}", self.session_id, prompt)
6260
self.reset_timer(self.debounce_seconds)
6361
if self._running_task is None:
6462
self._running_task = asyncio.create_task(self._run(channel))
6563
return await self._running_task
66-
elif self._last_received_at is not None and self._running_task is None:
64+
elif self._last_mentioned_at is not None and self._running_task is None:
6765
# Otherwise if bot is mentioned before, we will keep reading messages for at most 30 seconds.
6866
logger.info("session.receive followup session_id={} message={}", self.session_id, prompt)
6967
self.reset_timer(self.message_delay_seconds)

0 commit comments

Comments
 (0)