| @@ -16,18 +16,18 @@ def canonicalize(in_str): | |||||
| return in_str.lower().replace(' ', '_') | return in_str.lower().replace(' ', '_') | ||||
| def get_founderless_regions(): | |||||
| async def get_founderless_regions(): | |||||
| """Return the list of founderless regions.""" | """Return the list of founderless regions.""" | ||||
| time.sleep(RATE_LIMIT) | |||||
| await asyncio.sleep(RATE_LIMIT) | |||||
| r = requests.get('https://www.nationstates.net/cgi-bin/api.cgi?q=regionsbytag;tags=founderless', | r = requests.get('https://www.nationstates.net/cgi-bin/api.cgi?q=regionsbytag;tags=founderless', | ||||
| headers=R_HEADERS) | headers=R_HEADERS) | ||||
| tree = et.fromstring(r.text) | tree = et.fromstring(r.text) | ||||
| return [canonicalize(region) for region in tree[0].text.split(',')] | return [canonicalize(region) for region in tree[0].text.split(',')] | ||||
| def download_region_dump(): | |||||
| async def download_region_dump(): | |||||
| """Download the latest region dump from the NS API.""" | """Download the latest region dump from the NS API.""" | ||||
| time.sleep(RATE_LIMIT) | |||||
| await asyncio.sleep(RATE_LIMIT) | |||||
| r = requests.get('https://www.nationstates.net/pages/regions.xml.gz', | r = requests.get('https://www.nationstates.net/pages/regions.xml.gz', | ||||
| headers=R_HEADERS) | headers=R_HEADERS) | ||||
| with open('regions.xml.gz', 'wb') as f: | with open('regions.xml.gz', 'wb') as f: | ||||
| @@ -62,23 +62,23 @@ class FounderlessNotify(commands.Cog): | |||||
| def cog_unload(self): | def cog_unload(self): | ||||
| pass | pass | ||||
| @commands.command() | |||||
| @checks.is_owner() | |||||
| async def is_task_running(self, ctx): | |||||
| """Check if the main loop is running.""" | |||||
| if self.bg_loop_task: | |||||
| await ctx.send('True') | |||||
| else: | |||||
| await ctx.send('False') | |||||
| @commands.command() | |||||
| @checks.is_owner() | |||||
| async def start_task(self, ctx): | |||||
| """Start the main loop if it is not running.""" | |||||
| if self.bg_loop_task: | |||||
| await ctx.send('Task is already running') | |||||
| else: | |||||
| self.bg_loop_task = asyncio.create_task(self.bg_loop()) | |||||
| # @commands.command() | |||||
| # @checks.is_owner() | |||||
| # async def is_task_running(self, ctx): | |||||
| # """Check if the main loop is running.""" | |||||
| # if self.bg_loop_task: | |||||
| # await ctx.send('True') | |||||
| # else: | |||||
| # await ctx.send('False') | |||||
| # @commands.command() | |||||
| # @checks.is_owner() | |||||
| # async def start_task(self, ctx): | |||||
| # """Start the main loop if it is not running.""" | |||||
| # if self.bg_loop_task: | |||||
| # await ctx.send('Task is already running') | |||||
| # else: | |||||
| # self.bg_loop_task = asyncio.create_task(self.bg_loop()) | |||||
| @commands.command() | @commands.command() | ||||
| @checks.is_owner() | @checks.is_owner() | ||||
| @@ -94,7 +94,7 @@ class FounderlessNotify(commands.Cog): | |||||
| channel_id = await self.config.notify_channel() | channel_id = await self.config.notify_channel() | ||||
| channel = self.bot.get_channel(channel_id) | channel = self.bot.get_channel(channel_id) | ||||
| await channel.send(f'Beginning {update_type} check...') | await channel.send(f'Beginning {update_type} check...') | ||||
| new_founderless_regions = get_founderless_regions() | |||||
| new_founderless_regions = await get_founderless_regions() | |||||
| previous_founderless_regions = await self.config.previous_founderless() | previous_founderless_regions = await self.config.previous_founderless() | ||||
| # A region is now founderless if it is in the current list, but wasn't in the previous list | # A region is now founderless if it is in the current list, but wasn't in the previous list | ||||
| now_founderless = list() | now_founderless = list() | ||||
| @@ -110,7 +110,7 @@ class FounderlessNotify(commands.Cog): | |||||
| try: | try: | ||||
| region_endos = now_founderless_endos[region] | region_endos = now_founderless_endos[region] | ||||
| except KeyError: | except KeyError: | ||||
| region_endos = -1 | |||||
| region_endos = 0 | |||||
| out.append((region_endos, region)) | out.append((region_endos, region)) | ||||
| # Sort the output by delegate endos in descending order | # Sort the output by delegate endos in descending order | ||||
| out.sort() | out.sort() | ||||
| @@ -118,7 +118,10 @@ class FounderlessNotify(commands.Cog): | |||||
| # Prep output | # Prep output | ||||
| message_content = "The following regions are now **Founderless**:\n" | message_content = "The following regions are now **Founderless**:\n" | ||||
| for region in out: | for region in out: | ||||
| message_content += f"https://www.nationstates.net/region={region[1]} ({region[0]})\n" | |||||
| if region[0] == 0: | |||||
| message_content += f"https://www.nationstates.net/region={region[1]} (N/A)\n" | |||||
| else: | |||||
| message_content += f"https://www.nationstates.net/region={region[1]} ({region[0]})\n" | |||||
| for page in pagify(message_content): | for page in pagify(message_content): | ||||
| await channel.send(page) | await channel.send(page) | ||||
| await self.config.previous_founderless.set(new_founderless_regions) | await self.config.previous_founderless.set(new_founderless_regions) | ||||