Пакет pulse

/* Пульс - сердце Бота :)
запускает каждую секунду Аctivatin() в net.go, поддерживая возможность самостоятельных действий Бота
В общем, это обеспечивает возможность параллельной работы функций Бота, отводя им выполнение с каждым пульсом
 */

var PulsCount=0; // счетчик пульса
var noWorkung=false // не активировать очередной цикл если true - тишина для выполнения функции OwnFuncForRun
var startWait=0  // начало ожидания
var secWaiting=1 // время ожидания
var OwnFuncForRun func() // переменная, которой нужно присвоить функцию для выполнения в тишине
func init() {
	PulsCount=0; // счетчик пульса
	puls()
}
func puls(){
	time.AfterFunc(1*time.Second, func() {
		// сканирование состояния (пульс):
		//now := time.Now()
		//curTime := now.Second()//.Millisecond()
		//log.Println("пульс",curTime)
		if !noWorkung {
			Аctivatin()
		}

		if startWait>0 {// ждем следующего цикла и выполняем OwnFuncForRun
			if PulsCount > (startWait+1){
				OwnFuncForRun()
				noWorkung = false // конец ожидания
			}
		}
		///////////////////////////

		//ac := time.Date(0, time.January, 1, 0, 0, 0, 0, time.UTC)
		//lastPulsTime=curTime
		PulsCount++;
		puls()
	})
}
///////////////////////////////////////////////////


/* если нужно остановить все на время waitSec для выполнения какой-то функции, то
Пример для функции созранения всей памяти:
func WaitSaveAllPryMemory(){
	OwnFuncForRun=SaveAllPryMemory
	StopAll() // выполнить  saveAllPryMemory() в тишине, когда ничто не работает
}
*/
func StopAll(){
	noWorkung=true  // останавливает puls()
	startWait=PulsCount
}