есть программа, которая спрашивает у человека его имя, но когда пишу любое слово, то мне выдают вместо имени название бота и тд
def main(message):
global hi
markup = telebot.types.InlineKeyboardMarkup()
hi = bot.send_message(message.from_user.id, text="напиши своё имя")
bot.register_next_step_handler(hi, privet)
def privet(message):
bot.send_message(message.from_user.id, text="привет, {hi}!".format (hi))
Ответы (2 шт):
Автор решения: Snowking
→ Ссылка
Вот код, используйте его:
message = bot.send_message(message.chat.id, "Введите сообщение")
bot.register_next_step_handler(message, reply_to_user)
def reply_to_user(message):
bot.send_message(message.chat.id, message.text)
Автор решения: n1tr0xs
→ Ссылка
Функция bot.send_message возвращает объект Message, а не текст ответа пользователя. Чтобы достать текст нужно обратиться к свойству text.
Вот так это будет выглядеть:
def main(message):
#global hi # <--- эту строчку убираем, она больше не понадобиться
markup = telebot.types.InlineKeyboardMarkup()
response = bot.send_message(message.from_user.id, text="напиши своё имя")
bot.register_next_step_handler(response, privet)
def privet(message):
text = message.text # вот то, что вам написал пользователь
# используем f-строки, они предпочтительнее чем format
bot.send_message(message.from_user.id, text=f"привет, {text}!")
