2023-04-23 16:54:58 +00:00
|
|
|
|
import json
|
|
|
|
|
|
2024-01-06 11:25:35 +00:00
|
|
|
|
from bot.api import (
|
2023-09-11 20:04:53 +00:00
|
|
|
|
send_message,
|
|
|
|
|
forward_message,
|
|
|
|
|
get_chat_administrators,
|
|
|
|
|
)
|
2023-10-26 09:00:49 +00:00
|
|
|
|
from storage import storage
|
2024-01-06 11:25:35 +00:00
|
|
|
|
from bot.config import FEEDBACK_CHAT_ID
|
2023-09-18 07:50:48 +00:00
|
|
|
|
import logging
|
2024-01-06 11:25:35 +00:00
|
|
|
|
|
|
|
|
|
|
2023-09-18 07:50:48 +00:00
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
logging.basicConfig(level=logging.INFO)
|
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-09-18 07:50:48 +00:00
|
|
|
|
logger.debug(r)
|
2023-09-11 20:04:53 +00:00
|
|
|
|
elif state.is_talking(uid):
|
|
|
|
|
r = await forward_message(cid, mid, state.talking[uid])
|
2023-09-18 07:50:48 +00:00
|
|
|
|
logger.debug(r)
|
2023-09-11 20:04:53 +00:00
|
|
|
|
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)
|
2023-09-18 07:50:48 +00:00
|
|
|
|
logger.debug(r)
|
2023-09-11 20:04:53 +00:00
|
|
|
|
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):
|
2023-09-18 08:04:06 +00:00
|
|
|
|
logger.info("handle answering feedback")
|
|
|
|
|
logger.debug(msg)
|
2023-09-18 11:02:24 +00:00
|
|
|
|
answered_msg = msg.get("reply_to_message")
|
|
|
|
|
if answered_msg:
|
2023-09-18 08:12:25 +00:00
|
|
|
|
if "from" not in answered_msg:
|
2023-10-26 09:00:49 +00:00
|
|
|
|
answered_msg["from"] = msg.get("from_user")
|
2023-09-18 08:12:25 +00:00
|
|
|
|
r = await get_chat_administrators(msg["chat"]["id"])
|
|
|
|
|
logger.debug(r)
|
|
|
|
|
admins = []
|
|
|
|
|
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"])
|
|
|
|
|
# получение сохраненного информации о сообщении для ответа
|
|
|
|
|
stored_feedback = storage.get(f"fbk-{support_msg_id}")
|
|
|
|
|
if stored_feedback:
|
|
|
|
|
logger.info("handle an answer from feedback group")
|
|
|
|
|
stored_feedback = json.loads(stored_feedback)
|
|
|
|
|
r = await send_message(
|
|
|
|
|
f'{stored_feedback["chat_id"]}',
|
|
|
|
|
msg["text"],
|
|
|
|
|
reply_to=stored_feedback["message_id"],
|
|
|
|
|
)
|
|
|
|
|
logger.debug(r)
|