def send_meme(webhook: Webhook, subreddits: List[str]) -> bool: meme_subreddit = reddit.subreddit(random.choice(subreddits)) meme = meme_subreddit.random() if not any((meme.url.endswith(i) for i in REDDIT_ALLOWED_FORMATS)): return False embed = Embed(title=meme.title, color=Color.magenta()) embed.set_image(url=meme.url) embed.set_footer( text=f"\U0001f44d {meme.ups} \u2502 \U0001f44e {meme.downs}") webhook.send(embed=embed) return True
def send_memes(webhook: Webhook, subreddits: List[str], quantity: int): sent = 0 skipped = 0 while sent < quantity: meme_subreddit = reddit.subreddit(random.choice(SUBREDDITS)) meme = meme_subreddit.random() if not any((meme.url.endswith(i) for i in REDDIT_ALLOWED_FORMATS)): skipped += 1 continue embed = Embed(title=meme.title, color=Color.magenta()) embed.set_image(url=meme.url) embed.set_footer(text=f"\U0001f44d {meme.ups} \u2502 \U0001f44e {meme.downs}") webhook.send(embed=embed) sent += 1 return sent, skipped
def _publish(self, webhook: Webhook, embeds: List[Embed]): try: webhook.send( avatar_url=avartar, embeds=embeds ) self._stats.sending_success() except NotFound: self._stats.sending_404() return False except HTTPException as e: self._stats.sending_failed() raise e except Exception as e: # FIXME: how to log the error? self._stats.sending_failed() raise e return True
def send_from_yaml(*, webhook: Webhook, filename: str, text: Optional[str] = None, **kwargs): messages, username, avatar_url = yaml_file_to_message(filename) kwargs.setdefault("username", username) kwargs.setdefault("avatar_url", avatar_url) return [ webhook.send(message[0] or text, embeds=message[1], files=message[2], **kwargs) for message in messages ]