from django.dispatch import receiver, Signal from injector import Injector from .websocket import DashboardConnectionManager chat_text_signal = Signal() discord_online_signal = Signal() discord_react_to_chat_signal = Signal() @receiver(chat_text_signal) def handle_chat_text(sender, **kwargs): get_manager().broadcast({'type': 'chat_text', 'message': kwargs['message'], 'ai_instance': kwargs['ai_name']}) @receiver(discord_online_signal) def handle_discord_online(sender, **kwargs): get_manager().broadcast({'type': 'discord_online', 'status': kwargs['status'], 'ai_instance': kwargs['ai_name']}) @receiver(discord_react_to_chat_signal) def handle_discord_react_to_chat(sender, **kwargs): get_manager().broadcast( {'type': 'discord_react_to_chat', 'status': kwargs['status'], 'ai_instance': kwargs['ai_name']}) def get_manager(): from .injector import InjectorModule inj = Injector(InjectorModule) return inj.get(DashboardConnectionManager)