fix typing indicator

This commit is contained in:
mruwnik 2025-11-01 20:27:57 +00:00
parent ff3ca4f109
commit 131427255a
2 changed files with 16 additions and 34 deletions

View File

@ -394,7 +394,8 @@ class MessageCollector(commands.Bot):
logger.error(f"DM channel not available for {user_identifier}")
return False
await channel.trigger_typing()
async with channel.typing():
pass
return True
except Exception as e:
@ -431,30 +432,10 @@ class MessageCollector(commands.Bot):
logger.error(f"Channel {channel_name} not found")
return False
await channel.trigger_typing()
async with channel.typing():
pass
return True
except Exception as e:
logger.error(f"Failed to trigger typing for channel {channel_name}: {e}")
return False
async def run_collector():
"""Run the Discord message collector"""
if not settings.DISCORD_BOT_TOKEN:
logger.error("DISCORD_BOT_TOKEN not configured")
return
collector = MessageCollector()
try:
await collector.start(settings.DISCORD_BOT_TOKEN)
except Exception as e:
logger.error(f"Discord collector failed: {e}")
raise
if __name__ == "__main__":
import asyncio
asyncio.run(run_collector())

View File

@ -7,7 +7,7 @@ import logging
import re
import textwrap
from datetime import datetime
from typing import Any
from typing import Any, cast
from sqlalchemy import exc as sqlalchemy_exc
from sqlalchemy.orm import Session, scoped_session
@ -133,10 +133,20 @@ def should_process(message: DiscordMessage) -> bool:
if not (res := re.search(r"<number>(.*)</number>", response)):
return False
try:
return int(res.group(1)) > 100 - message.chattiness_threshold
if int(res.group(1)) < 100 - message.chattiness_threshold:
return False
except ValueError:
return False
if not (bot_id := _resolve_bot_id(message)):
return False
if message.channel and message.channel.server:
discord.trigger_typing_channel(bot_id, message.channel.name)
else:
discord.trigger_typing_dm(bot_id, cast(int | str, message.from_id))
return True
def _resolve_bot_id(discord_message: DiscordMessage) -> int | None:
recipient = discord_message.recipient_user
@ -181,15 +191,6 @@ def process_discord_message(message_id: int) -> dict[str, Any]:
"message_id": message_id,
}
if discord_message.channel and discord_message.channel.server:
discord.trigger_typing_channel(
bot_id, discord_message.channel.name
)
else:
discord.trigger_typing_dm(bot_id, discord_message.from_id)
response: str | None = None
try:
response = call_llm(session, discord_message, settings.DISCORD_MODEL)
except Exception: