Добавление фото через телеграм в wordpress
Есть бот, который принимает сначала заголовок, а потом текст новости и отправляет его на сайт wordpress. Бот работает, но есть необходимость добавления фото в новости. Попробовал сделать через gpt, но его правка в коде не дала результата. Сообщение в телеграме отправляю, пробовал png, jpg, heic, но бот не реагирует на это, даже не пишет в логах ничего, будто ничего и не отправил, а реагирует только на текст. Подскажите, кто знает, как добавить рабочую функцию такую?
from telegram import Update, Bot
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext
import requests
# Настройки
TELEGRAM_TOKEN = 'token'
WP_URL = 'https://site/wp-json/wp/v2/posts'
WP_USER = 'pass'
WP_PASSWORD = 'pass'
# Аутентификация WordPress
def get_wp_token():
response = requests.post(
f'https://site/wp-json/jwt-auth/v1/token',
data={'username': WP_USER, 'password': WP_PASSWORD}
)
if response.status_code != 200:
print("Ошибка аутентификации:", response.json())
return None
return response.json().get('token')
# Обработка сообщений
def handle_message(update: Update, context: CallbackContext):
chat_id = update.message.chat_id
text = update.message.text
if not context.user_data.get('post_title'):
# Запоминаем заголовок
context.user_data['post_title'] = text
update.message.reply_text('Заголовок получен! Теперь отправьте текст новости.')
elif not context.user_data.get('post_content'):
# Запоминаем текст новости
context.user_data['post_content'] = text
publish_post(update, context)
else:
update.message.reply_text('Вы уже отправили заголовок и текст. Попробуйте заново!')
def publish_post(update: Update, context: CallbackContext):
token = get_wp_token()
headers = {'Authorization': f'Bearer {token}'}
# Отправка поста
response = requests.post(WP_URL, headers=headers, json={
'title': context.user_data['post_title'],
'content': context.user_data['post_content'],
'status': 'publish',
'categories': [7] # Укажи ID категории новостей
})
if response.status_code == 201:
update.message.reply_text('Новость опубликована!')
context.user_data.clear() # Очищаем данные после публикации
else:
update.message.reply_text('Ошибка публикации. Попробуйте снова.')
# Настройка бота
def main():
updater = Updater(TELEGRAM_TOKEN, use_context=True)
dp = updater.dispatcher
dp.add_handler(MessageHandler(Filters.text, handle_message))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()