首页 > 解决方案 > 为什么 Dictionary Flag 在 python 中工作有偏差?

问题描述

为什么flagSelectTask有时工作有时不工作?

在下面的代码中,当我在聊天机器人中键入 /reminder 时,该标志应该设置为 True,当我打开 webview 时,它应该相应地检查条件和结果。但是如果我在关闭 web 视图后多次单击它会返回 if 块或 else 块。为什么会这样?

class Bot:
    flagSelectTask = {}

    def handleTextMessage(self,recipientID,messagingEvent):
        if textMessage.lower() == '/reminder':
            Bot.flagSelectTask[recipientID] = True # Select Task Webview Access Permission Granted
            return self.selectTaskWebView(recipientID)

    def selectTaskWebView(self,assignerID):

        messageData = {
            "recipient":{
                "id":assignerID
        },
        "message": {
        "attachment": {
            "type": "template",
            "payload": {
                "template_type": "generic",
                "elements": [
                    {
                        "title": "Please Select a Task",
                        "buttons": [
                            {
                                "type": "web_url",
                                "title": "Select",
                                "url": f"url.com/select-task/{assignerID}",
                                "webview_height_ratio": "tall",
                                "messenger_extensions": "true",
                            },
                        ],
                    },
                ],
            },
        }}}

        return self.sendAPI(messageData)

bot = Bot()

@app.route('/select-task/<string:assignerID>',methods=['GET'])
def selectTaskView(assignerID):

    if (assignerID in bot.flagSelectTask) and (bot.flagSelectTask[assignerID]):
        Task = bot.loadTasks(assignerID)
        log(Task)
        if len(Task)!=0:
            return render_template('tasks.html',tasks=Task)
        else:
            return '<b>You have not assigned any task yet</b>'
    else:
        return '<h1> Thank You. Please Restart If you want to send a reminder again.</h1>'

标签: pythonpython-3.xflaskfacebook-graph-apichatbot

解决方案


推荐阅读