Added =delete

This commit is contained in:
Nemika
2021-03-08 10:25:57 +02:00
parent 695bfc3a3f
commit ea36e57272
5 changed files with 90 additions and 14 deletions

View File

@@ -13,7 +13,7 @@ class ErrorHandler(commands.Cog):
return await ctx.send(embed=embeds.Embeds(f"Missing `{error.param}` as a required argument.").error())
elif isinstance(error, commands.CommandNotFound):
return
elif isinstance(error, commands.CheckAnyFailure):
elif isinstance(error, commands.CheckFailure):
return await ctx.send(embed=embeds.Embeds("You are not allowed to do this.").error())
elif isinstance(error, commands.CommandOnCooldown):
seconds = error.retry_after

View File

@@ -85,25 +85,97 @@ class BumpSetup(commands.Cog):
'message',
timeout=120,
check=lambda message: message.author.id == ctx.author.id and len(message.content) and message.channel.id == ctx.channel.id
)).content, 16)
)).content.replace("#", ""), 16)
except asyncio.TimeoutError:
return await ctx.send(embed=Embeds("Setup canceled, timeout!").error())
except ValueError:
return await ctx.send(embed=Embeds("Setup canceled, invalid color!").error())
webhook = await listing.create_webhook(name=self.config['bot_name'], avatar=self.bot.avatar_url)
webhook = await listing.create_webhook(name=self.config['bot_name'])
Servers(ctx.guild.id).add(webhook=webhook.id, listing=listing, color=color, description=description)
Servers(ctx.guild.id).add(webhook=webhook.id, listing=listing.id, color=color, description=description)
await ctx.send("Setup complete! Server added to DB and the webhook was created.")
@commands.guild_only()
@commands.has_permissions(manage_guild=True)
@commands.check(lambda ctx: ctx.guild not in setting_up)
@commands.command()
async def delete(self, ctx):
if not Servers(ctx.guild.id).get():
return await ctx.send(embed=Embeds("The server does not have any data in the Database!").error())
confirmation_message = await ctx.send(embed=discord.Embed(
title="⚠️ Confirmation Required ⚠️",
description=f"**{ctx.author}**, you're about to delete your server from the database! This will remove all data. **Are you sure?**",
color=discord.Color.orange()
))
emojis = ["", ""]
for emoji in emojis: await confirmation_message.add_reaction(emoji)
try:
reaction, user = await self.bot.wait_for(
'reaction_add',
timeout=120,
check=lambda r, u: r.emoji in emojis and r.message.id == confirmation_message.id and u.id == ctx.author.id
)
except asyncio.TimeoutError:
await ctx.send(embed=Embeds("Server deletion canceled due to timeout!").error())
return await confirmation_message.delete()
if reaction.emoji == emojis[1]:
return await ctx.send(embed=Embeds("Server deletion canceled.").error())
db_entry = Servers(ctx.guild.id)
cache_data = db_entry.get()
db_entry.delete()
setting_up.remove(ctx.guild)
del_message = await ctx.send(embed=discord.Embed(
title="🗑️ Server Deleted",
description="The server was deleted from the database! You also can react below within one minute to restore it.",
color=discord.Color.green()
))
await del_message.add_reaction("♻️")
try:
await self.bot.wait_for(
'reaction_add',
timeout=60,
check=lambda r,u: r.emoji == "♻️" and r.message.id == del_message.id and u.id == ctx.author.id
)
except asyncio.TimeoutError:
return await del_message.remove_reaction("♻️", self.bot.user)
if Servers(ctx.guild.id).get():
return await ctx.send(embed=discord.Embed(
title="❎ Restore Failed",
description="The server seems to have been setup from the beginning, therefore restore is not possible.",
color=discord.Color.red()
))
Servers(ctx.guild.id).add(**cache_data)
return await ctx.send(embed=discord.Embed(
title="♻️ Server Restored",
description="Your server was restored, all data are safe and sound.",
color=discord.Color.green()
))
@setup.before_invoke
@delete.before_invoke
async def add_to_setting_up(self, ctx):
setting_up.append(ctx.guild)
@setup.after_invoke
@setup.error
@delete.after_invoke
async def remove_from_setting_up(self, ctx):
try:
setting_up.remove(ctx.guild)