From f3d1d97d70c511166f5c6e42cc4be50ff7e3e5d1 Mon Sep 17 00:00:00 2001 From: Sergey Date: Thu, 8 Oct 2020 23:28:37 +0300 Subject: [PATCH] =?UTF-8?q?(=D0=BF=D0=BE=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE?= =?UTF-8?q?=D0=B6=D0=BD=D0=BE=D1=81=D1=82=D0=B8)=20=D0=98=D1=81=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=B7=D1=83=D0=B5=D0=BC=20=D1=81=D0=BE=D0=BE?= =?UTF-8?q?=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8=D0=B7=20=D0=A2?= =?UTF-8?q?=D0=93=20=D0=BF=D1=80=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B5=D1=81?= =?UTF-8?q?=D1=8B=D0=BB=D0=BA=D0=B5=20=D0=B8=20=D1=80=D0=B5=D0=BF=D0=BB?= =?UTF-8?q?=D0=B0=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vk_messages.py | 44 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/vk_messages.py b/vk_messages.py index 9448eae..f1ae6b5 100644 --- a/vk_messages.py +++ b/vk_messages.py @@ -586,6 +586,18 @@ async def process_message(msg, token=None, is_multichat=None, vk_chat_id=None, u header = f'{name} @ {quote_html(full_chat["title"])}' + '\n' to_tg_chat = vkuser.owner.uid + # Логика реплая на сообщение, которое уже есть в чате + # Таким кейсом нельзя управлять. Может упасть + if not main_message: + if vk_msg.get('reply_message'): + reply_msg_in_db = Message.objects.filter( + vk_chat=vk_chat_id, + vk_id=vk_msg['reply_message']['id'], + tg_chat=to_tg_chat + ).first() + if reply_msg_in_db: + main_message = reply_msg_in_db.tg_id + body_parts = [] body = quote_html(vk_msg.get('text', '')) @@ -760,12 +772,32 @@ async def process_message(msg, token=None, is_multichat=None, vk_chat_id=None, u if vk_msg.get('fwd_messages'): await bot.send_chat_action(to_tg_chat, ChatActions.TYPING) for fwd_message in vk_msg['fwd_messages']: - await process_message(msg, token=token, is_multichat=is_multichat, vk_chat_id=vk_chat_id, - user_id=fwd_message['from_id'], - forward_settings=forward_settings, vk_msg_id=vk_msg_id, vkchat=vkchat, - full_msg={'items': [fwd_message]}, forwarded=True, - main_message=header_message.message_id if header_message else None, - known_users=known_users, force_disable_notify=disable_notify) + fwd_msgs_in_db = Message.objects.filter( + vk_chat=vk_chat_id, + vk_id=fwd_message['id'], + tg_chat=to_tg_chat + ) + if fwd_msgs_in_db: + for fwd_msg_in_db in fwd_msgs_in_db: + try: + await bot.forward_message(to_tg_chat, to_tg_chat, fwd_msg_in_db.tg_id, + disable_notification=disable_notify) + except: + await process_message(msg, token=token, is_multichat=is_multichat, + vk_chat_id=vk_chat_id, + user_id=fwd_message['from_id'], + forward_settings=forward_settings, vk_msg_id=vk_msg_id, + vkchat=vkchat, + full_msg={'items': [fwd_message]}, forwarded=True, + main_message=header_message.message_id if header_message else None, + known_users=known_users, force_disable_notify=disable_notify) + else: + await process_message(msg, token=token, is_multichat=is_multichat, vk_chat_id=vk_chat_id, + user_id=fwd_message['from_id'], + forward_settings=forward_settings, vk_msg_id=vk_msg_id, vkchat=vkchat, + full_msg={'items': [fwd_message]}, forwarded=True, + main_message=header_message.message_id if header_message else None, + known_users=known_users, force_disable_notify=disable_notify) async def get_name(identifier, api):