version-0.2.0

This commit is contained in:
2024-01-06 14:25:35 +03:00
parent bc05b93c47
commit 908529b5bb
26 changed files with 185 additions and 153 deletions

View File

@@ -0,0 +1,65 @@
import json
from bot.api import (
send_message,
forward_message,
get_chat_administrators,
)
from storage import storage
from bot.config import FEEDBACK_CHAT_ID
import logging
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)
async def handle_feedback(msg, state):
mid = msg["message_id"]
cid = msg["chat"]["id"]
uid = msg["from"]["id"]
if msg["text"] == "/start":
r = await send_message(cid, "Напишите своё сообщение для администрации чата")
logger.debug(r)
elif state.is_talking(uid):
r = await forward_message(cid, mid, state.talking[uid])
logger.debug(r)
state.aho(uid)
else:
r = await forward_message(cid, mid, FEEDBACK_CHAT_ID)
logger.debug(r)
support_msg_id = r["result"]["message_id"]
# сохранение айди сообщения в приватной переписке с ботом
storage.set(
f"fbk-{support_msg_id}",
json.dumps(
{"author_id": uid, "message_id": mid, "chat_id": cid}
),
)
async def handle_answer(msg):
logger.info("handle answering feedback")
logger.debug(msg)
answered_msg = msg.get("reply_to_message")
if answered_msg:
if "from" not in answered_msg:
answered_msg["from"] = msg.get("from_user")
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)