import os import sys import requests from dotenv import load_dotenv # --------------------------- # ENV # --------------------------- load_dotenv() ACCESS_TOKEN = os.getenv("VK_ACCESS_TOKEN") GROUP_ID = int(os.getenv("VK_GROUP_ID", "0")) API_VERSION = os.getenv("VK_API_VERSION", "5.199") PHOTO_ATTACHMENT = os.getenv("VK_PHOTO_ATTACHMENT") POST_TEXT = """Привет от Питона 🐍 Запись на услугу доступна по ссылке: https://vk.com/uslugi-27937673 https://sekretydolgoletiya.ru """ # --------------------------- # VALIDATION # --------------------------- def validate_env(): missing = [] if not ACCESS_TOKEN: missing.append("VK_GROUP_ACCESS_TOKEN") if not GROUP_ID: missing.append("VK_GROUP_ID") if not PHOTO_ATTACHMENT: missing.append("VK_PHOTO_ATTACHMENT") if missing: print(f"❌ Не заданы переменные окружения: {', '.join(missing)}") sys.exit(1) # --------------------------- # VK API # --------------------------- def vk_api(method: str, params: dict): response = requests.post( f"https://api.vk.com/method/{method}", data={ **params, "access_token": ACCESS_TOKEN, "v": API_VERSION, }, timeout=15, ).json() if "error" in response: error = response["error"] raise RuntimeError(f"VK API error {error['error_code']}: {error['error_msg']}") return response["response"] # --------------------------- # MAIN # --------------------------- def post_to_wall(): vk_api( "wall.post", { "owner_id": GROUP_ID, "from_group": 1, "message": POST_TEXT.strip(), "attachments": PHOTO_ATTACHMENT, }, ) if __name__ == "__main__": validate_env() post_to_wall() print("✅ Пост успешно опубликован")