示例#1
0
        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
            }
        }
示例#2
0
        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);
    }