public async Task Roll(params string[] s) { AnimaCharacter character = CharacterRepository.FindCurrentByMention <AnimaCharacter>(Context.Message.Author.Mention); if (character == null) { await Context.Channel.SendMessageAsync("Error 404: Character not found or not loaded!"); return; } string statBonusStr = s.FirstOrDefault(x => x.StartsWith("+") || x.StartsWith("-")); int bonus = Convert.ToInt32(statBonusStr); string stat = string.Join(" ", s).ToLower(); if (!string.IsNullOrWhiteSpace(statBonusStr)) { stat = stat.Replace($" {statBonusStr}", ""); } if (stat == null || stat == string.Empty) { await Context.Message.DeleteAsync(); await Context.Channel.SendMessageAsync(character.KeywordsHelp()); } else { await Context.Message.DeleteAsync(); await Context.Channel.SendMessageAsync(string.Format("{0} {1}", Context.User.Mention, character.Roll(stat, bonus))); } }
public async Task SetKi(string s) { AnimaCharacter character = CharacterRepository.FindCurrentByMention <AnimaCharacter>(Context.Message.Author.Mention); _ = Context.Message.DeleteAsync(); if (s == "reset") { character.CurrentKi = character.TotalKiPoints; } else if (s.Contains("+") || s.Contains("-")) { character.CurrentKi += Convert.ToInt32(s); } else { character.CurrentKi = Convert.ToInt32(s); } var msg = await Context.Channel.SendMessageAsync($"{Context.User.Mention} {character.Name}'s ki set to {character.CurrentKi}"); await Task.Delay(3000); _ = msg.DeleteAsync(); }
public async Task Status() { AnimaCharacter character = CharacterRepository.FindCurrentByMention <AnimaCharacter>(Context.Message.Author.Mention); if (character == null) { await Context.Channel.SendMessageAsync("Error 404: Character not found or not loaded!"); return; } _ = Context.Message.DeleteAsync(); var embed = new EmbedBuilder { Title = character.Name }; embed.WithThumbnailUrl(character.ImageUrl) .AddField("Hp", $"{character.CurrentHp}/{character.Hp}", true) .AddField("Fatigue", $"{character.CurrentFatigue}/{character.Fatigue}", true) .AddField("Points de Ki", $"{character.CurrentKi}/{character.TotalKiPoints}", true) .AddField("Zéon", $"{character.CurrentZeon}/{character.ZeonPoints}", true) .AddField("Ppp libres", $"{character.CurrentPpp}/{character.PppFree}", true); await Context.User.SendMessageAsync("", false, embed.Build()); }
public async static Task HandleFile(IAttachment attachment, string mention) { if (Path.GetExtension(attachment.Filename) != ".xlsx") { throw new ArgumentException("Format de fichier incorrect."); } using (HttpClient hclient = new HttpClient()) { Stream stream; try { stream = await hclient.GetStreamAsync(attachment.Url); } catch (Exception) { try { stream = await hclient.GetStreamAsync(attachment.ProxyUrl); } catch (Exception) { throw; } } MemoryStream memoryStream = new MemoryStream(); stream.CopyTo(memoryStream); using (ExcelPackage package = new ExcelPackage(memoryStream)) { PlayableCharacter character = null; ExcelWorkbook workbook = package.Workbook; ExcelWorksheet worksheet = workbook.Worksheets["Feuille de personnage"]; if (worksheet != null)//Fiche de perso anima { character = new AnimaCharacter(worksheet, mention); } worksheet = workbook.Worksheets["Stat"]; if (worksheet != null)//Fiche de perso L5R => peut encore changer { character = new L5RCharacter(worksheet, mention); } int charIndex = CharacterRepository.Characters.FindIndex(x => x.Player == mention && x.Name == character.Name); if (charIndex == -1) { CharacterRepository.Characters.Add(character); } else { CharacterRepository.Characters[charIndex] = character; } CharacterRepository.SaveExcelCharacter(package, mention, character.Name); } } }
public async Task ResetCurrentStat() { AnimaCharacter character = CharacterRepository.FindCurrentByMention <AnimaCharacter>(Context.Message.Author.Mention); _ = Context.Message.DeleteAsync(); character.CurrentHp = character.Hp; character.CurrentFatigue = character.Fatigue; character.CurrentZeon = character.ZeonPoints; character.CurrentPpp = character.PppFree; character.CurrentKi = character.TotalKiPoints; var msg = await Context.Channel.SendMessageAsync($"{Context.User.Mention} {character.Name} reset"); await Task.Delay(3000); _ = msg.DeleteAsync(); }
private async Task ReactionAddedOrRemoved(Cacheable <IUserMessage, ulong> cache, ISocketMessageChannel channel, SocketReaction reaction) { if (reaction.User.Value.IsBot) { return; } if (ReactionMessages.Contains(cache.Id)) { AnimaCharacter character = CharacterRepository.FindCurrentByMention <AnimaCharacter>(reaction.User.Value.Mention); if (character == null) { await channel.SendMessageAsync("Error 404: Character not found or not loaded!"); return; } await channel.SendMessageAsync(string.Format("{0} {1}", reaction.User.Value.Mention, character.Roll(EmotesAction[reaction.Emote].ToLower(), 0))); } if (HelpMessages.ContainsKey(cache.Id)) { if (reaction.Emote.Name == "\U000025c0")//Previous page { var msg = await cache.GetOrDownloadAsync(); await msg.ModifyAsync(x => { x.Content = ""; x.Embed = HelpMessages[cache.Id].GetPreviousPage().Build(); }); } else if (reaction.Emote.Name == "\U000025b6")//Next page { var msg = await cache.GetOrDownloadAsync(); await msg.ModifyAsync(x => { x.Content = ""; x.Embed = HelpMessages[cache.Id].GetNextPage().Build(); }); } } }