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