Пример #1
0
 def run(self, command: str, regex: str) -> str:
     try:
         params = get_params(command, regex, self.regexes.keys())
         self._pick_action(command, params)
         self.await_next_command()
     except Exception as e:
         self.log_exception(e)
Пример #2
0
 def run(self, command: str, regex) -> str:
     try:
         params = get_params(command, regex, self.regexes.keys())
         if all([v == '' for v in params.values()]):
             if 'stop' in command or 'cancel' in command:
                 if self.timer is not None:
                     if not self.timer.finished.is_set():
                         self.timer.cancel()
                     self.timer = None
                     self.say('Timer has been cancelled')
                 else:
                     self.say('No timer has been set')
             else:
                 now = datetime.datetime.now()
                 self.say('It is {0:%I}:{0:%M} {0:%p}'.format(now))
         elif any(
             [v == '' for v in [params['duration'], params['increment']]]):
             # They forgot one or both of the parameters
             pass
         elif self.timer is not None:
             self.say('You already have a timer set')
         else:
             seconds = self._complex_to_seconds(params)
             # subtract 1 from the total because the TTS call takes a second
             self._spawn_timer(seconds - 1)
             self.say('Timer set')
         self.await_next_command()
     except Exception as e:
         self.log_exception(e)
Пример #3
0
 def run(self, command: str, regex) -> str:
     error = None
     result = None
     try:
         params = get_params(command, regex, self.regexes.keys())
         if any([p is None for p in params.values()]) or \
                 params.keys() == []:
             return
         # one useful thing for temperature
         before_unit = self._strip_degrees(params['before_unit'])
         after_unit = self._strip_degrees(params['after_unit'])
         try:
             before = self.unit_reg(before_unit)
             after = self.unit_reg(after_unit)
             if params['after_count'] != '':
                 result = self._convert(
                     after, before, params['after_count']
                 )
             elif params['before_count'] != '':
                 result = self._convert(
                     before, after, params['before_count']
                 )
         except OffsetUnitCalculusError as err:
             error = f'Conversion Error: {err}'
         except UndefinedUnitError as err:
             error = f'Undefined unit: {err}'
         except DimensionalityError as err:
             error = f'Conversion Error:  {err}'
         if error is not None:
             self.send_error(error)
         elif result is not None:
             self.say(result)
     except Exception as e:
         self.log_exception(e)
Пример #4
0
 def run(self, command: str, regex) -> str:
     try:
         params = get_params(command, regex, self.regexes.keys())
         action_fn = self._pick_action(params)
         action_fn()
     except Exception as e:
         self.log_exception(e)
Пример #5
0
 def run(self, command: str, regex) -> str:
     try:
         params = get_params(command, regex, self.regexes.keys())
         action_fn = self._pick_action(params)
         action_fn()
         self.finish_action(callback=self.acknowledge)
     except Exception as e:
         self.log_exception(e)
Пример #6
0
 def run(self, command: str, regex) -> str:
     try:
         result = None
         params = get_params(command, regex, self.regexes.keys())
         expression = params['expression']
         if expression == '':
             return
         calculator = RPNCalculator()
         value = calculator.calculate(expression)
         if is_rounded_whole_number(value):
             result = f'{value.split(".")[0]}'
         else:
             result = f'about {trim_zeroes(f"{float(value):.6f}")}'
         if result is not None:
             self.say(result)
     except Exception as e:
         self.log_exception(e)
Пример #7
0
 def run(self, command: str, regex) -> str:
     try:
         result = None
         params = get_params(command, regex, self.regexes.keys())
         if command == 'flip a coin':
             result = random.choice(['heads', 'tails'])
         elif command == 'roll a dice':
             result = str(random.randint(1, 6))
         else:
             # Dice expression
             result = self.parse_dice_expression(params['expression'])
             if is_rounded_whole_number(result):
                 result = f'{result.split(".")[0]}'
             result = trim_zeroes(f'{float(result):.6f}')
         if result is not None:
             self.say(result)
     except Exception as e:
         self.log_exception(e)