diff --git a/funcs/games/werewolf.py b/funcs/games/werewolf.py index fd8d774..bf9b535 100644 --- a/funcs/games/werewolf.py +++ b/funcs/games/werewolf.py @@ -72,23 +72,44 @@ class Werewolf(): else: return "There's no game going on right now" + def allotRoles(self,channel): + game = self.bot.database["werewolf games"].find_one({"_id":channel}) + players = len(game["users"]) + async def werewolfLoop(self,ctx,round): logThis(f"Starting loop {round} of Werewolf game") channel = "#"+str(ctx.channel.id) if round == 0: - await asyncio.sleep(120) + await asyncio.sleep(90) game = self.bot.database["werewolf games"].find_one({"_id":channel}) - while len(game["users"].keys()) >= minimumPlayers and len(game["users"].keys()) < minimumPlayersWithAI: - user = {"role": None} - self.bot.database["werewolf games"].update_one({"_id":"#"+str(ctx.channel.id)}, - {"$set":{"users."+self.bot.generator.nameGen():user}}) - game = self.bot.database["werewolf games"].find_one({"_id":channel}) + if len(game["users"].keys()) >= minimumPlayers: + while len(game["users"].keys()) < minimumPlayersWithAI: + user = {"role": None} + self.bot.database["werewolf games"].update_one({"_id":"#"+str(ctx.channel.id)}, + {"$set":{"users."+self.bot.generator.nameGen()[:-1]+" (AI player)":user}}) + game = self.bot.database["werewolf games"].find_one({"_id":channel}) - self.bot.database["werewolf games"].update_one({"_id":channel},{"$inc":{"round":1}}) - await self.werewolfLoop(ctx,round+1) + if game["current message"] != None: + await ctx.channel.fetch_message(game["current message"]).delete() + users = "" + for x, user in enumerate(list(game["users"].keys())): + users += str(x+1)+") "+self.bot.funcs.getName(user)+"\n" + + em = discord.Embed(title="Game started with the following players:",description=users,colour=0x00FF00) + oldMessage = await ctx.send(embed=em) + + self.bot.database["werewolf games"].update_one({"_id":channel},{"$set":{"current message":oldMessage.id}}) + + self.allotRoles(channel) + + self.bot.database["werewolf games"].update_one({"_id":channel},{"$inc":{"round":1}}) + await self.werewolfLoop(ctx,round+1) + else: + ctx.send("Not enough players. Ending game.") + self.werewolfStop("#"+str(ctx.channel.id)) else: - await asyncio.sleep(60) + await asyncio.sleep(30) async def werewolfJoin(self,ctx): @@ -130,4 +151,5 @@ class Werewolf(): if len(list(game["users"].keys())) < minimumPlayers: users += f"You need at least {minimumPlayers} players to play werewolf." em = discord.Embed(title="Current Players",description=users,colour=0x00FF00) - await ctx.send(embed=em) + oldMessage = await ctx.send(embed=em) + self.bot.database["werewolf games"].update_one({"_id":"#"+str(ctx.channel.id)},{"$set":{"current message":oldMessage.id}})