Added delete game command
This commit is contained in:
parent
c42f017241
commit
f395e3561b
|
|
@ -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()
|
||||
|
|
|
|||
10
SecretBot.py
10
SecretBot.py
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue