@usjsksj

Проблема с ботом, как редактирвоать файл?

from docxtpl import DocxTemplate
import telebot
from telebot import types
API_TOKEN = '  '
bot = telebot.TeleBot(API_TOKEN)


@bot.message_handler(commands=['start'])
def main(message):
    msg = bot.send_message(message.chat.id, 'Этот бот поможет вам быстро заполнить ПКО! Введите ФИО плательщика:')
    bot.register_next_step_handler(msg, fio_step)

def fio_step(message):
    user_info = {}
    user_info['name'] = message.text
    msg = bot.send_message(message.chat.id, 'Введите сумму оплаты')
    bot.register_next_step_handler(msg, sum_step, user_info)

def sum_step(message, user_info):
    user_info['sum'] = message.text
    msg = bot.send_message(message.chat.id, 'Введите основание платежа')
    bot.register_next_step_handler(msg, ocn_step, user_info)

def ocn_step(message, user_info):
    user_info['ocn'] = message.text
    msg = bot.send_message(message.chat.id, 'Введите день платежа')
    bot.register_next_step_handler(msg, day_step, user_info)

def day_step(message, user_info):
    user_info['day'] = message.text
    msg = bot.send_message(message.chat.id, 'Введите месяц платежа')
    bot.register_next_step_handler(msg, mes_step, user_info)

def mes_step(message, user_info):
    user_info['mes'] = message.text
    msg = bot.send_message(message.chat.id, 'Введите год платежа')
    bot.register_next_step_handler(msg, year_step, user_info)

def year_step(message, user_info):
    user_info['year'] = message.text
    msg = bot.send_message(message.chat.id, 'Введите номер документа')
    bot.register_next_step_handler(msg, mumbr_step, user_info)

def mumbr_step(message, user_info):
    user_info['numbr'] = message.text
    msg = bot.send_message(message.chat.id, 'Введите название организации')
    bot.register_next_step_handler(msg, orga_step, user_info)

def orga_step(message, user_info):
    user_info['orga'] = message.text
    msg = bot.send_message(message.chat.id, 'Введите сумму оплаты прописью')
    bot.register_next_step_handler(msg, propis_step, user_info)

def propis_step(message, user_info):
    user_info['propisi'] = message.text



doc = DocxTemplate("pko.docx")
context = { 'org' : orga_step,
            'number' : mumbr_step,
            'day': day_step,
            'mes': mes_step,
            'year': year_step,
             'fio': 'name',
             'ocnovanie': ocn_step,
             'symmarub': sum_step,
             'propis': propis_step,
             'vtom': '',

}
doc.render(context)
doc.save("шаблон-final1.docx")

bot.polling()

Пытаюсь заставить бота заполнять word файл получая данные из телеги. При запуске бот сразу выдает готовый файл а не ждет заполнения от юзера(
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
SoreMix
@SoreMix
yellow
Потому что вы и создаете файл сразу, вне функций

Из основого потока скрипта удаляете
doc = DocxTemplate("pko.docx")
context = { 'org' : orga_step,
            'number' : mumbr_step,
            'day': day_step,
            'mes': mes_step,
            'year': year_step,
             'fio': 'name',
             'ocnovanie': ocn_step,
             'symmarub': sum_step,
             'propis': propis_step,
             'vtom': '',

}
doc.render(context)
doc.save("шаблон-final1.docx")


И вставляете в последний шаг
def propis_step(message, user_info):
    user_info['propisi'] = message.text
    doc = DocxTemplate("pko.docx")
    context = { 'org' : user_info['orga'],
            'number' : user_info['numbr'],
            'day': user_info['day'],
            'mes': user_info['mes'],
            'year': user_info['year'],
             'fio': user_info['name'],
             'ocnovanie': user_info['ocn'],
             'symmarub': user_info['sum'],
             'propis': user_info['propisi'],
             'vtom': ''}
    doc.render(context)
    doc.save("шаблон-final1.docx")
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы