@black_xe

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

Есть два файла, main.py постоянно работает, с 1 строчки до последней, на 26 строке вызывается функция из второго файла, как сделать что бы первое условие выполнялось только один раз?
Хотел сделать топорным способом, но даже так не работает. В файл main поместил переменную welcome = True, а в функции condition, при верном срабатывании условии, при welcome == True, я меняю значение переменной на False и так в каждом условии, что бы больше сообщение не выводилось. Но оно все равно выводится постоянно. Помогите пожалуйста придумать хороший способ.

condition.py
import vk_api
import random

def condition(response, item, write_msg, term, profiles, welcome):
	hello = ('Привет', 'Хай', 'Здарова', 'qq', 'Кук', 'Ку', 'Hello', 'Hi', 'Holla', 'Добрый день', 'Добрый вечер')
	issue = ('Я тебя не понимаю!', 'Что тут происходит ??', 'О чем ты мне рассказываешь?', 'Не балуйся)',
	'Hе мешай, я думаю', 'Говорить не думая — все равно что стрелять не целясь.', 'Не спорь со мной. Я читал об этом в одной очень умной книжке.',
	'Что вы имеете против? Я всего лишь машина на стадии разработки.')
# ЛОГИКА УСЛОВИЙ
	if item['user_id'] > 0 and welcome == True:
		message_name = random.choice(hello) + ' ' + profiles[0]['first_name'] + '. Следующее общение осуществляется с ботом!\nПоприветствуй меня для продолжения общения.'
		write_msg(item['user_id'], message_name)
		welcome = False
	else:
		write_msg(item['user_id'], 'Следующее общение осуществляется с ботом!\nПоприветствуй меня для продолжения общения.')
	for count in hello:
		if response['items'][0]['body'].lower() == count.lower():
			write_msg(item['user_id'], 'И тебе привет)\nХош поигарть? Пиши 1 - если да, или 2 - если нет')
			term = True
			welcome = False
	if response['items'][0]['body'].lower() == 'как дела' or response['items'][0]['body'].lower() == 'как дела?':
		write_msg(item['user_id'], 'Превосходно! А твои как ?')
		welcome = False
	elif response['items'][0]['body'] == '1':
		write_msg(item['user_id'], 'Ответ 1)!')
		welcome = False
	elif response['items'][0]['body'] == '2':
		write_msg(item['user_id'], 'Ответ 2)')
		welcome = False
	elif term == False:
		write_msg(item['user_id'], random.choice(issue))
		welcome = False
	welcome = False

	if __name__ == "__main__":
		print("This is module")


main.py
import vk_api
import time
from condition import condition

login = input("Введите логин от ВК: ")
password = input("Введите пароль от ВК: ")

vk = vk_api.VkApi(login, password)
vk.auth()

values = {'out':0, 'count':1, 'time_offset':60}
term = False #Проверка на логику <elif>
welcome = True #Первое, приветственное сообщение

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

while True:
	response = vk.method('messages.get', values)
	if response['items']:
		values['last_message_id'] = response['items'][0]['id']
	for item in response['items']:
		profiles = vk.method('users.get', {"user_id" : item['user_id'], "fields" : 'first_name'})
		if response['items'][0]['title'] == '':
			try:
				condition(response, item, write_msg, term, profiles, welcome)
			except Exception:
				time.sleep(60)
				write_msg(item['user_id'], 'Ты меня сломал >_<\nНе нужно меня DDoSить')
	time.sleep(2)
  • Вопрос задан
  • 223 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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