Esempio n. 1
0
        public async Task Guild_Message_Received(SocketUserMessage message)
        {
            if (message.Author.Id == DataManager.master_id || message.Author.Id == Users.Bot.Id || SqliteManager.Get().GetBannedList().Contains(message.Author.Id))
            {
                return;
            }

            ulong authorId = message.Author.Id;

            if (DataManager.people_spam.ContainsKey(authorId))
            {
                DataManager.people_spam[authorId]++;
            }
            else
            {
                DataManager.people_spam.Add(authorId, 0);
            }

            foreach (KeyValuePair <ulong, int> kvp in DataManager.people_spam)
            {
                if (kvp.Value > 4)
                {
                    try {
                        SocketUser user = DataManager._client.GetUser(kvp.Key);
                        await message.Channel.SendMessageAsync($"{user.Mention}, a été banni pour avoir trop spam.");

                        SqliteManager.Get().AddBan(kvp.Key);
                    }
                    catch (System.Exception e) {
                        e.Display("BanListenerMessageReceived");
                    }
                }
            }
        }
Esempio n. 2
0
        public override async Task Invoke(IUserMessage message)
        {
            IUser  author = message.Author;
            string result = SqliteManager.Get().AddUser(author.Id.ToString(), author.Username, author.Username);

            await message.Channel.SendMessageAsync(result);
        }
Esempio n. 3
0
        public static IEnumerable <string> GetSortedMangas()
        {
            SortedSet <string> mangas = new();

            SqliteManager.Get().GetMangas().Split('\n').ForEach(m => mangas.Add(m));
            return(mangas);
        }
Esempio n. 4
0
        private string AddMangaJapscan(string manga)
        {
            string msg = string.Empty;

            try {
                if (MangasUtils.GetMangaIdByName(manga) != null)
                {
                    return("Ce manga est déjà dans la liste poto ! :)");
                }

                string site = MangasUtils.JAPSCAN;
                string link = site + "lecture-en-ligne/" + manga + "/";

                string crawlerResult = new Crawler.Crawler(link).Crawl();

                if (crawlerResult.Contains("Cette page n'existe pas ou plus"))
                {
                    throw new WebException();
                }

                //Si on arrive ici sans exception c'est que c'est bon
                SqliteManager.Get().AddManga(manga);
                msg = $"Manga '{manga}' ajouté à la liste.";
            }
            catch (Exception e) {
                if (e is ArgumentOutOfRangeException || e is WebException)
                {
                    msg = "Ce manga n'existe pas ou le site ne le possède pas. Le nom doit être de la forme : one-piece (minuscules séparées par un tiret)";
                }
            }

            return(msg);
        }
Esempio n. 5
0
        public override async Task Invoke(IUserMessage message)
        {
            string msg = "Il faut mettre l'id ou la mention de la personne. Ex : " + Name + " 227490882033680384";

            try {
                var   userId  = message.Content.Split(' ')[1];
                ulong userId_ = System.Convert.ToUInt64(userId.OnlyKeepDigits());

                if (userId_ == DataManager.master_id)
                {
                    msg = "Bien essayé, mais non. " + Utilities.EmoteManager.Smirk;
                    await message.Channel.SendMessageAsync(msg);

                    return;
                }

                if (!SqliteManager.Get().GetBannedList().Contains(userId_))
                {
                    SqliteManager.Get().AddBan(userId_);
                    msg = $"L'utilisateur <@{userId_}> a bien été banni.";
                }
                else
                {
                    msg = "Cet utilisateur est déjà banni.";
                }
            }
            catch (System.Exception e) {
                e.Display(Name);
            }

            await message.Channel.SendMessageAsync(msg);
        }
Esempio n. 6
0
        public override async Task Invoke(IUserMessage message)
        {
            string msgError = "La commande a mal été écrite.";

            string msg;

            try {
                string mangaName = message.Content.ToLower().Split(' ')[1];
                string manga     = MangasUtils.GetMangaIdByName(mangaName);

                if (manga == null)
                {
                    msg = $"Le manga '{mangaName}' n'était pas dans la liste.";
                }
                else
                {
                    SqliteManager.Get().RemoveManga(mangaName);
                    msg = $"Le manga '{mangaName}' a bien été supprimé de la liste.";
                }
            }
            catch (Exception) {
                msg = msgError;
            }

            await message.Channel.SendMessagesAsync(msg);
        }
Esempio n. 7
0
 public override async Task Invoke(IUserMessage message)
 {
     try {
         string result = SqliteManager.Get().AddCrawlSubs(CrawlType.Qwertee, message.Channel.Id);
         await message.Channel.SendMessageAsync(result);
     }
     catch (System.Exception e) {
         e.Display(Name);
     }
 }
