from os import times from telnetlib import NOP import time import disnake import datetime import botOptions class TimedAttack: def __init__(self,owner,cID,tID,duration,name): self.attackers = {} self.mID = 0 self.cID = cID self.tID = tID self.duration = duration self.name = name self.owner = owner self.mark = 0 self.longestAttack = 0 self.leadIn = 10 self.attacks = 0 self.sendt = 0 self.color = 0xffff00 def setMessageID(self,id): self.mID = id def setMark(self,time): self.color = 0x00ff00 self.mark = time def addAttack(self,owner,time,name): self.attacks += 1 if time > self.longestAttack: self.longestAttack = time if owner in self.attackers.keys(): #Attacker adding more attacks self.attackers[owner].append((time,name)) self.attackers[owner].sort(key=lambda y: y[0],reverse=True) else: attacklist = [] attacklist.append((time,name)) self.attackers[owner] = attacklist return def isOver(self): if self.mark == 0: return False if time.time() > self.longestAttack+self.mark+self.leadIn: return True return False def needsUpdate(self): check = 0 for attacks in self.attackers.values(): for attack in attacks: ttl = int(self.longestAttack - attack[0] + self.leadIn + self.mark) if int(time.time()) > ttl: check += 1 if check > self.sendt: return True return False def generateEmbed(self): if self.isOver(): self.color = 0xff0000 self.sendt = 0 #timeString = str(datetime.timedelta(seconds=self.duration)) attackString = "" if self.mark > 0: attackString = "\nLanding in: ".format(t=int(self.longestAttack + self.leadIn + self.mark)) embed = disnake.Embed(title="Timed attack on ID: {targetID} - Longest attack: {t} {cd}".format(cd = attackString, targetID = self.tID,owner = self.owner,t=str(datetime.timedelta(seconds=self.longestAttack)))\ ,description="To participate add your times using: \n {prefix}timed {tID}