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;在代码中的任何消息,偶数/帮助和其他消息。我该如何修复数据?
答案 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':