register_next_step_handler Telebot
Есть бот, у него используются inline кнопки. Различия кнопок проверяются по call.data. Ожидаемое поведение: при нажатии на кнопку "Предложить свой пост" выводится предложение пользователю ввести текст, и ожидание ввода от пользователя. Далее данные передаются в функцию отправки сообщения(resend_message_in_group), из которой происходит пересылка сообщения в чат в зависимости от call.data. Проблема заключается в функции register_next_step_handler. Переменная msg не пустая, в нее записывается сообщение от бота, и код отрабатывает сразу не дожидаясь ввода от пользователя. Что делаю не так?
Стартовый блок кода с определением кнопок:
def send_welcome(message):
stick = open('Hello_stick_3.tgs', 'rb')
bot.send_sticker(message.chat.id, stick)
markup = types.InlineKeyboardMarkup(row_width=1)
item1 = types.InlineKeyboardButton("Предложить свой пост", callback_data='propose')
item2 = types.InlineKeyboardButton("Связаться с админами", callback_data='contact')
item3 = types.InlineKeyboardButton("Удалить пост", callback_data='delete')
Пример функции в которой есть блок логики по выбору нужной кнопки:
def go_send_messages(call):
if call.data == 'propose':
msg = bot.send_message(call.message.chat.id,
"{0.first_name}, окей, пришли мне текст поста\n"
"К посту можно прикрепить фото и видео."
"Пост будет опубликован только в группе ТГ\n"
"<i>Have a nice time</i>".format(call.message.from_user),
parse_mode='html'
)
bot.register_next_step_handler(msg, resend_message_in_group(call))
Пример функции в которой происходит последующая обработка введенного пользователем текста:
def resend_message_in_group(call):
if call.data == 'propose':
bot.forward_message(chat_id=GROUP_FOR_POST,
from_chat_id=call.message.chat.id,
message_id=call.message.message_id, timeout=5
)
print('success1')
bot.send_message(call.message.chat.id,
"Пост успешно отправлен. Ожидай одобрения\n"
"<i>Have a nice time</i>".format(call.message.from_user),
parse_mode='html', disable_web_page_preview=not PREVIEW_LINK, timeout=5
)
Фото из бота:
