public override void run() { L2Player player = Client.CurrentPlayer; if (player.Clan == null) { player.sendActionFailed(); return; } L2Clan clan = player.Clan; ClanMember m = null; foreach (ClanMember cm in clan.getClanMembers()) { if (cm.Name.Equals(_player)) { m = cm; break; } } if (m == null) { player.sendActionFailed(); return; } player.sendPacket(new PledgeReceiveMemberInfo(m)); }
public override void Parse(byte[] buffer) { Reader reader = new Reader(new MemoryStream(buffer)); reader.ReadByte(); // Id ClanId = reader.ReadInt32(); ClanName = reader.ReadString(Encoding.Unicode); LeaderName = reader.ReadString(Encoding.Unicode); ClanCrestId = reader.ReadInt32(); ClanLevel = reader.ReadInt32(); HasCastle = reader.ReadInt32() != 0; HasClanhall = reader.ReadInt32() != 0; reader.ReadInt32(); CharLevel = reader.ReadInt32(); reader.ReadInt32(); reader.ReadInt32(); AllyId = reader.ReadInt32(); AllyName = reader.ReadString(Encoding.Unicode); AllyCrestId = reader.ReadInt32(); InWar = reader.ReadInt32() != 0; int count = reader.ReadInt32(); Members = new ClanMember[count]; for (int i = 0; i < count; i++) { ClanMember Member = new ClanMember(); Member.Name = reader.ReadString(Encoding.Unicode); Member.Level = reader.ReadInt32(); Member.ClassId = reader.ReadInt32(); reader.ReadInt32(); reader.ReadInt32(); Member.ObjectId = reader.ReadInt32(); Members[i] = Member; } }
public static void OnClanCreated(ClanMember member, string clanname) { if (ClanCreated == null) return; ClanCreated(new ClanCreatedEventArgs() { Member = member, ClanName = clanname }); }
public static void OnClanLeave(ClanMember member, Clan clan) { if (ClanLeave == null) return; ClanLeave(new ClanLeaveEventArgs() { Member = member, Clan = clan }); }
public static void OnClanLogin(ClanMember member, Clan clan) { if (ClanLogin == null) return; ClanLogin(new ClanLoginEventArgs() { Member = member, Clan = clan }); }
private List <ClanMember> GetClanStatistics(ClashRoyaleApi clashRoyaleApi) { using (var entities = new ClanManagerEntities()) { var dbMembers = entities.Member; List <ClanWar> latestWars = clashRoyaleApi.GetLatestClanWars(); var lastInfoPlayers = clashRoyaleApi.GetClanInfo(); List <ClanMember> members = new List <ClanMember>(); foreach (var player in lastInfoPlayers.members) { var clanMember = new ClanMember { Name = player.name, Tag = player.tag }; members.Add(clanMember); var dbMember = dbMembers.FirstOrDefault(s => s.Tag == player.tag); if (dbMember != null) { clanMember.JoinDate = dbMember.JoinDate; } else { clanMember.JoinDate = DateTime.Now; } } if (latestWars != null) { foreach (ClanWar war in latestWars) { foreach (var participant in war.participants) { var clanMember = members.FirstOrDefault(s => s.Tag == participant.tag); if (clanMember != null) { clanMember.ClanWars += participant.battlesPlayed; clanMember.ClanWins += participant.wins; clanMember.Percent = Math.Round((((double)(clanMember.ClanWins * 100)) / clanMember.ClanWars), 2); } } } } List <ClanMember> loyalMembers = members.Where(s => s.ClanWars > 5).ToList(); var newMembers = members.Where(s => s.ClanWars <= 5).ToList(); loyalMembers = loyalMembers.OrderByDescending(p => p.Percent).ToList(); newMembers = newMembers.OrderByDescending(p => p.Percent).ToList(); loyalMembers.AddRange(newMembers); return(loyalMembers); } }
public Donation(ClanMember clanMember, int oldValue, int newValue) { ClanMember = clanMember; OldValue = oldValue; NewValue = newValue; }
private static string DonationRatio(ClanMember member) { if (member.DonationsReceived == 0) { return(string.Empty); } else { return($"{member.Donations / (float)member.DonationsReceived:0.00}"); } }
private static void FromMySqlDataReader(ClanMember member, DbDataReader reader) { member.Id = (long)reader["user_id"]; member.Role = (ClanMemberRole)reader["role"]; member.TroopsDonated = (int)reader["troops_donated"]; member.TroopsReceived = (int)reader["troops_received"]; member.Rank = (int)reader["rank"]; member.PreviousRank = (int)reader["rank_prev"]; member.NewMember = (bool)reader["new_member"]; member.WarCooldown = (int)reader["war_cooldown"]; member.WarPreference = (int)reader["war_preference"]; }
public async Task <CharacterInformation> ForEachPlog_GetInformation(ClanMember plog) { var start = DateTime.UtcNow; var tasks = new Task[] { _bladeAndSoulService.GetBladeAndSoulCharacter(plog.Name), _bladeAndSoulService.GetBladeAndSoulCharacterAbilities(plog.Name), _bladeAndSoulService.GetBladeAndSoulItemsAsync(plog.Name) }; await Task.WhenAll(tasks); var character = ((Task <BladeAndSoulCharacter>)tasks[0]).Result; var stats = ((Task <AbilitiesResult>)tasks[1]).Result; var items = ((Task <BladeAndSoulItems>)tasks[2]).Result; if (character == null || stats == null || items == null) { // Try again later? return(null); } var isInClan = "Ploggystyle".Equals(character.Clan, StringComparison.OrdinalIgnoreCase); if (!isInClan && plog.Active) { await _webhookService.ExecuteInactivePlogWebhook($"{plog.Name} ({plog.RealName})"); plog.Active = false; return(new CharacterInformation { Plog = plog }); } if (!plog.Active) { // Don't process return(null); } var end = DateTime.UtcNow; await _loggingService.LogAsync($"Processing time for {plog.Name}: {(end - start).TotalMilliseconds}"); return(new CharacterInformation { Plog = plog, Character = character, AbilitiesResult = stats, Items = items }); }
private async Task ProcessAdd(List <string> args) { if (args.Count == 1) { var name = args[0]; var plog = await _plogDbContext.Plogs.Where(p => p.Name.ToLower() == name.ToLower()).FirstOrDefaultAsync(); if (plog == null) { var character = await _bladeAndSoulService.GetBladeAndSoulCharacter(name); if (character == null || character.Clan.ToLower() != "ploggystyle") { _response = $"{name} is not in Ploggystyle."; } else { plog = new ClanMember { RealName = character.AccountName, Name = name, Active = true, Class = character.Class, Created = DateTime.UtcNow, ImageUrl = character.ProfileImageUrl }; _plogDbContext.Add(plog); await _plogDbContext.SaveChangesAsync(); _response = $"{name} has been added to the clan."; } } else { _response = "This plog already exists!"; if (plog.DiscordId.HasValue && plog.DiscordId.Value != _event.Message.Author.Id) { _response += $" <@{plog.DiscordId}> has claimed this character."; } } } else { _response = "Incorrect command format: !plog add [name]"; } await _messageService.SendMessage(_event.Message.ChannelId, new OutgoingMessage { Content = _response }); }
private void AddRows(Dictionary <string, ClanMember> Members) { table.Rows.Clear(); foreach (KeyValuePair <string, ClanMember> mem in Members) { ClanMember member = mem.Value; DataRow row = table.NewRow(); row[0] = member.Name; row[1] = member.Role; row[2] = Commons.ConvertDateToLocalFormat(Commons.ConvertToDate(member.MemberSince), Properties.Settings.Default.Locale); table.Rows.Add(row); } members.Sort(members.Columns[0], ListSortDirection.Ascending); }
private void HandleClanMemberRemoved(ParseData pd) { DataReader dr = new DataReader(pd.Data); string memberName = dr.ReadCString(); ClanMember member = m_clanList[memberName]; m_clanList.Remove(memberName); ClanMemberStatusEventArgs args = new ClanMemberStatusEventArgs(member) { EventData = pd }; OnClanMemberRemoved(args); }
/// <summary> /// /// </summary> /// <param name="line"></param> public void DecompileMembers(string line) { Members = new List <ClanMember>(); string[] split = line.Split(","[0]); for (int i = 0; i < split.Length; i++) { if (string.IsNullOrEmpty(split[i])) { continue; } string[] info = split[i].Split("-"[0]); ClanMember member = new ClanMember(); member.ID = int.Parse(info[0]); member.Role = (ClanMemberRole)int.Parse(info[1]); Members.Add(member); } }
public async Task youtube(CommandContext ctx, string YoutubeURL) { DiscordEmbedBuilder Embed = new DiscordEmbedBuilder(); ClanMember clanMember = new ClanMember(); IMongoDatabase Local = Program.Database.GetDatabase("local"); IMongoCollection <Player> Player = Local.GetCollection <Player>("players"); IMongoCollection <ClanMember> Membros = Local.GetCollection <ClanMember>("membros"); IAsyncCursor <Player> query = await Player.FindAsync(x => x.DiscordID == ctx.Member.Id); List <Player> resultado = query.ToList(); if (resultado.Count == 0) { Player.InsertOne(new Player { DiscordID = ctx.Member.Id, CurrentXP = 0, CurrentLevel = 0 }); } else { Player player = resultado[0]; IAsyncCursor <ClanMember> query2 = await Membros.FindAsync(x => x.PlayerID == player._id); List <ClanMember> resultado2 = query2.ToList(); if (resultado2.Count > 0) { clanMember = resultado2[0]; clanMember.YoutubeID = YoutubeURL; Membros.UpdateOne(Builders <ClanMember> .Filter.Eq("PlayerID", player._id), Builders <ClanMember> .Update.Set("YoutubeID", clanMember.YoutubeID)); Embed .WithAuthor("Link do youtube alterado com sucesso!") .WithColor(Colors.SagiriBlue); await ctx.RespondAsync(embed : Embed); await ctx.Message.DeleteAsync(); } else { Embed .WithAuthor("Você não possui um cadastro no sistema, peça um `protagonista de light novel` para te cadastrar!") .WithColor(Colors.SagiriPink); await ctx.RespondAsync(embed : Embed); } } }
private static MySqlCommand ToMySqlCommand(ClanMember member, ClanSave clan) { var command = new MySqlCommand(MySqlDbManagerQueries.InsertUpdateClanMember); command.Parameters.AddWithValue("UserId", member.Id); command.Parameters.AddWithValue("ClanId", clan.ClanId); command.Parameters.AddWithValue("Role", (int)member.Role); command.Parameters.AddWithValue("TroopsDonated", member.TroopsDonated); command.Parameters.AddWithValue("TroopsReceived", member.TroopsReceived); command.Parameters.AddWithValue("Rank", member.Rank); command.Parameters.AddWithValue("PreviousRank", member.PreviousRank); command.Parameters.AddWithValue("NewMember", member.NewMember); command.Parameters.AddWithValue("WarCooldown", member.WarCooldown); command.Parameters.AddWithValue("WarPreference", member.WarPreference); return(command); }
private void HandleClanMemberRankChange(ParseData pd) { DataReader dr = new DataReader(pd.Data); ClanRank old = (ClanRank)dr.ReadByte(); ClanRank newRank = (ClanRank)dr.ReadByte(); string memberName = dr.ReadCString(); ClanMember member = null; if (m_clanList.ContainsKey(memberName)) { member = m_clanList[memberName]; } ClanMemberRankChangeEventArgs args = new ClanMemberRankChangeEventArgs(old, newRank, member); args.EventData = pd; OnClanMemberRankChanged(args); }
public async Task WhoIs(CommandContext ctx, DiscordMember member) { DiscordEmbedBuilder Embed = new DiscordEmbedBuilder(); ClanMember m = new ClanMember(); IMongoDatabase Local = Program.Database.GetDatabase("local"); IMongoCollection <ClanMember> Membros = Local.GetCollection <ClanMember>("membros"); IMongoCollection <Player> Player = Local.GetCollection <Player>("players"); IAsyncCursor <Player> query = await Player.FindAsync(x => x.DiscordID == member.Id); List <Player> resultado = query.ToList(); if (resultado.Count == 0) { Player.InsertOne(new Player { DiscordID = member.Id, CurrentXP = 0, CurrentLevel = 0, _id = new ObjectId() }); } else { Player player = resultado[0]; IAsyncCursor <ClanMember> query2 = await Membros.FindAsync(x => x.PlayerID == player._id); List <ClanMember> resultado2 = query2.ToList(); if (resultado2.Count > 0) { m = resultado2[0]; Embed .WithDescription($"Informações do membro {member.Username}\n\n\n[<:steam:570974606354284584>]({m.SteamID}) | [<:youtube:570974841763528706>]({m.YoutubeID})") .WithColor(Colors.SagiriBlue) .WithAuthor($"Whois [GTdL - {member.Username}]"); await ctx.RespondAsync(embed : Embed); } else { Embed .WithAuthor("Este usuário não é um membro oficial do clã") .WithColor(Colors.SagiriPink); await ctx.RespondAsync(embed : Embed); } } }
public async Task addMember(CommandContext ctx, DiscordMember m) { DiscordEmbedBuilder Embed = new DiscordEmbedBuilder(); ClanMember clanMember = new ClanMember(); IMongoDatabase Local = Program.Database.GetDatabase("local"); IMongoCollection <ClanMember> Membros = Local.GetCollection <ClanMember>("membros"); IMongoCollection <Player> Player = Local.GetCollection <Player>("players"); IAsyncCursor <Player> query = await Player.FindAsync(x => x.DiscordID == m.Id); List <Player> resultado = query.ToList(); if (resultado.Count == 0) { Player.InsertOne(new Player { DiscordID = m.Id, CurrentXP = 0, CurrentLevel = 0, _id = new ObjectId() }); } else { Player player = resultado[0]; IAsyncCursor <ClanMember> query2 = await Membros.FindAsync(x => x.PlayerID == player._id); List <ClanMember> resultado2 = query2.ToList(); if (resultado2.Count > 0) { Embed .WithAuthor($"O membro [GTdL - {m.Username}] já foi cadastrado.") .WithColor(Colors.SagiriPink); await ctx.RespondAsync(embed : Embed); } else { clanMember.PlayerID = player._id; Membros.InsertOne(clanMember); Embed .WithAuthor($"O membro [GTdL - {m.Username}] foi cadastrado com sucesso!") .WithColor(Colors.SagiriBlue); await ctx.RespondAsync(embed : Embed); } } }
private void HandleClanMemberStatusChanged(ParseData pd) { DataReader dr = new DataReader(pd.Data); string userName = dr.ReadCString(); if (m_clanList.ContainsKey(userName)) { ClanMember member = m_clanList[userName]; ClanRank rank = (ClanRank)dr.ReadByte(); ClanMemberStatus status = (ClanMemberStatus)dr.ReadByte(); string location = dr.ReadCString(); member.Rank = rank; member.CurrentStatus = status; member.Location = location; ClanMemberStatusEventArgs args = new ClanMemberStatusEventArgs(member); args.EventData = pd; OnClanMemberStatusChanged(args); } }
public async Task CreateClan(string name, ulong ownerId) => await _soraTransactor.DoInTransactionAsync(async context => { // Check if user is in clan already if (await context.ClanMembers .Where(x => x.UserId == ownerId) .CountAsync() > 0) { return; } // Check if clan with this name already exists, abort if it does if (await context.Clans.Where(x => x.Name == name) .CountAsync() > 0) { return; } // Now get or create user we attach to the clan var _ = await context.Users.GetOrCreateUserNoSaveAsync(ownerId); var clan = new Clan() { Name = name, OwnerId = ownerId, Created = DateTime.UtcNow, Level = 0 }; context.Clans.Add(clan); await context.SaveChangesAsync(); // Create clan member for the owner var member = new ClanMember() { ClanId = clan.Id, UserId = ownerId }; context.ClanMembers.Add(member); await context.SaveChangesAsync(); });
public override void RunImpl() { L2Player player = _client.CurrentPlayer; if (player.Clan == null) { player.SendActionFailed(); return; } L2Clan clan = player.Clan; ClanMember m = clan.GetClanMembers().FirstOrDefault(cm => cm.Name.Equals(_player)); if (m == null) { player.SendActionFailed(); return; } player.SendPacket(new PledgeReceiveMemberInfo(m)); }
public void DrawItem(CustomItemDrawData e) { e.DrawBackground(); if ((e.State & DrawItemState.Focus) == System.Windows.Forms.DrawItemState.Focus) { e.DrawFocusRectangle(); } ClanMember clanMember = e.Item as ClanMember; Color textColor = e.ForeColor; if (clanMember.CurrentStatus == ClanMemberStatus.Offline) { if ((e.State & DrawItemState.Selected) == System.Windows.Forms.DrawItemState.Selected) { textColor = Color.Black; } else { textColor = Color.SlateGray; } } using (SolidBrush textBrush = new SolidBrush(textColor)) using (StringFormat nameFormat = new StringFormat() { Trimming = StringTrimming.EllipsisCharacter }) { PointF iconPosition = new PointF((float)e.Bounds.Location.X + 1.0f, (float)e.Bounds.Location.Y + 1.0f); e.Graphics.DrawImage(m_provider.GetImageFor(clanMember.Rank), (PointF)iconPosition); SizeF nameSize = e.Graphics.MeasureString(clanMember.Username, e.Font); RectangleF nameArea = new RectangleF((float)e.Bounds.X + (float)m_provider.IconSize.Width + 1.0f + 4.0f, (float)e.Bounds.Y + (((float)e.Bounds.Height - nameSize.Height) / 2.0f), (float)e.Bounds.Width - (float)m_provider.IconSize.Width - 2.0f - 4.0f, (float)nameSize.Height); e.Graphics.DrawString(clanMember.Username, e.Font, textBrush, nameArea, nameFormat); } }
/// <summary> /// Initializes a new instance of the <see cref="ClanMemberMessageComponent"/> class with /// the specified <see cref="ClanMember"/>. /// </summary> /// <param name="member"><see cref="ClanMember"/> from which to initialize this <see cref="ClanMemberMessageComponent"/>.</param> /// <exception cref="ArgumentNullException"><paramref name="member"/> is null.</exception> public ClanMemberMessageComponent(ClanMember member) { if (member == null) { throw new ArgumentNullException(nameof(member)); } Id = member.Id; Name = member.Name; Role = member.Role; Level = member.ExpLevels; LeagueLevel = member.League; Trophies = member.Trophies; TroopsDonated = member.TroopsDonated; TroopsReceived = member.TroopsReceived; Rank = member.Rank; PreviousRank = member.PreviousRank; NewMember = member.NewMember; WarCoolDown = member.WarCooldown; WarPreference = member.WarPreference; Id2 = member.Id; }
private void HandleClanMemberList(ParseData pd) { DataReader dr = new DataReader(pd.Data); dr.Seek(4); byte memCount = dr.ReadByte(); for (int i = 0; i < memCount; i++) { string userName = dr.ReadCString(); ClanRank rank = (ClanRank)dr.ReadByte(); ClanMemberStatus status = (ClanMemberStatus)dr.ReadByte(); string location = dr.ReadCString(); m_clanList.Add(userName, new ClanMember(userName, rank, status, location)); } ClanMember[] members = new ClanMember[m_clanList.Count]; m_clanList.Values.CopyTo(members, 0); ClanMemberListEventArgs args = new ClanMemberListEventArgs(members); args.EventData = pd; OnClanMemberListReceived(args); }
public PledgeReceiveMemberInfo(ClanMember cm) { _member = cm; }
private async Task HandleCreateAlliance(IClient client, Message message, CancellationToken cancellationToken) { var caMessage = (CreateAllianceMessage)message; var level = client.Session.Level; // Look up what it is gonna cost and how its gonna cost // from the /logic/globals.csv table. var globals = Server.Assets.DataTables.GetTable <GlobalData>(); var resource = globals.Rows["ALLIANCE_CREATE_RESOURCE"][0].TextValue; var cost = globals.Rows["ALLIANCE_CREATE_COST"][0].NumberValue; level.Avatar.UseResource(resource, cost); // Request the db for a new clan. var clanSave = await Server.Db.NewClanAsync(cancellationToken); var clan = clanSave.ToClan(); // Set the values as specified in the message. clan.Name = caMessage.Name; clan.Description = caMessage.Description; clan.Badge = caMessage.Badge; clan.InviteType = caMessage.InviteType; clan.RequiredTrophies = caMessage.RequiredTrophy; clan.WarFrequency = caMessage.WarFrequency; clan.Location = caMessage.Origin; clan.RequiredTrophies = caMessage.RequiredTrophy; // Add client that created the clan as a member of the clan // with role as the leader. var member = new ClanMember(client.Session.Level) { Role = ClanMemberRole.Leader, Rank = 1, PreviousRank = 1, }; clan.Members.Add(member); // Set the clan of the creator to the created clan. level.Avatar.Alliance = clan; // Save the level which contains a ref to the ID of the clan. var levelSave = client.Save; await Server.Db.SaveLevelAsync(levelSave, cancellationToken); clanSave.FromClan(clan); // Save the clan to the db. await Server.Db.SaveClanAsync(clanSave, cancellationToken); // Let the client know he was added to the clan. var ascCommand1 = new AvailableServerCommandMessage { Command = new AllianceJoinedCommand { ClanId = clan.Id, Name = clan.Name, Badge = clan.Badge, ExpLevels = clan.ExpLevels, Tick = -1, } }; // Let the client know he is the leader of the clan. var ascCommand2 = new AvailableServerCommandMessage { Command = new AllianceRoleUpdatedCommand { ClanId = clan.Id, Role = member.Role, Tick = -1 } }; client.SendMessage(ascCommand1); client.SendMessage(ascCommand2); }
/// <summary> /// 读取部落列表 /// </summary> private static void LoadClanList() { bool l_bIsReturn = false; Session l_Session = new Session(BaseDatabase.Domain); l_Session.BeginTransaction(); { do { Query l_QueryListClan = new Query(l_Session, "Select ListClan instances"); QueryResult l_ListClanResult = l_QueryListClan.Execute(); if (l_ListClanResult == null) { Debug.WriteLine("Program.LoadClanList(...) - l_ListClanResult == null error!"); l_bIsReturn = true; break; } for (int iIndex = 0; iIndex < l_ListClanResult.Count; iIndex++) { ListClan l_ListClan = l_ListClanResult[iIndex] as ListClan; if (l_ListClan == null) { Debug.WriteLine("Program.LoadClanList(...) - l_ListClan == null error!"); l_bIsReturn = true; break; } Clan l_Clan = new Clan(); l_Clan.ClanGuid = l_ListClan.ClanGuid; l_Clan.ClanName = l_ListClan.ClanName; l_Clan.Logo = l_ListClan.Logo; l_Clan.Back = l_ListClan.Back; l_Clan.Grade = l_ListClan.Grade; l_Clan.CP = l_ListClan.CP; l_Clan.Slogan = l_ListClan.Slogan; l_Clan.News = l_ListClan.News; ////////////////////////////////////////////////////////////////////////// // 获取部落的成员信息 Query l_QueryCharacters = new Query(l_Session, "Select Characters instances where {ClanGuid}=@ClanGuid"); l_QueryCharacters.Parameters.Add("@ClanGuid", l_ListClan.ClanGuid); QueryResult l_CharactersResult = l_QueryCharacters.Execute(); if (l_CharactersResult == null) { Debug.WriteLine("Program.LoadClanList(...) - l_CharactersResult == null error!"); l_bIsReturn = true; break; } for (int iIndex2 = 0; iIndex2 < l_CharactersResult.Count; iIndex2++) { Characters l_Characters = l_CharactersResult[iIndex2] as Characters; if (l_Characters == null) { Debug.WriteLine("Program.LoadClanList(...) - l_Characters == null error!"); l_bIsReturn = true; break; } ClanMember l_ClanMember = new ClanMember(); l_ClanMember.CharacterName = l_Characters.CharacterName; l_ClanMember.ClanGuid = l_Characters.ClanGuid; l_ClanMember.ClanRank = l_Characters.ClanRank; l_Clan.AddClanMemberList(l_ClanMember); } if (l_bIsReturn == true) { break; } Program.AddClanList(l_Clan); } } while (false); } l_Session.Commit(); if (l_bIsReturn == true) { throw new Exception("读取部落列表 错误!"); } LOGs.WriteLine(LogMessageType.MSG_INFO, "信息: 部落列表读取完成!"); }
public async Task Cor(CommandContext ctx) { IMongoDatabase Local = Program.Database.GetDatabase("local"); DiscordEmbedBuilder Embed = new DiscordEmbedBuilder(); IMongoCollection <ClanMember> Member = Local.GetCollection <ClanMember>("membros"); IMongoCollection <Player> Player = Local.GetCollection <Player>("players"); IAsyncCursor <Player> query = await Player.FindAsync(x => x.DiscordID == ctx.Member.Id); List <Player> responce = query.ToList(); if (responce.Count == 0) { Player.InsertOne(new Player { DiscordID = ctx.Member.Id, CurrentXP = 0, CurrentLevel = 0, _id = new ObjectId() }); } else { Player player = responce[0]; IAsyncCursor <ClanMember> query2 = await Member.FindAsync(x => x.PlayerID == player._id); List <ClanMember> responce2 = query2.ToList(); if (responce2.Count == 0) { Embed .WithDescription("Só membros do clã possuem acesso aos perfis.") .WithAuthor("Você não é um membro do clã!") .WithColor(Colors.SagiriPink); await ctx.RespondAsync(embed : Embed); } else { ClanMember membro = responce2[0]; IMongoCollection <Profile> Profile = Local.GetCollection <Profile>("profile"); IAsyncCursor <Profile> query3 = await Profile.FindAsync(x => x.ClanMemberID == membro._id); List <Profile> responce3 = query3.ToList(); if (responce3.Count == 0) { Profile perfil = new Profile(); perfil.ClanMemberID = membro._id; perfil._id = new ObjectId(); Profile.InsertOne(perfil); Embed .WithDescription("eu criei. Digite o comando novamente para salvar.") .WithAuthor("Você não tinha um perfil, mas ...") .WithColor(Colors.SagiriGray); await ctx.RespondAsync(embed : Embed); } else { Profile p = responce3[0]; Embed .WithDescription("Digite a letra referente a sua cor:\n\n**[A]**marelo\n**[V]**erde\nA**[z]**ul\n**[L]**aranja\n**[R]**oxo") .WithAuthor("Escolha a cor") .WithColor(Colors.SagiriGray); DiscordMessage botmsg = await ctx.RespondAsync(embed : Embed); DiscordMessage msg = await ctx.GetResponce(Program.Interactivity); switch (msg.Content.ToLower()) { case "a": p.CsColor = "A"; break; case "v": p.CsColor = "V"; break; case "z": p.CsColor = "Z"; break; case "l": p.CsColor = "L"; break; case "r": p.CsColor = "R"; break; default: p.CsColor = ""; Embed .WithDescription("Tenha certeza que digitou apenas a letra em destaque.") .WithAuthor("Cor Inválida") .WithColor(Colors.SagiriPink); await botmsg.ModifyAsync(embed : Embed.Build()); break; } if (!String.IsNullOrWhiteSpace(p.CsColor)) { Profile.UpdateOne(Builders <Profile> .Filter.Eq("ClanMemberID", membro._id), Builders <Profile> .Update.Set("CsColor", p.CsColor)); Embed .WithDescription("") .WithAuthor("Cor atualizada.") .WithColor(Colors.SagiriBlue); await botmsg.ModifyAsync(embed : Embed.Build()); } } } } }
public async Task Imagem(CommandContext ctx, string link) { IMongoDatabase Local = Program.Database.GetDatabase("local"); IMongoCollection <Player> Player = Local.GetCollection <Player>("players"); IMongoCollection <ClanMember> Member = Local.GetCollection <ClanMember>("membros"); IAsyncCursor <Player> query = await Player.FindAsync(x => x.DiscordID == ctx.Member.Id); List <Player> responce = query.ToList(); DiscordEmbedBuilder Embed = new DiscordEmbedBuilder(); if (responce.Count == 0) { Player.InsertOne(new Player { DiscordID = ctx.Member.Id, CurrentXP = 0, CurrentLevel = 0, _id = new ObjectId() }); } else { Player p = responce[0]; IAsyncCursor <ClanMember> query2 = await Member.FindAsync(x => x.PlayerID == p._id); List <ClanMember> responce2 = query2.ToList(); if (responce2.Count == 0) { Embed .WithDescription("Só membros do clã possuem acesso ao perfil.") .WithAuthor("Você não é um membro do clã!") .WithColor(Colors.SagiriPink); await ctx.RespondAsync(embed : Embed); } else { ClanMember member = responce2[0]; IMongoCollection <Profile> Profile = Local.GetCollection <Profile>("profile"); IAsyncCursor <Profile> query3 = await Profile.FindAsync(x => x.ClanMemberID == member._id); List <Profile> responce3 = query3.ToList(); if (responce3.Count == 0) { Embed .WithDescription("eu criei.\n\nEdite seu perfil novamente para salvar.") .WithAuthor("Você não tinha um perfil, mas ...") .WithColor(Colors.SagiriGray); await ctx.RespondAsync(embed : Embed); } else { Profile perfil = responce3[0]; string b64image = ""; using (WebClient wc = new WebClient()) { wc.DownloadFile(link, "_temp.png"); byte[] byteStream = File.ReadAllBytes($"{Directory.GetCurrentDirectory()}/_temp.png"); b64image = Convert.ToBase64String(byteStream); File.Delete($"{Directory.GetCurrentDirectory()}/_temp.png"); } Profile.UpdateOne(Builders <Profile> .Filter.Eq("ClanMemberID", member._id), Builders <Profile> .Update.Set("CustomImage", b64image)); Embed .WithAuthor("Imagem atualizada") .WithColor(Colors.SagiriBlue); await ctx.RespondAsync(embed : Embed); } } } }
private async Task ProcessAlt(List <string> args) { var name = args[0]; var main = await _plogDbContext.Plogs.Where(p => p.DiscordId == _event.Message.Author.Id).FirstOrDefaultAsync(); var alt = await _plogDbContext.Plogs.Where(p => p.Name.ToLower() == name.ToLower()).FirstOrDefaultAsync(); if (main == null) { _response = $"You need to set up your main first."; } else if (alt == null) { var character = await _bladeAndSoulService.GetBladeAndSoulCharacter(name); if (character == null || character.Clan.ToLower() != "ploggystyle") { _response = $"Your alt is not in Ploggystyle."; } else { alt = new ClanMember { RealName = character.AccountName, Name = name, Active = true, DiscordId = _event.Message.Author.Id, Class = character.Class, Created = DateTime.UtcNow, Main = main, ImageUrl = character.ProfileImageUrl }; _plogDbContext.Add(alt); await _plogDbContext.SaveChangesAsync(); _response = $"Setup alt character {name}!"; } } else { if (!alt.DiscordId.HasValue) { alt.DiscordId = _event.Message.Author.Id; alt.Main = main; await _plogDbContext.SaveChangesAsync(); _response = $"Attached alt character {name}"; } else if (alt.DiscordId.HasValue && alt.DiscordId.Value != _event.Message.Author.Id) { _response = $"This plog already exists! <@{alt.DiscordId}> has claimed this character."; } else { _response = $"You have already claimed {name}"; } } await _messageService.SendMessage(_event.Message.ChannelId, new OutgoingMessage { Content = _response }); }
public void Save() { try { foreach (var clan in Clans.Where(x => !x.Saved).ToList()) { var clanToSave = _dbContext.Clans.FirstOrDefault(x => x.Id == clan.ID); if (clanToSave == null) { clanToSave = new DAL.Models.Clan(); clanToSave.Name = clan.Name; clanToSave.ClanType = (int)clan.ClanType; } clanToSave.Description = clan.Description; clanToSave.BoardId = clan.Board; clanToSave.Motto = clan.Motto; clanToSave.DeityName = clan.Deity; clanToSave.Badge = clan.Badge; clanToSave.RecallRoomId = clan.RecallRoom; clanToSave.StoreRoomId = clan.StoreRoom; // Stats if (clanToSave.Stats == null) { clanToSave.Stats = new ClanStats(); } clanToSave.Stats.PvE_Kills = clan.PvEKills; clanToSave.Stats.PvE_Deaths = clan.PvEDeaths; clanToSave.Stats.Illegal_PvP_Kills = clan.IllegalPvPKill; clanToSave.Stats.Score = clan.Score; clanToSave.Stats.Favour = clan.Favour; clanToSave.Stats.Strikes = clan.Strikes; clanToSave.Stats.MemberLimit = clan.MemberLimit; clanToSave.Stats.Alignment = clan.Alignment; // Members foreach (var member in clan.Members) { var clanMember = clanToSave.Members.FirstOrDefault(x => x.Name == member.Name); if (clanMember == null) { clanMember = new ClanMember(); clanToSave.Members.Add(clanMember); } clanMember.Name = member.Name; clanMember.Joined = member.Joined; clanMember.ClassId = member.Class; clanMember.Level = member.Level; clanMember.Kills = member.Kills; clanMember.Deaths = member.Deaths; // TODO Notes clanMember.ClanRank = (int)GetClanRank(member.Name, clan); } // Ranks // Items } _dbContext.SaveChanges(); } catch (DbException ex) { _logManager.Error(ex); throw; } }
public async Task <ClanSave> LoadClanAsync(long clanId, CancellationToken cancellationToken) { if (clanId < 1) { throw new ArgumentOutOfRangeException(nameof(clanId)); } // If the clan is already in the cache, we return that instance. var clanSave = default(ClanSave); if (Server.Cache.TryGet(clanId, out clanSave)) { return(clanSave); } // Otherwise we query the db to find the clan save. using (var sql = new MySqlConnection(_connectionString)) { await sql.OpenAsync(cancellationToken); // Search for clan with specified clanId. using (var command = new MySqlCommand("SELECT * FROM `clans` WHERE `clan_id` = @ClanId", sql)) { command.Parameters.AddWithValue("ClanId", clanId); using (var reader = await command.ExecuteReaderAsync(CommandBehavior.SingleRow, cancellationToken)) { // If the query did not return any rows, it means the clan does not exists. // So we return null; if (!reader.HasRows) { return(null); } else { if (await reader.ReadAsync()) { clanSave = Server.Factories.GetFactory <ClanSaveFactory>().Create(); FromMySqlDataReader(clanSave, reader); } } } } var shouldDelete = false; var members = new List <ClanMember>(4); // Look for entries in the clans_members table which has the same clan_id. using (var command = new MySqlCommand("SELECT * FROM `clan_members` WHERE `clan_id` = @ClanId", sql)) { command.Parameters.AddWithValue("ClanId", clanSave.ClanId); using (var reader = await command.ExecuteReaderAsync(cancellationToken)) { if (!reader.HasRows) { shouldDelete = true; } else { while (await reader.ReadAsync(cancellationToken)) { var member = new ClanMember(); FromMySqlDataReader(member, reader); var level = await Server.Db.LoadLevelAsync(member.Id, cancellationToken); member.Name = level.Name; member.League = level.League; member.Trophies = level.Trophies; member.ExpLevels = level.ExpLevels; members.Add(member); } clanSave.Members = members; } } } if (shouldDelete) { using (var command = new MySqlCommand("DELETE FROM `clans` WHERE `clan_id` = @ClanId", sql)) { command.Parameters.AddWithValue("ClanId", clanSave.ClanId); var numRows = await command.ExecuteNonQueryAsync(cancellationToken); if (numRows != 1) { Server.Logs.Warn($"Tried to delete an empty clan however, number of rows affected was '{numRows}'."); } Server.Cache.Unregister <ClanSave>(clanId); return(null); } } // Register this instance to our cache. Server.Cache.Register(clanId, clanSave); return(clanSave); } }