Настраиваем кросспостинг из Вордпресс в Телеграм

1 ответ 1

Текущие По дате публикации Голоса1

Попробуйте передавать объект файла прямо внутри метода send_document. У меня следующий код отлично работает и присылает документ именно с таким именем, с каким он хранится в системе:

bot.send_document(message.chat.id, open(r'Путь_к_документу/Название_документа.txt, 'rb')) 

Улучшить ответ

Создаем веб-интерфейс

Теперь, когда у нас есть вполне функциональный бот, нам нужно добавить для него веб-интерфейс. Мы будем использовать фреймворк Flask. Мы должны включить следующий код после других операций импорта и перед определением функции latest_key.

from math import ceil from flask import render_template from flask import Flask app = Flask(__name__)  @app.route('/') @app.route('/') def home(page=None):     ks = sorted(map(int, db.keys()))     pages = ceil(len(ks) / 10)     if page is None: #Default to latest page         page = pages      if page < pages:         next_page = page + 1     else:         next_page = None     if page > 1:         prev_page = page - 1     else:         prev_page = None      messages = tuple(db[str(key)] for key in ks[(page-1)*10:page*10])      return render_template('home.html', messages=messages, next_page=next_page, page=page, prev_page=prev_page)

Этот код создает небольшое Flask-приложение. Импорт модуля Flask обеспечивает среда программирования Replit. В этом уроке мы сделаем только одну страницу.

Мы сообщаем Flask, каким образом должна быть доступна страница при помощи специальных декораторов. Декоратор @app.route ('/') говорит, что когда пользователь обращается к https://example.com, его будет обслуживать этот обработчик. В этом случае переменная page будет иметь значение по умолчанию None.

Декоратор @app.route('/')  говорит, что когда пользователь обращается к чему-то вроде https://example.com/4, он откроет страницу 4 записанных сообщений. В этом случае переменной page будет присвоено значение 4.

Но пока это работать не будет, потому что шаблон home.html еще не существует. Давайте создадим его прямо сейчас в папке с названием templates (т.е. templates/home.html):


  • {% for msg in messages %}
  • {{ msg | escape }} {% endfor %}

{% if prev_page %}Previous Page{% endif %} {% if prev_page and next_page %}|{% endif%} {% if next_page %}Next Page{% endif %}

Этот шаблон будет выводить страницу записанных сообщений и ссылки на следующую или предыдущую страницу. Он требует наличия переменной page и массива messages, который будет отображаться в виде списка. Шаблон также принимает переменные «prev_page» и «next_page», которые мы используем для создания ссылок на предыдущую и следующую страницу, если они существуют, конечно. Все они присутствуют в нашей функции маршрутизации, когда мы запускаем render_template.

Как нам рассчитать максимальное количество страниц?

pages = ceil(len(ks) / 10)

То есть мы делим количество ключей в нашей базе данных Replit на десять и округляем его в большую сторону. Мы также можем использовать это число по умолчанию. Таким образом, если кто-то вызовет простой маршрут «/», мы просто отобразим последнюю страницу.

if page is None:     page = pages

Мы знаем, что последние сообщения всегда будут «самыми последними», потому что мы отсортировали их в порядке возрастания в предыдущей строке.

Переменные prev_page и next_page всегда содержат в себе значение текущей страницы, уменьшенное либо соответственно увеличенное на единицу, если они являются действительными номерами страниц. В противном случае им присваивается значение None, чтобы шаблон их не отображал.

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий