welcomecenterbot/bot/handlers/handle_feedback.py

59 lines
2.0 KiB
Python
Raw Normal View History

2023-04-23 16:54:58 +00:00
import json
2023-09-11 20:21:55 +00:00
from api import (
2023-09-11 20:04:53 +00:00
send_message,
forward_message,
delete_message,
get_chat_administrators,
)
2023-09-11 20:21:55 +00:00
from handlers.send_button import show_request_msg
from utils.mention import userdata_extract
from storage import storage, Profile
from config import FEEDBACK_CHAT_ID
2023-04-23 16:54:58 +00:00
2023-09-11 20:04:53 +00:00
async def handle_feedback(msg, state):
mid = msg["message_id"]
cid = msg["chat"]["id"]
2023-09-17 10:01:19 +00:00
uid = msg["from"]["id"]
2023-09-11 20:04:53 +00:00
if msg["text"] == "/start":
r = await send_message(cid, "Напишите своё сообщение для администрации чата")
2023-04-24 06:16:28 +00:00
print(r)
2023-09-11 20:04:53 +00:00
elif state.is_talking(uid):
r = await forward_message(cid, mid, state.talking[uid])
print(r)
state.aho(uid)
2023-04-24 06:16:28 +00:00
else:
2023-09-11 20:04:53 +00:00
r = await forward_message(cid, mid, FEEDBACK_CHAT_ID)
print(r)
support_msg_id = r["result"]["message_id"]
# сохранение айди сообщения в приватной переписке с ботом
storage.set(
f"fbk-{support_msg_id}",
json.dumps(
2023-09-17 10:01:19 +00:00
{"author_id": uid, "message_id": mid, "chat_id": cid}
2023-09-11 20:04:53 +00:00
),
)
2023-04-23 16:54:58 +00:00
2023-09-11 20:04:53 +00:00
async def handle_answer(msg):
answered_msg = msg["reply_to_message"]
r = await get_chat_administrators(msg["chat"]["id"])
2023-04-29 20:37:28 +00:00
print(r)
2023-05-01 16:31:17 +00:00
admins = []
2023-09-11 20:04:53 +00:00
for a in r["result"]:
admins.append(a["user"]["id"])
if answered_msg["from"]["is_bot"] and msg["from"]["id"] in admins:
support_msg_id = str(answered_msg["message_id"])
2023-04-24 06:14:35 +00:00
# получение сохраненного информации о сообщении для ответа
2023-09-11 20:04:53 +00:00
stored_feedback = storage.get(f"fbk-{support_msg_id}")
2023-04-24 06:14:35 +00:00
if stored_feedback:
2023-09-11 20:04:53 +00:00
print("handle an answer from feedback group")
2023-04-24 06:14:35 +00:00
stored_feedback = json.loads(stored_feedback)
2023-09-11 20:04:53 +00:00
r = await send_message(
f'{stored_feedback["chat_id"]}',
msg["text"],
reply_to=stored_feedback["message_id"],
)
2023-04-24 06:14:35 +00:00
print(r)