@sunekosuri

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

У меня ест две функции с рассылкой. Одна отправляет фото, а другая текс. Сейчас при отправки фото в диалог с ботом, оно автоматически разошьется всем. Как сделать так чтобы фото отправлялось только при условии того, что функция с отправкой текста выполнена или выполняется.

#mailing 
@bot.message_handler(commands=['news'])
def hendler_newsletter(message):

	connect = sqlite3.connect('admins.db')
	cursor = connect.cursor()
	admin = [x[0] for x in cursor.execute('SELECT * FROM admins_id ORDER BY id') if x[0] == message.chat.id]
	connect.commit()
	if admin:		

		msg = bot.send_message(message.chat.id, "Что вы хотите отправить всем пользователям бота ?")
		bot.register_next_step_handler(msg, mailing)

def mailing(message):
	# рассылка текста 
	connect = sqlite3.connect('admins.db')
	cursor = connect.cursor()

	admin = [x[0] for x in cursor.execute('SELECT * FROM admins_id ORDER BY id') if x[0] == message.chat.id]
	connect.commit()
	
	if admin:
		connect = sqlite3.connect('users.db')
		cursor = connect.cursor()
		for user in cursor.execute('SELECT * FROM login_id ORDER BY id'):
			bot.send_message(user[0],message.text)
		connect.commit()

		kb = types.ReplyKeyboardMarkup(True)
		kb.row('✅Да', '❌Нет')

	bot.send_message(message.chat.id,"Прикрепить фото ?" , reply_markup=kb)

	if message.text == '✅Да':
		bot.register_next_step_handler(msg, handle_docs_photo)
	if message.text == '❌Нет':
		bot.register_next_step_handler(msg, hendler_keyboard)	
			

@bot.message_handler(content_types=['photo'])
def handle_docs_photo(message):
	# рассылка фото
	connect = sqlite3.connect('admins.db')
	cursor = connect.cursor()
	admin = [x[0] for x in cursor.execute('SELECT * FROM admins_id ORDER BY id') if x[0] == message.chat.id]
	connect.commit()
	if admin:
		file_info = bot.get_file(message.photo[len(message.photo)-1].file_id)
		downloaded_file = bot.download_file(file_info.file_path)

		src='C:/Python/Bot/'+file_info.file_path;
		with open(src, 'wb') as new_file:
			new_file.write(downloaded_file)

		connect = sqlite3.connect('users.db')
		cursor = connect.cursor()
		for user in cursor.execute('SELECT * FROM login_id ORDER BY id'):
			bot.send_photo(user[0], open(src, 'rb'))

		msg = bot.send_message(message.chat.id, "Рассылка окончена")
		bot.register_next_step_handler(msg, hendler_keyboard)
  • Вопрос задан
  • 139 просмотров
Пригласить эксперта
Ответы на вопрос 2
@dmshar
А что, у вас есть мультипроцессинг? В Python, как и в любом другом языке программирования, если не предпринять специальных усилий и вызвать две функции последовательно, то вторая будет выполняться после окончания работы первой.
Ну вот и вызывайте вашу функцию отправку фото после вызова функции отправки текста.
Ответ написан
Комментировать
Sadatake
@Sadatake
А в чём проблема вставить вызов функции в конце прошлой?Если уж вторая нуждается в вызове в 100% случаях после выполнения первой, то почему бы и нет?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
30 нояб. 2024, в 22:41
500 руб./за проект
30 нояб. 2024, в 20:49
2000 руб./за проект
30 нояб. 2024, в 20:18
5000 руб./за проект