diff --git a/isitdown/isitdown.py b/isitdown/isitdown.py index f786928..f16fd22 100644 --- a/isitdown/isitdown.py +++ b/isitdown/isitdown.py @@ -2,6 +2,7 @@ import logging import re import aiohttp +import discord from redbot.core import Config, commands from redbot.core.bot import Red @@ -46,6 +47,43 @@ class IsItDown(commands.Cog): else: await ctx.maybe_send_embed(f"{url_to_check} is UP!") + @commands.admin() + @commands.command(alias=["iidmonitor"]) + async def isitdownmonitor(self, ctx: commands.Context, announce_channel: discord.TextChannel, + url_to_check): + """ + Add a continuous monitoring for a url and a channel to post updates in. + """ + try: + resp = await self._check_if_down(url_to_check) + except AssertionError: + await ctx.maybe_send_embed("Invalid URL provided. Make sure not to include `http://`") + return + + async with self.config.guild(ctx.guild).iids() as iids: + iids.append((announce_channel.id, url_to_check)) + + await ctx.maybe_send_embed( + f"{announce_channel.mention} will now receive alerts when the status of {url_to_check} changes") + + @commands.admin() + @commands.command(alias=["iidlist"]) + async def isitdownlist(self, ctx: commands.Context): + """ + List all checks that have been setup across all guilds + """ + if not await self.config.guild(ctx.guild).iids(): + await ctx.maybe_send_embed("No urls are configured to be checked") + + em = discord.Embed("") + + @commands.admin() + @commands.command(alias=["iidclear"]) + async def isitdownclear(self, ctx: commands.Context): + """ + Clear all checks that have been setup across all guilds + """ + async def _check_if_down(self, url_to_check): url = re.compile(r"https?://(www\.)?") url.sub("", url_to_check).strip().strip("/")