pytelegrambot, не работает пересылка вместе с другими функциями

создал телеграм бота, который выполняет некоторые функции. под вкладкой текст, я так же сделал пересылку сообщений себе в телеграм. проверил с другом, и как оказалось, работает только по запчастям, а точнее - либо отдельно пересылка любого сообщения, либо лишь выполнение ответов на кнопки и тд. как можно это починить? код:

import telebot
from telebot import types

token='токен'
bot=telebot.TeleBot(token)

TO_CHAT_ID = айди чата для пересылки
@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn1 = types.KeyboardButton("Информация")
    btn2 = types.KeyboardButton("Заказать фигурку")
    markup.add(btn1, btn2)
    
@bot.message_handler(content_types=['text'])
def func(message):
    if(message.text == "Информация"):
        bot.send_message(message.chat.id, text="Доброго времени суток, вы попали в бота для заказа фигурок. Как закать фигурку? Очень просто. Для этого достаточно нажать на кнопку 'Заказать фигурку', а далее просто заполнить форму, которую вам выдаст после нажатия на кнопку.")
    elif(message.text == "Заказать фигурку"):
        bot.send_message(message.chat.id, text="Привет, для заказа фигурки заполните следующую форму: 1. Какую фигурку вы хотите заказать, 2. Ссылка на ваш телеграм аккаунт, или пользовательское имя в форме @username для связи")
def all_messages(message):
    bot.forward_message(TO_CHAT_ID, message.chat.id, message.message_id)

bot.polling(none_stop=True)

тут код закончился, как видим, bot.forward_message(TO_CHAT_ID, message.chat.id, message.message_id) стоит в конце блока text'a, но если переставить в начало этого блока - работает лишь пересылка как я и говорил, сейчас в боте работают лишь команды, а пересылка - нет


Ответы (1 шт):

Автор решения: Данила Кузмич

Message_handler - это декоратор, который может работать ТОЛЬКО с 1 функцией. Ты никак 2 функции с 1 декоратором не запустишь. Но здесь можно поступить так - all_messages помести после отправки каждого сообщения. Исправленный код -

import telebot
from telebot import types

token='токен'
bot=telebot.TeleBot(token)

TO_CHAT_ID = айди чата для пересылки
@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn1 = types.KeyboardButton("Информация")
    btn2 = types.KeyboardButton("Заказать фигурку")
    markup.add(btn1, btn2)
    
@bot.message_handler(content_types=['text'])
def func(message):
    all_messages(message)
    if(message.text == "Информация"):
        bot.send_message(message.chat.id, text="Доброго времени суток, вы попали в бота для заказа фигурок. Как закать фигурку? Очень просто. Для этого достаточно нажать на кнопку 'Заказать фигурку', а далее просто заполнить форму, которую вам выдаст после нажатия на кнопку.")
    elif(message.text == "Заказать фигурку"):
        bot.send_message(message.chat.id, text="Привет, для заказа фигурки заполните следующую форму: 1. Какую фигурку вы хотите заказать, 2. Ссылка на ваш телеграм аккаунт, или пользовательское имя в форме @username для связи")

def all_messages(message):
    bot.forward_message(TO_CHAT_ID, message.chat.id, message.message_id)

bot.polling(none_stop=True)
→ Ссылка