code: def sort(self):
          
          # Sort triggers by word and character length first
          for priority, triggers in self._triggers.items():
              self._log.debug('Sorting priority {priority} triggers'.format(priority=priority))
  
              # Get and sort our atomic and wildcard patterns
              atomics = [trigger for trigger in triggers if trigger.pattern_is_atomic]
              wildcards = [trigger for trigger in triggers if not trigger.pattern_is_atomic]
  
              atomics = sorted(atomics, key=lambda trigger: (trigger.pattern_words, trigger.pattern_len), reverse=True)
              wildcards = sorted(wildcards, key=lambda trigger: (trigger.pattern_words, trigger.pattern_len),
                                 reverse=True)
  
              # Replace our sorted triggers
              self._triggers[priority] = atomics + wildcards
  
          # Finally, sort triggers by priority
          self._sorted_triggers = []
  
          for triggers in [self._triggers[priority] for priority in sorted(self._triggers.keys(), reverse=True)]:
              for trigger in triggers:
                  self._sorted_triggers.append(trigger)
  
          self.sorted = True
docs: Sort triggers and their associated responses