Esempio n. 8
0
        public static List <(string manga, string scan)> GetAllMangasAndScan()
        {
            List <(string manga, string scan)> result = new();

            foreach (string ligne in SqliteManager.Get().GetAllMangasAndScan().Split('\n'))
            {
                var split = ligne.Split(", ");
                result.Add((split[0], split[1]));
            }

            return(result);
        }
Esempio n. 9
0
        private void GenerateMessage(string title, string mangaName, out string subs, out string msg)
        {
            subs = string.Empty;
            string scanValue = "Scan " + title + " => <" + link + ">";

            msg = "Nouveau scan trouvé pour " + mangaName + " : \n\t" + scanValue;
            var users = SqliteManager.Get().GetSubs(mangaName);

            foreach (var user in users)
            {
                subs += "<@" + user + "> ";
            }
        }
Esempio n. 10
0
 public async Task Message_ReactionAdded(Cacheable <IUserMessage, ulong> cached_message, ISocketMessageChannel channel, SocketReaction reaction)
 {
     if (SqliteManager.Get().GetBannedList().Contains(reaction.User.Value.Id) || reaction.User.Value.Id == Users.Bot.Id)
     {
         return;
     }
     if (channel is SocketGuildChannel)
     {
         await Guild_Message_ReactionAdded(cached_message, channel, reaction);
     }
     else
     {
         await DM_Message_ReactionAdded(cached_message, channel, reaction);
     }
 }
 public async Task Guild_Message_Received(SocketUserMessage message)
 {
     if (message.Channel.Id == Channels.Musique.Id)
     {
         string msg;
         if ((msg = message.Content.GetYtLink()) != string.Empty)
         {
             try {
                 SqliteManager.Get().AddMusic(msg);
                 await(message as SocketUserMessage).AddReactionAsync(EmoteManager.CheckMark);
             }
             catch (System.Exception) {
                 await(message as SocketUserMessage).AddReactionAsync(EmoteManager.Guilds.Zawarudo.Aret);
             }
         }
     }
 }
Esempio n. 12
0
        public override async Task Invoke(IUserMessage message)
        {
            string msg           = string.Empty;
            string message_lower = message.Content.ToLower();

            var words = message_lower.Split(' ');

            if (words.Length == 2)
            {
                string pokemonName = words[1];
                msg = SqliteManager.Get().GetPokemonInfo("charizard", "rarityTier");
            }
            else
            {
                msg = "This command can be used like this : " + Name + " Charizard";
            }

            await message.Channel.SendMessagesAsync(msg);
        }
Esempio n. 13
0
        public override async Task Invoke(IUserMessage message)
        {
            string result        = "This command can be used by two diffents ways: \n1 - Just the pokemon name after the command, will send you his catch rate.\n2 - The second way will sent you his % chance of being catch : `!command life_percent catch_rate bonus_ball bonus_statut` => `!command 100 45 2 2`.";
            string message_lower = message.Content.ToLower();

            var words        = message_lower.Split(' ');
            int words_length = words.Length;

            try {
                if (words_length == 2)
                {
                    string pokemonName = words[1];
                    result = SqliteManager.Get().GetPokemonInfo(pokemonName, "catchRate");
                }
                else if (words_length == 5)
                {
                    float hp_percent   = float.Parse(words[1], CultureInfo.InvariantCulture.NumberFormat);
                    float catch_rate   = float.Parse(words[2], CultureInfo.InvariantCulture.NumberFormat);
                    float bonus_ball   = float.Parse(words[3], CultureInfo.InvariantCulture.NumberFormat);
                    float bonus_statut = float.Parse(words[4], CultureInfo.InvariantCulture.NumberFormat);

                    if (bonus_ball == 0.0)
                    {
                        throw new ArgumentException("Bonus_ball cannot be 0. Basics are : 1 for Pokeball, 1.5 for Superball and 2 for Hyperball.");
                    }
                    if (bonus_statut == 0.0)
                    {
                        throw new ArgumentException("Bonus_statut cannot be 0. Basics are : 1 for normal, 1.5 for paralyze and 2 for sleep.");
                    }
                    double formula = (1 - (2 / 3.0) * (hp_percent / 100.0)) * catch_rate * bonus_ball * bonus_statut;

                    result = formula.ToString("0.00") + "%";
                }
                await message.Channel.SendMessagesAsync(result);
            }
            catch (ArgumentException e) {
                await message.Channel.SendMessageAsync(e.Message);
            }
            catch (Exception e) {
                e.Display(Name);
                await message.Channel.SendMessagesAsync(result);
            }
        }
