Can you DRY this up by turning this into an abstract function which takes an additional argument, so that you can pass either `self._commands` or `self._privmsgs`? It would clean up the code a bit.