from bot.api import telegram_api from utils.mention import userdata_extract from state.redis import redis import logging logger = logging.getLogger(__name__) def get_newcomer_message(msg): lang = msg["from"].get("language_code", "ru") r = "хочет присоединиться к нам здесь" if lang == "ru" else " wants to join us here" _uid, identity, username = userdata_extract(msg["from"]) if username: r = "@" + username + " " + r r = identity + " " + r return r async def show_announce(msg): logger.info("showing announce with photo") chat_id = str(msg["chat"]["id"]) from_id = str(msg["from"]["id"]) mid = msg.get("message_id", "") newcomer_message = get_newcomer_message(msg) userphotos_response = await telegram_api("getUserphotos", user_id=from_id) file_id = "" if ( isinstance(userphotos_response, dict) and userphotos_response["ok"] and userphotos_response["result"]["total_count"] > 0 ): logger.info("showing button with photo") file_id = userphotos_response["result"]["photos"][0][0]["file_id"] r = await telegram_api( "sendPhoto", chat_id=chat_id, file_id=file_id, caption=newcomer_message, reply_to=mid, ) announce_msg_id = r.get("message_id") await redis.set(f"announce:{chat_id}:{from_id}", announce_msg_id) async def edit_announce(msg): logger.info("editing announce") chat_id = str(msg["chat"]["id"]) from_id = str(msg["from"]["id"]) caption = get_newcomer_message(msg) + msg.get("text").replace("/message ", "") announce_message_id = await redis.get(f"announce:{chat_id}:{from_id}") if announce_message_id: r = await telegram_api( "editMessageCaption", chat_id=chat_id, message_id=int(announce_message_id), caption=caption, ) await redis.set(f"announce:{chat_id}:{from_id}", r.get("message_id"))