Added delete game command
This commit is contained in:
parent
c42f017241
commit
f395e3561b
|
|
@ -31,6 +31,12 @@ class Game:
|
||||||
player = player.id
|
player = player.id
|
||||||
return self.config["player_info"][str(player)]
|
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):
|
async def start(self, guild: discord.Guild, dm_role: discord.Role, player_role: discord.Role):
|
||||||
if self.is_started():
|
if self.is_started():
|
||||||
raise ValueError("Game already 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["players"] = [member.id for member in player_role.members]
|
||||||
self.config["player_info"] = {str(player): {} for player in self.config["players"]}
|
self.config["player_info"] = {str(player): {} for player in self.config["players"]}
|
||||||
|
|
||||||
|
|
||||||
permissions = {
|
permissions = {
|
||||||
guild.default_role: discord.PermissionOverwrite(send_messages = False),
|
guild.default_role: discord.PermissionOverwrite(send_messages = False),
|
||||||
dm_role: discord.PermissionOverwrite(send_messages = True),
|
dm_role: discord.PermissionOverwrite(send_messages = True),
|
||||||
|
|
@ -81,3 +86,12 @@ class Game:
|
||||||
|
|
||||||
self.config["game_started"] = True
|
self.config["game_started"] = True
|
||||||
self.save_function()
|
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 ctx.guild.get_member(self.bot.user.id).add_roles(dm_role)
|
||||||
await game.start(ctx.guild, dm_role, player_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__':
|
if __name__ == '__main__':
|
||||||
argparser = argparse.ArgumentParser(description = "Secret Hitler helper bot", formatter_class = argparse.ArgumentDefaultsHelpFormatter)
|
argparser = argparse.ArgumentParser(description = "Secret Hitler helper bot", formatter_class = argparse.ArgumentDefaultsHelpFormatter)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue