def __init__(self, reddit: praw.Reddit, subreddit: str) -> None: """initialize""" def register_signals() -> None: """registers signals""" signal.signal(signal.SIGTERM, self.exit) self.logger: logging.Logger = slack_logger.initialize( app_name = "user_pinger", stream_loglevel = "INFO", slack_loglevel = "CRITICAL", ) self.logger.setLevel("INFO") self.logger.debug("Initializing") self.reddit: praw.Reddit = reddit self.primary_subreddit: praw.models.Subreddit = self.reddit.subreddit( subreddit.split("+")[0] ) self.subreddits: praw.models.Subreddit = self.reddit.subreddit( subreddit ) self.config: ConfigParser = self._get_wiki_page(["config"]) self.parsed: Deque[str] = self.load() self.start_time: float = time() register_signals() self.logger.info("Successfully initialized")
def __init__(self, reddit: praw.Reddit, subreddit: str) -> None: """initialize rentseeker""" def start_time() -> int: """returns start time of function""" from calendar import timegm from datetime import datetime return int(timegm(datetime.utcnow().utctimetuple())) def register_signals() -> None: """registers signals for systemd""" signal.signal(signal.SIGTERM, self.exit) self.logger: logging.Logger = slack_logger.initialize( app_name="rent_seeker", stream_loglevel="INFO", slack_loglevel="CRITICAL", ) self.reddit: praw.Reddit = reddit self.subreddit: praw.models.Subreddit = self.reddit.subreddit( subreddit) self.tracked: Deque[Holder] = self.load() self.init_time: int = start_time() register_signals() self.logger.debug("Start time is \"%s\"", self.init_time) self.logger.info("Successfully initialized")
def __init__(self, reddit: praw.Reddit, subreddits: List[str]) -> None: self.logger = slack_logger.initialize("goolsbee-bot") self.logger.debug("Intializing") self.logger.debug("Logging into reddit") self.reddit: praw.Reddit = reddit self.logger.debug("Logged into reddit") self.logger.debug("Validating subreddits") self.subreddits: List[praw.models.Subreddit] = [] for subreddit in subreddits: try: self.subreddits.append(self.reddit.subreddit(subreddit)) except praw.exceptions.APIException: self.logger.warning("\"%s\" is an invalid subreddit, skipping", subreddit) self.logger.debug("Validated subreddits") with open("replied_comments.txt") as replied: self.commented: List[str] = replied.read().split() self.logger.debug("Opening responses") import pkg_resources data: bytes = pkg_resources.resource_string(__name__, "data/responses.json") res_list: List[Dict[str, Any]] = json.loads(data) self.responses: List[Response] = [ Response(item["triggers"], item["table"]) for item in res_list ] self.logger.debug("Opened responses") self.logger.info("Intialized successfully") return
def __init__(self, reddit, subreddit): self.reddit = reddit self.subreddit = reddit.subreddit(subreddit) self.logger = slack_logger.initialize( app_name='backup_bot', stream_loglevel='INFO', slack_loglevel='CRITICAL', ) self.logger.info('Backup bot is online')
def __init__(self, reddit: praw.Reddit, subreddit: str) -> None: """Initial setup""" self.logger: logging.Logger = slack_logger.initialize( app_name="flairbot", stream_loglevel="INFO", slack_loglevel="CRITICAL", ) self.reddit: praw.Reddit = reddit self.subreddit: praw.models.Subreddit = self.reddit.subreddit( subreddit) self.config: ConfigParser = self.get_wiki_page() self.logger.info("Initalized successfully") return
def __init__(self, reddit: praw.Reddit) -> None: """initialize""" def register_signals() -> None: """registers signals""" signal.signal(signal.SIGTERM, self.exit) self.logger: logging.Logger = slack_logger.initialize("ideology_bot") self.logger.debug("Initializing") self.reddit: praw.Reddit = reddit self.ideologies: Dict[str, Ideology] = self._read_ideologies() register_signals() self.logger.info("Successfully initialized")
def __init__(self, reddit: praw.Reddit, subreddit: str) -> None: """initialize""" def register_signals() -> None: """registers signals""" signal.signal(signal.SIGTERM, self.exit) self.logger: logging.Logger = slack_logger.initialize("user_pinger") self.logger.debug("Initializing") self.reddit: praw.Reddit = reddit self.subreddit: praw.models.Subreddit = self.reddit.subreddit( subreddit) self.config: ConfigParser = self._get_wiki_page(["config"]) self.parsed: Deque[str] = self.load() register_signals() self.logger.info("Successfully initialized")
def __init__(self, reddit, subreddit, amf_url, dt_title, dt_author): """initialize DonationSticky""" self.reddit = reddit self.subreddit = self.reddit.subreddit(subreddit) self.amf_url = amf_url self.logger = slack_logger.initialize( app_name = "donation_sticky", slack_loglevel = "CRITICAL", stream_loglevel = "INFO" ) self.tracked = self.load() self.dt_title = dt_title self.dt_author = dt_author signal.signal(signal.SIGTERM, self.exit) # for systemd self.logger.info("Successfully initialized")
def __init__(self, reddit: praw.Reddit, subreddit: str) -> None: def get_config() -> ConfigParser: """grabs config""" parser: ConfigParser = ConfigParser(allow_no_value=True, delimiters=('=')) self.logger.debug("Grabbing config") while True: try: config_string = self.subreddit.wiki["dt/config"].content_md break except: self.logger.error( "Unable to retrieve config, wait 1 minute & retry") from time import sleep sleep(60) if config_string: self.logger.debug("Config grabbed") parser.read_string(config_string) else: self.logger.error("No config found") return parser def latest() -> Optional[praw.models.Submission]: """return latest discussion thread""" self.logger.debug("Fetching latest discussion thread") for submission in self.subreddit.search(self.config.get( "config", "title", fallback="Discussion Thread"), sort="new"): if submission.author == self.reddit.user.me(): self.logger.debug("Latest discussion thread returned") return submission self.logger.warning( "Could not find latest discussion thread. Returning None") return None def make_scheduler() -> Scheduler: """makes scheduler object""" self.logger.debug("Making scheduler") scheduler: Scheduler = Scheduler() times: List[str] = [] try: times = self.config.options("times") except NoSectionError: self.logger.warning( "No times specified in the config, setting to 1:00") times = ["1:00"] try: days: List[str] = self.config.options("days") except NoSectionError: self.logger.warning( "No days are specified in the config, setting to all days") for time in times: try: scheduler.every().day.at(time).do(self.post) except ValueError: self.logger.debug( "\"%s\" is not a valid time, skipping") else: for day in days: self.logger.debug("Adding day \"%s\" to scheduler", day) for time in times: try: getattr(scheduler.every(), day).at(time).do(self.post) except AttributeError: self.logger.error( "\"%s\" is not an valid day, skipping", day) except ValueError: self.logger.warning( "\"%s\" is not a valid time, skipping", time) self.logger.debug("Scheduler made") return scheduler self.logger: logging.Logger = slack_logger.initialize( app_name="discussion_thread", stream_loglevel="INFO", slack_loglevel="CRITICAL", ) self.reddit: praw.Reddit = reddit self.subreddit: praw.models.Subreddit = self.reddit.subreddit( subreddit) self.config: ConfigParser = get_config() self.submission: Optional[praw.reddit.models.Submission] = latest() self.schedule: Scheduler = make_scheduler() self.logger.info("discussion-thread intialized successfully") return