Как при соблюдении условия отправить сообщение один раз?
Всех приветствую! Подскажите, как при соблюдении условия "else" отправить сообщение пользователю один раз, а не спамить? И в случае появления повторного появления пинга - отправить пользователю сообщение "Соединение восстановлено" и обратно вернуть в начало цикла.
Заранее благодарен!
hostname = "*****"
channel = '*****'
bot = telebot.TeleBot(<TOKEN>)
class RepeatTimer(Timer):
def run(self):
while not self.finished.wait(self.interval):
self.function(*self.args, **self.kwargs)
def select():
response = os.system('ping ' + hostname)
if response == 0:
print(hostname + ' пингуется')
bot.send_message(channel, hostname + ' интернет есть')
else:
print(hostname + ' не пингуется')
bot.send_message(channel, hostname + ' интернета нет')
if __name__=='__main__':
RepeatTimer(30, select).start()
bot.polling(none_stop=True)
Ответы (1 шт):
Автор решения: Никита
→ Ссылка
Как уже сказали в комментариях - можно использовать флаг. Наример так:
send_message = True #Создаем переменную
def select():
response = os.system('ping ' + hostname)
if response == 0:
print(hostname + ' пингуется')
bot.send_message(-550694440, hostname + ' интернет есть')
send_message = True #Присваиваем ей значение True когда появляеться сигнал
elif send_message: #Если сигнал потерян и сообщение еще не отправлено...
print(hostname + ' не пингуется')
bot.send_message(-550694440, hostname + ' интернета нет')
send_message = False