Задать вопрос
CupiN
@CupiN
Начинающий программист, С#,C++

Как остановить часть цикла если другая часть выполнена?

# -*- coding: utf-8 -*-
import time
import vk_api

tokens = 'secret infa'
vk = vk_api.VkApi(token = tokens)


vk._auth_token()
values = {'out': 0,'count': 100,'time_offset': 60}
last_val = {'out': 1}

def write_msg(user_id, s):
    vk.method('messages.send', {'user_id':user_id,'message':s})

while True:
    response = vk.method('messages.get',values)
        
    if response['items']:
        values['last_message_id'] = response['items'][0]['id']
        values['last_message'] = response['items'][0]['body'] # Последнее сообщение
       
    for item in response['items']:
        write_msg(item[u'user_id'],u'Что изволите??')
        
        if values['last_message'] == u'ничего': # Сравнивает последнее сообщение
            write_msg(item[u'user_id'],u'Ну и иди отсюда') # Отвечает на него если сравнение прошло
            
    time.sleep(1)


Как сделать так, что бы когда пользователь все же писал "ничего", ему выводилось только "Ну и иди отсюда", а не вот так - aFacPRfXt3A.jpg
  • Вопрос задан
  • 222 просмотра
Подписаться 1 Простой 3 комментария
Решения вопроса 1
ibr_98
@ibr_98
попробуйте:

# -*- coding: utf-8 -*-
import time
import vk_api

tokens = 'secret infa'
vk = vk_api.VkApi(token = tokens)


vk._auth_token()
values = {'out': 0,'count': 100,'time_offset': 60}
last_val = {'out': 1}

def write_msg(user_id, s):
    vk.method('messages.send', {'user_id':user_id,'message':s})

while True:
    response = vk.method('messages.get',values)
        
    if response['items']:
        values['last_message_id'] = response['items'][0]['id']
        values['last_message'] = response['items'][0]['body'] # Последнее сообщение
    

    if values['last_message'] == u'ничего': # Сравнивает последнее сообщение
        write_msg(item[u'user_id'],u'Ну и иди отсюда') # Отвечает на него если сравнение прошло
    else:
	    for item in response['items']:
	        write_msg(item[u'user_id'],u'Что изволите??')
        
            
    time.sleep(1)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@fireSparrow
for item in response['items']:

        if values['last_message'] == u'ничего':
            write_msg(item[u'user_id'],u'Ну и иди отсюда')
            continue # Если условие сработало, то в этом месте
                     # цикл перейдёт к следующему item

         # А если не сработало, то продолжит:
         write_msg(item[u'user_id'],u'Что изволите??')
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы