def update(self, proto, msg=None, *args, **kwargs): if isinstance(msg, Message) and msg.is_valid(): sender = getattr(msg, settings.SENDER, None) mes_ecrypted = base64.b64decode(str(msg)) decrypted_message = proto.decrypter.decrypt(mes_ecrypted) Chat.create_msg(msg, text=decrypted_message.decode('utf8')) proto.notify(f'new_{self.name}', msg) logger.info(f'Получено сообщение от пользователя {sender}')
def send_message(self, extra=None): """Отправка сообщения.""" text = extra or self.get_msg_text() if not self.current_chat or not text: return if not self.encryptors: self.set_active() time.sleep(1) if not self.encryptors: logger.warn(f'Нет ключа для этого чата {self.current_chat}') self.critical('Нет ключа для этого чата') return client = self.get_client() for username, encryptor in self.encryptors.items(): mes_crypted = encryptor.encrypt(text.encode('utf8')) message = self.make_message(username, base64.b64encode(mes_crypted).decode('ascii')) client.notify(f'send_{settings.MESSAGE}', msg=message) Chat.create_msg(message, text=text) self.clear_msg_text() self.fill_chat()