    def __init__(self, chat, tasker, auth_builder, reporting_channel, config_path):
        # type: (Chat, Tasker, Callable[[str], Auth], str, str) -> None
        '''
        Args:
            chat (Chat): The chat object to use for messaging.
            tasker (Tasker): The Tasker object to get tasks from
            auth_builder (Auth): The constructor to build Auth objects from.
                                 It should take in only a username as a parameter.
            reporting_channel (str): Channel ID to report alerts in need of verification to.
            config_path (str): Path to configuration file
        '''
        logging.info('Creating securitybot.')
        self.tasker = tasker
        self.auth_builder = auth_builder
        self.reporting_channel = reporting_channel
        self._last_task_poll = datetime.min.replace(tzinfo=pytz.utc)
        self._last_report = datetime.min.replace(tzinfo=pytz.utc)

        self._load_config(config_path)

        self.chat = chat
        chat.connect()

        # Load blacklist from SQL
        self.blacklist = SQLBlacklist()

        # A dictionary to be populated with all members of the team
        self.users = {} # type: Dict[str, User]
        self.users_by_name = {} # type: Dict[str, User]
        self._populate_users()

        # Dictionary of users who have outstanding tasks
        self.active_users = {} # type: Dict[str, User]

        # Recover tasks
        self.recover_in_progress_tasks()

        logging.info('Done!')
Args:
chat (Chat): The chat object to use for messaging.
tasker (Tasker): The Tasker object to get tasks from
auth_builder (Auth): The constructor to build Auth objects from.
It should take in only a username as a parameter.
reporting_channel (str): Channel ID to report alerts in need of verification to.
config_path (str): Path to configuration file
securitybot/bot.py