aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar bendiller <[email protected]>2019-10-03 15:49:55 -0600
committerGravatar bendiller <[email protected]>2019-10-03 15:49:55 -0600
commit241f74c7a51adc0e73e49a9e91ee9a3ae501a8ea (patch)
treea02c6ccc2d63fa082b6d5b22e56f4d81d085bbff
parentAdd sleep(3) between retries, with bot indicating typing during sleep (diff)
Move asyncio.sleep() to avoid disturbing function signatures.
-rw-r--r--bot/cogs/reddit.py29
1 files changed, 13 insertions, 16 deletions
diff --git a/bot/cogs/reddit.py b/bot/cogs/reddit.py
index f072da354..08a725900 100644
--- a/bot/cogs/reddit.py
+++ b/bot/cogs/reddit.py
@@ -34,9 +34,7 @@ class Reddit(Cog):
self.new_posts_task = None
self.top_weekly_posts_task = None
- async def fetch_posts(
- self, channel: TextChannel, route: str, *, amount: int = 25, params: dict = None
- ) -> List[dict]:
+ async def fetch_posts(self, route: str, *, amount: int = 25, params: dict = None) -> List[dict]:
"""A helper method to fetch a certain amount of Reddit posts at a given route."""
# Reddit's JSON responses only provide 25 posts at most.
if not 25 >= amount > 0:
@@ -57,8 +55,7 @@ class Reddit(Cog):
content = await response.json()
posts = content["data"]["children"]
return posts[:amount]
- async with channel.typing():
- await asyncio.sleep(3)
+ await asyncio.sleep(3)
log.debug(f"Invalid response from: {url} - status code {response.status}, mimetype {response.content_type}")
return list() # Failed to get appropriate response within allowed number of retries.
@@ -72,14 +69,14 @@ class Reddit(Cog):
embed.description = ""
# Get the posts
- posts = await self.fetch_posts(
- channel=channel,
- route=f"{subreddit}/top",
- amount=5,
- params={
- "t": time
- }
- )
+ async with channel.typing():
+ posts = await self.fetch_posts(
+ route=f"{subreddit}/top",
+ amount=5,
+ params={
+ "t": time
+ }
+ )
if not posts:
embed.title = random.choice(ERROR_REPLIES)
@@ -121,7 +118,7 @@ class Reddit(Cog):
embed=embed
)
- async def poll_new_posts(self, channel: TextChannel) -> None:
+ async def poll_new_posts(self) -> None:
"""Periodically search for new subreddit posts."""
while True:
await asyncio.sleep(RedditConfig.request_delay)
@@ -142,7 +139,7 @@ class Reddit(Cog):
self.prev_lengths[subreddit] = content_length
# Now we can actually fetch the new data
- posts = await self.fetch_posts(channel, f"{subreddit}/new")
+ posts = await self.fetch_posts(f"{subreddit}/new")
new_posts = []
# Only show new posts if we've checked before.
@@ -271,7 +268,7 @@ class Reddit(Cog):
if self.reddit_channel is not None:
if self.new_posts_task is None:
- self.new_posts_task = self.bot.loop.create_task(self.poll_new_posts(self.reddit_channel))
+ self.new_posts_task = self.bot.loop.create_task(self.poll_new_posts())
if self.top_weekly_posts_task is None:
self.top_weekly_posts_task = self.bot.loop.create_task(self.poll_top_weekly_posts())
else: