diff --git a/src/memory/discord/collector.py b/src/memory/discord/collector.py index d37df9d..0de5af7 100644 --- a/src/memory/discord/collector.py +++ b/src/memory/discord/collector.py @@ -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()) diff --git a/src/memory/workers/tasks/discord.py b/src/memory/workers/tasks/discord.py index ab6b5f6..64f3473 100644 --- a/src/memory/workers/tasks/discord.py +++ b/src/memory/workers/tasks/discord.py @@ -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"(.*)", 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: