Задать вопрос
@P1lan

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

Всем добрый вечер, я делаю бота в телеграмме, вот код:
5d8666d65a75b658519027.png

В чем идея: когда пользователь вводит команду /concrete , бот должен ждать сообщения от пользователя (номер), его записывать в переменную, а потом выводить информацию с текстового файла с этим номером.
На данном этапе, после ввода этой команды мне выдает ошибку: " command = msg['text']
TypeError: string indices must be integers ". Как это исправить? Как заставить бота ждать новое сообщение от пользователя с номером?
  • Вопрос задан
  • 8406 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
Danya_Violet
@Danya_Violet
CTO/CIO
сделайте по аналогии

для передачи текста в другую функцию используйте bot.register_next_step_handler().
например этот код сначала запросит домен, после ФИО должность и номер телефона, и в итоге создаст корпоративный email с указанными параметрами

@bot.message_handler(commands=['emailcreate'])
def email_create_request_domain(message):
    if message.text.lower() == 'отмена':
        bot.send_message(message.from_user.id, 'На нетъ и суда нетъ')
        return
    send = bot.send_message(message.chat.id, 'Зьдати емейлъ\nПочтовый ящикъ:\n'
                                             'example.ru, example1.ru, example2.ru, example3.ru, example4.ru ')
    bot.register_next_step_handler(send, email_create_request_data)


def email_create_request_data(message):
    global domain_uis
    domain_uis = message.text.lower()
    if message.text.lower() == 'отмена':
        bot.send_message(message.from_user.id, 'На нетъ и суда нетъ')
        return
    send = bot.send_message(message.chat.id, 'Введите: ФИО должность нумеръ')
    bot.register_next_step_handler(send, email_create)


def email_create(message):
    first = message.text.split()[1]
    last = message.text.split()[0]
    middle = message.text.split()[2]
    phone = message.text.split()[4]
    position = message.text.split()[3]

    uis_login = create_nickname(first, last, middle, 'email_create')
    bot.send_message(message.chat.id, '✅ логинъ')

    uis_password = create_password()
    bot.send_message(message.chat.id, '✅ шифръ')

    id_yc = create_email(first, last, middle, phone, position, uis_password, uis_login, domain_uis)
    if 'Response' in str(id_yc):
        bot.send_message(message.chat.id, '❌ емейлъ' + '\n' + id_yc)
        return
    else:
        bot.send_message(message.chat.id, '✅ емейлъ')
        bot.send_message(message.chat.id, uis_login + '@' + domain_uis + '\n' + uis_password)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы