Exemple #1
0
        public async Task <Task> SendWOTDAsync()
        {
            WordOfTheDay TodaysWOTD = Logic.GetXMLWOTD();

            DiscordEmbedBuilder embedBuilder = new DiscordEmbedBuilder();

            embedBuilder.WithTitle("Word of the Day");
            embedBuilder.WithUrl(TodaysWOTD.link);
            //https://imgur.com/rT9YocG
            embedBuilder.WithThumbnail("https://cdn.discordapp.com/attachments/477632242190123027/603763546836303899/dummy.png");
            embedBuilder.WithFooter("A Yoshi's bot", "https://i.imgur.com/rT9YocG.jpg");
            embedBuilder.AddField(":flag_es: - " + TodaysWOTD.es_word, $"{TodaysWOTD.es_sentence}", true);
            embedBuilder.AddField(":flag_gb: - " + TodaysWOTD.en_word, $"{TodaysWOTD.en_sentence}", true);
            embedBuilder.WithColor(new DiscordColor("#970045"));

            DiscordEmbed embed = embedBuilder.Build();

            languagechannel.CrosspostMessageAsync(
                languagechannel.SendMessageAsync(new DiscordMessageBuilder()
                                                 .WithContent(WOTDrole.Mention)
                                                 .WithEmbed(embed)).Result
                );

            return(Task.CompletedTask);
        }
Exemple #2
0
        public static WordOfTheDay GetXMLWOTD()
        {
            List <String> Strings = new List <string>();

            XmlDocument rssXmlDoc = new XmlDocument();

            // Load the RSS file from the RSS URL
            rssXmlDoc.Load("http://feeds.feedblitz.com/spanish-word-of-the-day&x=1"); //Rss

            String rawUnparsedXML = rssXmlDoc.OuterXml;

            rawUnparsedXML = rawUnparsedXML.Replace("<![CDATA[", "");
            rawUnparsedXML = rawUnparsedXML.Replace("]]>", "");
            rawUnparsedXML = rawUnparsedXML.Replace("</content:encoded>", "</Img></content:encoded>"); //Creo que esto es lo mas hardcoded que he visto jamas
            rssXmlDoc.LoadXml(rawUnparsedXML);

            Strings.Add(rssXmlDoc.SelectSingleNode("rss/channel/link").InnerText);

            XmlNodeList NodeListTitle = rssXmlDoc.SelectNodes("//title"); //Por que el RSS tiene dos titulos y necesito el segundo

            foreach (XmlNode rssNode in NodeListTitle)
            {
                Strings.Add(rssNode.InnerText);
            }

            XmlNodeList rsstable = rssXmlDoc.SelectNodes("rss/channel/item/description/table/tr");

            foreach (XmlNode rssNode in rsstable)
            {
                XmlNode rssSubNode = rssNode.SelectSingleNode("th");
                if (rssSubNode != null)
                {
                    Strings.Add(rssSubNode.InnerText);
                }

                rssSubNode = rssNode.SelectSingleNode("td");
                if (rssSubNode != null)
                {
                    Strings.Add(rssSubNode.InnerText);
                }
            }
            Strings.AddRange(Strings[2].Split(':')); //Separo uno de los strings dentro del string en otros dos strings ("test:test2") => ("test","test2")

            for (int i = 0; i < Strings.Count; i++)
            {
                Strings[i] = Strings[i].Trim();
            }

            //PARSE FROM STRING[] TO WOTD
            //Vamos a hacerlo bonito
            String es_word     = FirstCharToUpper(Strings[9]);
            String en_word     = FirstCharToUpper(Strings[10]);
            String es_sentence = Strings[6];
            String en_sentence = Strings[8];
            String link        = Strings[0];

            WordOfTheDay WOTD = new WordOfTheDay(es_word, en_word, es_sentence, en_sentence, link);

            return(WOTD);
        }