• Как сделать чтобы при нажатии Inline кнопки выдавало пользователю ответ?

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

    user_id = 123456 # айди пользователя кому будем отправлять
    chat_id = -123456 # айди чата куда будем писать
    
    # отправляем сообщение в чат
    message_markup = InlineKeyboardMarkup()
    message_markup.row_width = 1
    message_markup.add(
         InlineKeyboardButton(
              "Принять",
               callback_data="success_" + str(user_id)
         ),
         InlineKeyboardButton(
              "Отклонить",
               callback_data="unsuccess_" + str(user_id)
         ))
    bot.send_message(
        chat_id=chat_id,
        text="Новая заявка",
        reply_markup=message_markup,
        parse_mode="Html"
    )
    
    # принимаем кал-бек информацию от кнопки 
    def clb_handler(x):
        bot.answer_callback_query(x.id)
        if x.message.chat.id == x.from_user.id:
            cb_data = x.data.split("_")
            if len(cb_data) == 2:
                   user_id = cb_data[1]
                   msg = "спасибо, ваша заявка обработана" if cb_data[0] == "success" else "спасибо, но, ваша заявка была отклонена."
                   bot.send_message(
                           chat_id=user_id,
                           text=msg,
                           parse_mode="Html"
                    )
    
    # запускаем бота
    def start_polling():
        while True:
            try:
                # ставим что прослушивать ответы на кнопки будет функция clb_handler() 
                @bot.callback_query_handler(func=lambda call: True)
                def callback_query(x):
                    clb_handler(x)
    
                bot.polling(
                        none_stop=True,
                        interval=0,
                        timeout=60
                )
            except Exception as e:
                print(e)
                time.sleep(5)
    
    tb = threading.Thread(
        target = start_polling,
        args = ()
    )
    tb.start()
    Ответ написан
    2 комментария