import disnake from embed_factory import embeds import sb_emojis from datetime import datetime, timedelta from main import StronkBot def generate_embed(bot:StronkBot, guild_id:int, vm_entries:dict,house_data:dict,relations:dict): embed = embeds.base_embed() embed.title = f"VM tracker" embed.description = f"Players currently on VM\n Use to add more" vm_names = [entry["in_game_name"] for entry in vm_entries] if len(vm_entries) == 0: return embed entry_list = [] for entry in vm_entries: if entry.get("finished"): continue vm_num = '<:SecondVm:1020804212399018157>' if vm_names.count(entry["in_game_name"]) > 1 else '<:no_data:1020809240648101978>' house_emoji = '<:no_data:1020809240648101978>' if house_data.get(entry["in_game_name"]) is None else sb_emojis.houseEmojis.get(house_data.get(entry["in_game_name"]).get("house")) #Check relationships relation_state = None if house_data.get(entry["in_game_name"]) is not None: relation_state = relations.get(f"House {house_data.get(entry['in_game_name']).get('house')}") if relation_state is None: relation_state = relations.get(entry["in_game_name"]) relationship_emoji = '<:no_data:1020809240648101978>' if relation_state is None else sb_emojis.relationshipEmojis.get(relation_state) or '<:no_data:1020809240648101978>' entry_list.append( f"{relationship_emoji}{house_emoji}{vm_num}{entry['in_game_name']}:{disnake.utils.format_dt(entry.get('added')+ timedelta(days=15), style='R')}\n") temp_value = '' for vm_entry in entry_list: if len(temp_value)+len(vm_entry) > 1024: if len(embed)+len(temp_value) > 6000: print("embed is going to be too large lol") break embed.add_field(name='\u200b',value=temp_value,inline=False) temp_value = '' temp_value += vm_entry embed.add_field(name='\u200b',value=temp_value,inline=False) return embed def generate_components(): return [disnake.ui.Button(label="Remove VM", emoji="➖", custom_id="vm_tracker.spawn_remove")] def vm_advert(gID = None): embed = disnake.Embed(title="VM tracker",description = "Players currently on VM") embed.set_author(name='Storm Brigade',icon_url='https://i.imgur.com/Opk3fCq.png') if gID == None: return embed #Cleanup expired vm's exired_vms = helpers.sql_get('SELECT name,added FROM vm_entries WHERE gID = {gID} AND added < unixepoch("now","-15 days") AND finished IS NULL'.format(gID=gID)) vm_length = 1296000 if len(exired_vms) > 0: for vm in exired_vms: helpers.sql_set("UPDATE vm_entries SET finished = ? WHERE gID = ? AND name = ? AND added = ?",(vm[1]+vm_length,gID,vm[0],vm[1])) #print(exired_vms) from_date = int(datetime.datetime.fromisoformat("{YYYY}-12-15".format(YYYY=datetime.date.today().year-1)).timestamp()) to_date = int(datetime.datetime.fromisoformat("{YYYY}-01-15".format(YYYY=datetime.date.today().year+1)).timestamp()) #print("SELECT vm_entries.name,vm_entries.added,house.house FROM vm_entries INNER JOIN house ON LOWER(vm_entries.name) = LOWER(house.username) WHERE vm_entries.added BETWEEN {start} AND {end} AND vm_entries.finished IS NULL".format(start=from_date,end=to_date)) query_result = helpers.sql_get("SELECT vm_entries.name,vm_entries.added,house.house FROM vm_entries LEFT JOIN house ON LOWER(vm_entries.name) = LOWER(house.username) AND house.date > unixepoch('now','-6 hours') WHERE vm_entries.added BETWEEN {start} AND {end} AND vm_entries.finished IS NULL ORDER BY added ASC".format(start=from_date,end=to_date),True) house_json = json.loads(helpers.sql_get("SELECT relationships FROM guild WHERE gID = {gID}".format(gID = gID))[0][0]) if len(query_result) > 0: vm_entries = [] for entry in query_result: vm_num = '<:no_data:1020809240648101978>' vm_info = helpers.sql_get(f"SELECT added FROM vm_entries WHERE LOWER(name) = LOWER('{entry['name']}') AND added BETWEEN {from_date} AND {to_date}") if len(vm_info) > 1: vm_num = '<:SecondVm:1020804212399018157>' house_emoji = '<:no_data:1020809240648101978>' relationship_emoji = '<:no_data:1020809240648101978>' if str(entry['house']) in house_json.keys(): relationship_emoji = botOptions.relationshipEmojis[house_json[str(entry['house'])]] if entry['house'] != None: house_emoji = botOptions.houseEmojis[entry['house']] vm_entries.append( "{relationship}{house}{num}{name}:\n".format(relationship= relationship_emoji,num=vm_num,house=house_emoji,name=entry['name'],time_remaining=entry['added']+vm_length)) temp_value = '' for vm_entry in vm_entries: if len(temp_value)+len(vm_entry) > 1024: if len(embed)+len(temp_value) > 6000: print("embed is going to be too large lol") break embed.add_field(name='\u200b',value=temp_value,inline=False) temp_value = '' temp_value += vm_entry embed.add_field(name='\u200b',value=temp_value,inline=False) #print(len(embed)) return embed