@colcefer

Как правильно зациклить функцию?

while True:
    try:
        url = 'https://'+server+'?act=a_check&key='+key+'&ts='+ts+'&wait=25&mode=2&version=2'
        zapros1 = requests.get(url,
        params={'wait': 20,
                'v' : 5.103,}).json()
        updates = zapros1['updates1']
            # print(updates)
        if updates:  # проверка, были ли обновления
            for element in updates:  # проход по всем обновлениям в ответе
                action_code = element[0]  # запись в переменную кода события
                if action_code == 4:
                    if element[3] - 2000000000 == 37:  # проверяем, было ли отправлено сообщение в беседе
                        user_id = element[6]['from']  # id отправителя
                        chat_id = element[3] - 2000000000  # id беседы
                        chat = requests.get('https://api.vk.com/method/messages.getChat', params={'v' : 5.103, 'access_token': configo.tokeno(),'chat_id': chat_id}).json()['response']['title']  # получение названия беседы
                        user = requests.get('https://api.vk.com/method/users.get', params={'v' : 5.103, 'access_token': configo.tokeno(), 'user_ids': user_id, 'name_case': 'nom'}).json()['response'][0]  # получение имени и фамилии пользователя, отправившего сообщение     
                        time_ = element[4]  # время отправления сообщения
                        text = element[5]  # текст сообщения
                        if text:  # проверяем, что сообщение содержит текст
                            mess = time.ctime(time_).split()[3] + ':' +'  '+ user['first_name']+' '+ user['last_name'] + ' ▶ «{}»'.format(chat) + ':\n'+' '+ text
                            bot.send_message(-0000000000000, mess)
        ts = str(zapros1.get('ts'))
    except KeyError:
        print('Провал операции, начинаем заново')


Как после except KeyError: заставить делать снова запрос на URL из try: ??? В данном случае при возникновении KeyError: спамится принт, я неправильно использую конструкцию?
  • Вопрос задан
  • 322 просмотра
Пригласить эксперта
Ответы на вопрос 1
@EastJesus
while True:
    try:
        url = 'https://'+server+'?act=a_check&key='+key+'&ts='+ts+'&wait=25&mode=2&version=2'
        zapros1 = requests.get(url,
        params={'wait': 20,
                'v' : 5.103,}).json()
        updates = zapros1['updates1']
            # print(updates)
        if updates:  # проверка, были ли обновления
            for element in updates:  # проход по всем обновлениям в ответе
                action_code = element[0]  # запись в переменную кода события
                if action_code == 4:
                    if element[3] - 2000000000 == 37:  # проверяем, было ли отправлено сообщение в беседе
                        user_id = element[6]['from']  # id отправителя
                        chat_id = element[3] - 2000000000  # id беседы
                        chat = requests.get('https://api.vk.com/method/messages.getChat', params={'v' : 5.103, 'access_token': configo.tokeno(),'chat_id': chat_id}).json()['response']['title']  # получение названия беседы
                        user = requests.get('https://api.vk.com/method/users.get', params={'v' : 5.103, 'access_token': configo.tokeno(), 'user_ids': user_id, 'name_case': 'nom'}).json()['response'][0]  # получение имени и фамилии пользователя, отправившего сообщение     
                        time_ = element[4]  # время отправления сообщения
                        text = element[5]  # текст сообщения
                        if text:  # проверяем, что сообщение содержит текст
                            mess = time.ctime(time_).split()[3] + ':' +'  '+ user['first_name']+' '+ user['last_name'] + ' ▶ «{}»'.format(chat) + ':\n'+' '+ text
                            bot.send_message(-0000000000000, mess)
        ts = str(zapros1.get('ts'))
    except KeyError:
        print('Провал операции, начинаем заново')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы