如何使用电报机器人存储用户输入,然后在需要时获取输入

2024-06-12 23:39:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我想让我的机器人问用户一个问题

假设我有一个名为“email”的空字符串

我设置email=''

让问题成为用户的电子邮件。因此,bot将要求用户键入他的电子邮件,然后无论用户在问题之后键入什么,bot都将保存该回复并更新电子邮件

我已经知道,默认情况下,发送到电报机器人的任何回复/消息都会被存储,您可以使用getUpdates方法检索它

假设用户回答:name@Gmailcom"

因此,现在我想将此回复存储在变量“email”中

因此变量“email”现在将包含值'name@Gmail.com"

我希望bot包含帐户部分。因此,当用户单击此按钮时,将显示如下内容:

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

另外,如果您对如何使用电报机器人创建推荐链接有想法,请分享

我怎样才能做到这一点。我使用的是PyAPI


Tags: ofno用户namecom键入电子邮件email
1条回答
网友
1楼 · 发布于 2024-06-12 23:39:49

简单回答:

您需要一个数据库

例如,我开发了一个预算电报机器人,用于存储日常购买和分析支出

我将所有用户数据存储在一个单独的数据库中(在本例中为redis),然后访问它

考虑到您的用例,我建议您使用一个简单的基于键的数据库,如redis,您可以在其中存储和访问简单的类似dict的数据。Heroku和其他受欢迎的托管电报机器人程序的web服务也提供免费的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!')

相关问题 更多 >