public static async Task SendJoinMessageAsync(GuildMemberlogs g, string?msg, string username, string avatarUrl) { if (DiscordBot.Bot?.Rest is null) { return; } if (g.JoinMessage?.IsEmbed ?? false) { DiscordEmbedBuilder embed = new DiscordEmbedBuilder() { Color = new DiscordColor(CommandModule.Colors[ColorType.Memberlog][0]), Description = msg is null ? "" : msg, Footer = new DiscordEmbedBuilder.EmbedFooter() { IconUrl = avatarUrl, Text = "User Joined" }, Timestamp = DateTime.Now }; try { await DiscordBot.Bot.Rest.CreateMessageAsync(g.MemberlogChannel ?? 0UL, embed); } catch { /* Backgroun task, ignore rest exceptions. */ } // ignore } else if (g.JoinMessage?.IsImage ?? false) { using var stream = await SvgHandler.GetWelcomeImage(true, username, avatarUrl); if (!(stream is null)) { try { await DiscordBot.Bot.Rest.CreateMessageAsync(g.MemberlogChannel ?? 0UL, new DiscordMessageBuilder().WithFile("welcome-message.png", stream)); } catch { /* Backgroun task, ignore rest exceptions. */ } // ignore } } else if (!(msg is null)) { try { await DiscordBot.Bot.Rest.CreateMessageAsync(g.MemberlogChannel ?? 0UL, msg); } catch { /* Backgroun task, ignore rest exceptions. */ } // ignore } }
public static async Task SendLeaveMessageAsync(GuildMemberlogs g, string?msg, string username, string avatarUrl) { if (DiscordBot.Bot?.Rest is null) { return; } if (g.LeaveMessage?.IsEmbed ?? false) { DiscordEmbedBuilder embed = new DiscordEmbedBuilder() { Color = new DiscordColor(CommandModule.Colors[ColorType.Memberlog][1]), Description = msg is null ? "" : msg, Footer = new DiscordEmbedBuilder.EmbedFooter() { IconUrl = avatarUrl, Text = "User Left" }, Timestamp = DateTime.Now }; try { await DiscordBot.Bot.Rest.CreateMessageAsync(g.MemberlogChannel ?? 0UL, embed); } catch { /* Ignore errors from the REST client sening in the backgroung. */ } // ignore } else if (g.LeaveMessage?.IsImage ?? false) { using var stream = await SvgHandler.GetWelcomeImage(false, username, avatarUrl); if (!(stream is null)) { try { await DiscordBot.Bot.Rest.CreateMessageAsync(g.MemberlogChannel ?? 0UL, new DiscordMessageBuilder().WithFile("farewell-message.png", stream)); } catch { /* Ignore errors from the REST client sening in the backgroung. */ } // ignore } } else if (!(g.LeaveMessage?.Message is null)) { try { await DiscordBot.Bot.Rest.CreateMessageAsync(g.MemberlogChannel ?? 0UL, msg); } catch { /* Ignore errors from the REST client sening in the backgroung. */ } // ignore } }
public void RefreshFlagPanel() { FlagPanel.Children.Clear(); FlagPanel.Children.Add(SvgHandler.SvgToWpfImage(SvgImage)); }
public static SvgDocument GenerateMandala(MainWindow main) { Random Random = new Random(); Elements = new Dictionary <int, List <MandalaElement> >(); Main = main; int maxDepth = Random.Next(MaxDepth - MinDepth) + MinDepth; StrokeWidth = Random.Next(MaxStrokeWidth - MinStrokeWidth) + MinStrokeWidth; SvgDocument SvgDocument = SvgHandler.NewSvgDocument(1000, 1000); List <MandalaElement> elements = new List <MandalaElement>(); ME_Empty startElement = new ME_Empty(SvgDocument, 0, MandalaElement.ElementId++); Size = startElement.Area; elements.Add(startElement); XmlTextWriter writer = new XmlTextWriter("asdasdas.svg", Encoding.UTF8); SvgDocument.Write(writer); MandalaElement nextElement; while (elements.Count > 0) { // Get next element and elements with the same id nextElement = elements[0]; List <MandalaElement> nextElementGroup = elements.Where(x => x.Id == nextElement.Id).ToList(); nextElementGroup.Add(nextElement); // Remove elements with same id from queue elements = elements.Except(nextElementGroup).ToList(); // Find which rules can be applied to elements List <MandalaLanguageRule> ruleCandidates = MandalaLanguageRules.Where(x => x.CanApply(nextElement)).ToList(); if (ruleCandidates.Count > 0) { // Chose a applicable rule at random and initialize it MandalaLanguageRule chosenRule = ruleCandidates[Random.Next(ruleCandidates.Count)]; chosenRule.Initialize(nextElement, Random); // Apply (draw) rule to all elements in group foreach (MandalaElement element in nextElementGroup) { List <MandalaElement> resultShapes = chosenRule.Apply(element); // Add outcoming shapes to the recursive queue foreach (MandalaElement shape in resultShapes) { //if (shape.Depth < maxDepth) elements.Add(shape); if (shape.Area > MinAreaToReproduce) { elements.Add(shape); } } } } else { Console.WriteLine("No rules found for shape: " + nextElement.Type); } } XmlTextWriter writer2 = new XmlTextWriter("testSvg.svg", Encoding.UTF8); SvgDocument.Write(writer2); UpdateInfoBox(); return(SvgDocument); }