Stop story after 30 minutes of silence from the audience

This commit is contained in:
Ruben van de Ven 2019-11-28 18:47:58 +01:00
parent 44958e8340
commit d65a79d378
2 changed files with 17 additions and 1 deletions

View file

@ -429,7 +429,7 @@ class CentralCommand(object):
return return
#TODO: hugveyid in log and prevent duplicate messages #TODO: hugveyid in log and prevent duplicate messages
logger.critical(f'Hugvey stopped (crashed?). Reinstantiate after 5 sec') logger.critical(f'Hugvey {hugvey_id} stopped (crashed?). Reinstantiate after 5 sec')
time.sleep(5) time.sleep(5)
async def timerEmitter(self): async def timerEmitter(self):

View file

@ -1763,6 +1763,21 @@ class Story(object):
def logHasMsg(self, node): def logHasMsg(self, node):
return node in self.msgLog return node in self.msgLog
def checkIfGone(self):
'''
Make a guestimation if the audience has left... just really a simple timer check.
If we do think so, give an error and stop the conversation
'''
if not self.lastMsgFinishTime:
# don't do it when hugvey is speaking
return
if self.timer.hasMark('last_speech') and self.timer.getElapsed('last_speech') > 30*60:
self.hugvey.eventLogger.warning("Audience is quiet for too long...stopping")
self.logger.warning("Audience is quiet, force END!")
self._finish()
async def _renderer(self): async def _renderer(self):
""" """
every 1/10 sec. determine what needs to be done based on the current story state every 1/10 sec. determine what needs to be done based on the current story state
@ -1782,6 +1797,7 @@ class Story(object):
directions = self.getCurrentDirections() directions = self.getCurrentDirections()
await self._processDirections(directions) await self._processDirections(directions)
self.checkIfGone()
# TODO create timer event # TODO create timer event
# self.commands.append({'msg':'TEST!'}) # self.commands.append({'msg':'TEST!'})