Сообщение от пользователя telegram на python?

Рейтинг: 1Ответов: 1Опубликовано: 22.08.2023

недавно у меня появилась проблема никак не могу ее решить, мне нужно получить сообщение от юзера, но при каждом его выводе в cmd вижу не сообщение от юзера, а сообщение написанное ботом, пробовал получать сообщения в пустом дискрипторе, но он все равно выводил не то что нужно

@dp.callback_query_handler(cb.filter(type='categoryadd'))
async def spis(call: CallbackQuery, callback_data: dict):
    data = await db.get_product_id()
    for i in data:
        print(i[0])
        insert_product_id = int(i[0]) + 1
    category_id = callback_data.get('category_id')
    keyboard = InlineKeyboardMarkup()
    keyboard.add(InlineKeyboardButton(text='добавить позицию',callback_data='btn:add_price:-:-'))
    await bot.send_message(call.message.chat.id,'напишите через пробел позицию пример (название цена колличество)',reply_markup=keyboard)

    time.sleep(10)
    string = call.message.text
    print(string)

Ответы

▲ 0Принят

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

import telebot
from telebot import types


dp = telebot.TeleBot(TOKEN)

@dp.message_handler(commands=['message'])
def msg_from_user1(message: types.Message):
    msg = dp.send_message(message.chat.id, 'Введите сообщение...')
    dp.register_next_step_handler(msg, msg_from_user2)

def msg_from_user2(message: types.Message):
    msg_from_user = message.text
    print(msg_from_user)


if __name__ == '__main__':
    dp.polling(none_stop=True)

Здесь, после отправки команды /message боту, он будет запрашивать сообщение от пользователя и после его получения запустит функцию msg_from_user2, которая выведет это сообщение в консоль. В aiogram вроде не работает.