welcomecenterbot/bot/handlers/send_button.py

54 lines
2.0 KiB
Python
Raw Normal View History

2023-09-18 07:50:48 +00:00
from api import send_message, send_photo, get_userphotos, delete_message
2023-09-11 20:21:55 +00:00
from utils.mention import mention, userdata_extract
from storage import storage
2023-09-18 07:50:48 +00:00
import logging
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 show_request_msg(msg):
2023-09-18 07:50:48 +00:00
logger.info("showing request with button")
2023-09-11 20:04:53 +00:00
chat_id = str(msg["chat"]["id"])
from_id = str(msg["from"]["id"])
lang = msg["from"].get("language_code", "ru")
2023-04-23 16:54:58 +00:00
reply_markup = {
2023-09-11 20:04:53 +00:00
"inline_keyboard": [[{"text": "❤️", "callback_data": "vouch" + from_id}]]
2023-04-23 16:54:58 +00:00
}
2023-09-11 20:04:53 +00:00
newcomer_message = (
"Нажмите, чтобы одобрить заявку "
if lang == "ru"
2023-04-28 12:24:14 +00:00
else "There is a newcomer, press the button if you are connected with "
2023-09-11 20:04:53 +00:00
)
r = await get_userphotos(user_id=from_id)
2023-09-18 07:50:48 +00:00
logger.debug(r)
2023-09-11 20:04:53 +00:00
if r["ok"] and r["result"]["total_count"] > 0:
print("show button with photo")
file_id = r["result"]["photos"][0][0]["file_id"]
_uid, identity, username = userdata_extract(msg["from"])
2023-09-18 07:50:48 +00:00
r = await send_photo(
2023-04-28 12:24:14 +00:00
chat_id,
file_id,
2023-09-11 20:04:53 +00:00
caption=newcomer_message + f"{identity}{username}",
reply_to=msg.get("message_id", ""),
reply_markup=reply_markup,
2023-04-28 12:24:14 +00:00
)
else:
2023-09-18 07:50:48 +00:00
logger.info("show button without photo")
r = await send_message(
2023-04-28 12:24:14 +00:00
chat_id,
2023-09-11 20:04:53 +00:00
newcomer_message + mention(msg["from"]),
reply_to=msg.get("message_id", ""),
reply_markup=reply_markup,
2023-04-28 12:24:14 +00:00
)
2023-09-18 07:50:48 +00:00
logger.debug(r)
2023-09-11 20:04:53 +00:00
if "message_id" in r:
2023-04-28 12:24:14 +00:00
# удаляем предыдущее сообщение с кнопкой в этом чате
2023-09-11 20:04:53 +00:00
prevbtn = storage.get(f"btn-{chat_id}-{from_id}")
2023-04-28 12:24:14 +00:00
if prevbtn:
2023-09-11 20:04:53 +00:00
r = await delete_message(chat_id, prevbtn)
2023-09-18 07:50:48 +00:00
logger.debug(r)
2023-04-28 12:24:14 +00:00
# создаём новое
2023-09-11 20:04:53 +00:00
newbtn = r["message_id"]
2023-09-18 07:50:48 +00:00
logger.info(f"button message id: {newbtn}")
2023-09-11 20:04:53 +00:00
storage.set(f"btn-{chat_id}-{from_id}", newbtn)