Python elif错误

时间:2015-07-01 10:45:33

标签: python

def make_url_query_string(params):
    return '?' + '&'.join([str(key) + '=' + str(params[key]) for key in params])

def check_updates(limit=5):

global offset
        params = make_url_query_string({'offset': offset+1, 'limit': limit, 'timeout': 0})
        request = requests.get(URL + TOKEN + '/getUpdates' + params) # Отправка запроса обновлений
        if not request.status_code == 200: return False 
        if not request.json()['ok']: return False 
        if not request.json()['result']: return False 
        for update in request.json()['result']: 
            offset = update['update_id'] 
            from_id = update['message']['from']['id']
            message = update['message']
            if 'text' in message:
                print '>> OFFSET: ', offset
                print '>> MESSAGE:', message
                print '-' * 10
            else:
                continue
            if message == '/help':
                send_respond ('/help message', from_id)
            elif message  == '/start':
                send_respond ('/help - Show available commands list', from_id)
            elif message == u'привет':
                send_respond ('Приветствую!', from_id)
            elif message == u'hello':
                send_respond ('Hey there!', from_id)
            elif message == 'как дела?':
                send_respond ('Нормально, как твои?', from_id)
            else:
                send_respond ('I don\'t understand that yet!', from_id)

问题在于机器人的回答是“我还没有理解!”#34;在代码中的任何消息,偶数/帮助和其他消息。我该如何修复数据?

2 个答案:

答案 0 :(得分:2)

包含'/help''/start'的邮件不会包含'text',因此会触发对if 'text' in message的else子句的评估,跳过send_respond的整个测试

只有包含'text'的邮件可以评估这些测试,并且在这些情况下自然只有else匹配。

答案 1 :(得分:1)

您正在将数组与字符串进行比较。这绝不会导致任何结果。您可能希望获取消息的文本。 您可以尝试以下方式执行此操作:

更改这些行:

 else:
        continue
 if message == '/help':

对于这些:

 else:
        continue
 message = message['text']
 if message == '/help':