Files

84 lines
1.9 KiB
Python

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("✅ Пост успешно опубликован")