def getAllStatus(type: StatusType): query = RPGStatus.select().where(RPGStatus.type == type.value) result = [] if query.exists(): for status in query.iterator(): result.append(status) return result
def reviveComaStatus(reviveMemberCount: int = 5): query = RPGStatus.select().where( RPGStatus.type == StatusType.COMA.value, ) result = [] if query.exists(): count = RPGStatus.select().where( RPGStatus.type == StatusType.COMA.value, ).count() if count >= reviveMemberCount: status: RPGStatus for status in query.iterator(): result.append( StatusUpdate(status.member_id, status.guild_id, status.type)) StatusUtil._cleanUpStatus(status) status.delete_instance() return result
def removeAlertStatus(member_id: int): query = RPGStatus.select().where( RPGStatus.member_id == member_id, RPGStatus.type == StatusType.ALERTED.value) if query.exists(): status: RPGStatus for status in query.iterator(): status.delete_instance()
def getStatus(member_id: int, guild_id: int, type: StatusType): query = RPGStatus.select().where( RPGStatus.member_id == member_id, RPGStatus.guild_id == guild_id, RPGStatus.type == type.value, ) if query.exists(): return query.get() return None
def applyExpiredStatus(): now = datetime.datetime.now() query = RPGStatus.select().where( RPGStatus.expire_time < now, RPGStatus.type == StatusType.REST.value) result = [] if query.exists(): status: RPGStatus for status in query.iterator(): result.append( StatusUpdate(status.member_id, status.guild_id, status.type)) StatusUtil._cleanUpStatus(status) status.delete_instance() return result
def createOrUpdateAlertStatus(member_id: int, guild_id: int, expire_seconds: int): buff = Buff(BuffType.NONE, 0, -1) query = RPGStatus.select().where( RPGStatus.member_id == member_id, RPGStatus.guild_id == guild_id, RPGStatus.type == StatusType.ALERTED.value) new_time = datetime.datetime.now() + datetime.timedelta( seconds=expire_seconds) if query.exists(): status: RPGStatus = query.get() status.expire_time = new_time status.save() else: RPGStatus.create(member_id=member_id, guild_id=guild_id, type=StatusType.ALERTED.value, buff=buff, expire_time=new_time)
def removeAllStatus(member_id: int): query = RPGStatus.select().where(RPGStatus.member_id == member_id) if query.exists(): status: RPGStatus for status in query.iterator(): status.delete_instance()