version-0.2.0
This commit is contained in:
56
handlers/send_button.py
Normal file
56
handlers/send_button.py
Normal file
@@ -0,0 +1,56 @@
|
||||
from bot.api import send_message, send_photo, get_userphotos, delete_message
|
||||
from utils.mention import mention, userdata_extract
|
||||
from storage import storage
|
||||
|
||||
import logging
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
|
||||
async def show_request_msg(msg, auto = False):
|
||||
logger.info("showing request with button")
|
||||
chat_id = str(msg["chat"]["id"])
|
||||
from_id = str(msg["from"]["id"])
|
||||
lang = msg["from"].get("language_code", "ru")
|
||||
reply_markup = {
|
||||
"inline_keyboard": [[{"text": "❤️", "callback_data": "vouch" + from_id}]]
|
||||
}
|
||||
newcomer_message = (
|
||||
"Нажмите, чтобы одобрить заявку "
|
||||
if lang == "ru"
|
||||
else "There is a newcomer, press the button if you are connected with "
|
||||
)
|
||||
r = await get_userphotos(user_id=from_id)
|
||||
logger.debug(r)
|
||||
if r["ok"] and r["result"]["total_count"] > 0:
|
||||
logger.info("showing button with photo")
|
||||
file_id = r["result"]["photos"][0][0]["file_id"]
|
||||
_uid, identity, username = userdata_extract(msg["from"])
|
||||
r = await send_photo(
|
||||
chat_id,
|
||||
file_id,
|
||||
caption=newcomer_message + f"{identity}{username}",
|
||||
reply_to=msg.get("message_id", ""),
|
||||
reply_markup=reply_markup,
|
||||
)
|
||||
else:
|
||||
logger.info("showing button without photo")
|
||||
r = await send_message(
|
||||
chat_id,
|
||||
newcomer_message + mention(msg["from"]),
|
||||
reply_to=msg.get("message_id", ""),
|
||||
reply_markup=reply_markup,
|
||||
)
|
||||
logger.debug(r)
|
||||
if "message_id" in r:
|
||||
# удаляем предыдущее сообщение с кнопкой в этом чате
|
||||
prevbtn = storage.get(f"btn-{chat_id}-{from_id}")
|
||||
if prevbtn:
|
||||
r = await delete_message(chat_id, prevbtn)
|
||||
logger.debug(r)
|
||||
# создаём новое
|
||||
newbtn = r["message_id"]
|
||||
logger.info(f"button message id: {newbtn}")
|
||||
storage.set(f"btn-{chat_id}-{from_id}", newbtn)
|
Reference in New Issue
Block a user