Esempio n. 14
0
        public override async Task Invoke(IUserMessage message)
        {
            string result = string.Empty;

            try {
                SqliteManager sqliteManager = SqliteManager.Get();
                string        maxId         = sqliteManager.GetMaxIdFromTable(Tables.Musics);
                Random        r             = new Random();
                do
                {
                    int rInt = r.Next(1, Convert.ToInt32(maxId));
                    result = sqliteManager.GetMusicTitleById(rInt.ToString());
                } while (result == String.Empty);
            }
            catch (Exception e) {
                e.Display(Name);
            }

            await message.Channel.SendMessageAsync(result);
        }
Esempio n. 15
0
        private static Embed GetAllPokemonInfo(string pokemonName)
        {
            string pokemonInfos = SqliteManager.Get().GetPokemonInfos(pokemonName);

            if (pokemonInfos == string.Empty)
            {
                return(null);
            }

            pokemonInfos = pokemonInfos.Replace("///", "://");
            string[] infos = pokemonInfos.Split(", ");

            int    id      = int.Parse(infos[1]);
            string urlIcon = infos[2];

            //https://img.pokemondb.net/sprites/black-white/anim/normal/unown-a.gif
            //http://www.pokestadium.com/sprites/xy/unown.gif
            //http://www.pokestadium.com/assets/img/sprites/official-art/unown.png
            urlIcon = "http://www.pokestadium.com/sprites/xy/" + infos[3] + ".gif";
            string nameEn     = infos[3]; nameEn = char.ToUpper(nameEn[0]) + nameEn[1..];
Esempio n. 16
0
        public override async Task Invoke(IUserMessage message)
        {
            StringBuilder result     = new();
            List <ulong>  bannedList = SqliteManager.Get().GetBannedList();

            if (bannedList.Count == 0)
            {
                result.Append("La liste est vide.");
            }
            else
            {
                result.Append("Voici la liste des gens bannis : \n");
                foreach (ulong bannedUser in bannedList)
                {
                    result.Append($"\t - {DataManager._client.GetUser(bannedUser)?.ToString()} uid : {bannedUser}\n");
                }
            }

            await message.Channel.SendMessagesAsync(result.ToString());
        }
Esempio n. 17
0
        private async Task CrawlMethod()
        {
            // pour TU (one day) : string crawlResult = File.ReadAllText(DataManager.TEXT_DIR + "mock.rss");
            string crawlResult = new Crawler.Crawler(url).CrawlCloudFlare();

            XmlReader       reader = XmlReader.Create(new StringReader(crawlResult));
            SyndicationFeed feed   = SyndicationFeed.Load(reader);

            reader.Close();

            // Pour chaque item du flux RSS
            foreach (SyndicationItem item in feed.Items)
            {
                InitWithSyndicationItem(item, out string title, out string mangaName, out float newScan);
                float scan = SqliteManager.Get().GetScanByMangaTitle(mangaName).ToFloat();

                // Si le manga n'existe pas dans la bdd on passe à l'item suivant
                if (scan == -1)
                {
                    continue;
                }

                // Si le nouveau chapitre est plus récent
                if (newScan > scan)
                {
                    // Si c'est en VF on affiche le message aux subs et on sauvegarde le numéro de chapitre
                    if (IsVF())
                    {
                        GenerateMessage(title, mangaName, out string subs, out string msg);
                        foreach (IMessageChannel channel in Channels.Mangas)
                        {
                            await channel.SendMessageAsync(msg + " " + subs);
                        }
                        SqliteManager.Get().UpdateManga(mangaName, newScan.ToString());
                    }
                }
            }
        }
Esempio n. 18
0
        public override async Task Invoke(IUserMessage message)
        {
            string msg = "Il faut mettre l'id ou la mention de la personne. Ex : " + Name + " 227490882033680384";

            try {
                var   userId  = message.Content.Split(' ')[1];
                ulong userId_ = System.Convert.ToUInt64(userId.OnlyKeepDigits());

                if (SqliteManager.Get().GetBannedList().Contains(userId_))
                {
                    SqliteManager.Get().RemoveBan(userId_);
                    msg = $"L'utilisateur <@{userId_}> a bien été retiré des utilisateurs bannis.";
                }
                else
                {
                    msg = "Cet utilisateur n'était pas banni.";
                }
            }
            catch (System.Exception e) {
                e.Display(Name);
            }

            await message.Channel.SendMessageAsync(msg);
        }
Esempio n. 19
0
 public override async Task Invoke(IUserMessage message)
 {
     await message.Channel.SendMessagesAsync(SqliteManager.Get().DisplayAllTables());
 }
Esempio n. 20
0
        public static string GetMangaIdByName(string mangaName)
        {
            string mangaId = SqliteManager.Get().GetMangaIdByName(mangaName);

            return((mangaId == string.Empty) ? null : mangaId);
        }
        //TODO A terme implémentera le system d'Actions lié => dossier Reactions
        public async Task Guild_Message_ReactionAdded(Cacheable <IUserMessage, ulong> cachedMessage, ISocketMessageChannel channel, SocketReaction reaction)
        {
            try {
                IUserMessage message = channel.GetMessageAsync(cachedMessage.Id).Result as IUserMessage;

                if (reaction.User.Value.IsAdmin())
                {
                    IUserMessage nsfwMessage = ReactionUtils.IsThisNsfwInProgress(message);

                    if (nsfwMessage != null)
                    {
                        if (reaction.Emote.Equals(EmoteManager.CheckMark))
                        {
                            await message.DeleteAsync();

                            ReactionUtils.NsfwProcessing(nsfwMessage);
                            ReactionUtils.RemoveNsfwMessage(message);
                        }
                        else if (reaction.Emote.Equals(EmoteManager.CrossMark))
                        {
                            await message.DeleteAsync();

                            await nsfwMessage.RemoveAllReactionsAsync();

                            ReactionUtils.RemoveNsfwMessage(message);
                        }
                    }
                    else if (channel.Id == Channels.Musique.Id && reaction.Emote.Equals(EmoteManager.NegativeCrossMark))
                    {
                        string result = SqliteManager.Get().RemoveMusic(message.Content.GetYtLink());

                        if (result == string.Empty)
                        {
                            await message.RemoveAllReactionsAsync();

                            await message.AddReactionAsync(EmoteManager.Skull);

                            await Channels.Debugs.SendMessageAsync("Message n°" + reaction.MessageId + " deleted from musique database. (" + message.Content + ")");
                        }
                    }
                    else if (reaction.Emote.Equals(EmoteManager.Nsfw))
                    {
                        ReactionUtils.NsfwProcessing(message);
                    }
                }
                else
                {
                    if (reaction.Emote.Equals(EmoteManager.Nsfw))
                    {
                        int result       = 0;
                        var reactedUsers = await message.GetReactionUsersAsync(EmoteManager.Nsfw, 100).FlattenAsync();

                        IUser user = null;
                        using (IEnumerator <IUser> enumerator = reactedUsers.GetEnumerator()) {
                            while (enumerator.MoveNext())
                            {
                                if (result == 0)
                                {
                                    user = enumerator.Current;
                                }
                                result++;
                            }
                        }

                        if (result == 1)
                        {
                            await message.AddReactionAsync(EmoteManager.Nsfw);

                            Embed        embed       = message.Quote(reaction.User.Value);
                            IUserMessage messageSent = null;

                            if (embed != null)
                            {
                                messageSent = await message.Channel.SendMessageAsync("<@&328899154887835678> Is this NSFW ? *reported by " + user.Mention + "*", false, embed);
                            }
                            else
                            {
                                messageSent = await message.Channel.SendMessageAsync("<@&328899154887835678> Is this NSFW ? *reported by " + user.Mention + "*");
                            }
                            await messageSent.AddReactionsAsync(new IEmote[] { EmoteManager.CheckMark, EmoteManager.CrossMark });

                            DataManager.nsfw_content_inprocess.Add(messageSent, message);
                        }
                    }
                }
            }
            catch (Exception e) {
                e.Display(System.Reflection.MethodBase.GetCurrentMethod().ToString());
            }
        }
Esempio n. 22
0
 private static void SetCanCrawl(bool value)
 {
     SqliteManager.Get().UpdateParam(Params.CanCrawlQwertee, value.ToString());
 }
Esempio n. 23
0
        public async Task Message_Received(SocketMessage message)
        {
            if (!(message is SocketUserMessage) || message.Author.Id == Users.Bot.Id || SqliteManager.Get().GetBannedList().Contains(message.Author.Id))
            {
                return;
            }
            SocketUserMessage user_message = message as SocketUserMessage;

            if (user_message.Channel is SocketGuildChannel)
            {
                await Guild_Message_Received(user_message);
            }
            else
            {
                await DM_Message_Received(user_message);
            }
        }
Esempio n. 24
0
 private static bool CanCrawl()
 {
     return(SqliteManager.Get().GetParamByName(Params.CanCrawlQwertee).ToBool());
 }