Added delete game command

This commit is contained in:
Elnath 2021-06-08 01:54:36 +02:00
parent c42f017241
commit f395e3561b
2 changed files with 25 additions and 1 deletions

View File

@ -31,6 +31,12 @@ class Game:
player = player.id
return self.config["player_info"][str(player)]
def get_dm_role(self) -> int:
return self.config["dm_role"]
def get_game_category(self) -> int:
return self.config["category"]
async def start(self, guild: discord.Guild, dm_role: discord.Role, player_role: discord.Role):
if self.is_started():
raise ValueError("Game already started")
@ -40,7 +46,6 @@ class Game:
self.config["players"] = [member.id for member in player_role.members]
self.config["player_info"] = {str(player): {} for player in self.config["players"]}
permissions = {
guild.default_role: discord.PermissionOverwrite(send_messages = False),
dm_role: discord.PermissionOverwrite(send_messages = True),
@ -81,3 +86,12 @@ class Game:
self.config["game_started"] = True
self.save_function()
async def delete(self, guild: discord.Guild):
category = guild.get_channel(self.get_game_category())
for channel in category.channels:
await channel.delete()
await category.delete()
self.config.clear()
self.config.update(self.new_dict())
self.save_function()

View File

@ -98,6 +98,16 @@ class SecretBot(commands.Cog):
await ctx.guild.get_member(self.bot.user.id).add_roles(dm_role)
await game.start(ctx.guild, dm_role, player_role)
@commands.command("DeleteGame", help = "Delete a running game and all of its associated channels")
async def delete_game(self, ctx: commands.Context):
game = self.games_file[ctx.guild]
if game.is_started():
dm_role = discord.Object(game.get_dm_role()) # We need to get the role before the game is deleted
await game.delete(ctx.guild)
await ctx.guild.get_member(self.bot.user.id).remove_roles(dm_role)
else:
await ctx.reply(":x: Game is not running")
if __name__ == '__main__':
argparser = argparse.ArgumentParser(description = "Secret Hitler helper bot", formatter_class = argparse.ArgumentDefaultsHelpFormatter)