Как я могу сохранить ввод от пользователя, используя мой бот telegram, а затем получить ввод, когда я хочу - PullRequest
0 голосов
/ 21 апреля 2020

Я хочу, чтобы моя BOT задала пользователю вопрос.

Допустим, у меня есть пустая строка с именем "email"

И я установил email = ''

Пусть вопрос будет по электронной почте пользователя. Таким образом, бот попросит пользователя ввести свою электронную почту, а затем, что бы пользователь ни вводил после вопроса, бот сохранит этот ответ и обновит электронную почту.

Я уже знаю, что по умолчанию любой ответ / сообщение отправлено в телеграмме бот сохраняется, и вы можете получить его с помощью метода getUpdates.

Допустим, пользователь ответил: "name@Gmailcom"

Итак, теперь я хочу сохранить этот ответ в переменной 'email'

Так что переменная 'email' будет теперь содержит значение 'name@Gmail.com'

Я хочу, чтобы бот содержал раздел аккаунта. Поэтому, когда пользователь нажимает эту кнопку, он отображает что-то вроде этого:

User: 

Email:

No of Referrals:

Поэтому, когда пользователь нажимает кнопку «СЧЕТ», он отображает:

User: JOHN

Email:

No of Referrals:

#Since email='' therefore email is blank.

Теперь, когда Пользователь обновляет свою электронную почту, а затем возвращается и нажимает «Учетная запись», которая у нас теперь есть:

User: JOHN

Email: name@Gmail.com

No of Referrals:

Также, возможно, это возможно сразу после того, как пользователь обновит свою электронную почту и отправит ответ, тогда БОТ ответит с сообщение типа:

Thank you for updating your Email address 

Your email is : name@Gmail.com

Также, если у вас есть идея, как создать реферальную ссылку с помощью бота telegram, пожалуйста, поделитесь ей.

Как я могу это сделать. Я использую pyTelegramBotAPI.

1 Ответ

1 голос
/ 24 апреля 2020

Простой ответ:

Вам нужна база данных

Например, я разработал бота для составления бюджета, который хранит ежедневные покупки и анализирует расходы.

Я храню все пользовательские данные в отдельной базе данных (в данном случае redis) и получаю к ней доступ позже.

Учитывая ваш вариант использования, я бы порекомендовал простую базу данных на основе ключей, такую ​​как redis, где вы может хранить и получать доступ к простым данным типа dict. Heroku и другие веб-сервисы, которые популярны для размещения ботов-телеграмм, также предлагают бесплатные redis экземпляры.

Вот пример кода от моего бота

# Load/create pickle and add new record, afterwards save pickle
    try:
        user_id = str(update.effective_user.id)
        db = pickle.loads(r.get(user_id))
        db.append(entry)
        pdb = pickle.dumps(db)
        r.set(user_id,pdb)
    except:
        user_id = str(update.effective_user.id)
        db = list()
        db.append(entry)
        pdb = pickle.dumps(db)
        r.set(user_id,pdb)

    update.message.reply_text('Saved!')
...