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"); } } } }
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); }
public static IEnumerable <string> GetSortedMangas() { SortedSet <string> mangas = new(); SqliteManager.Get().GetMangas().Split('\n').ForEach(m => mangas.Add(m)); return(mangas); }
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); }
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); }
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); }
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); } }
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); }
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 + "> "; } }
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); } } } }
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); }
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); } }
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); }
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..];
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()); }
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()); } } } }
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); }
public override async Task Invoke(IUserMessage message) { await message.Channel.SendMessagesAsync(SqliteManager.Get().DisplayAllTables()); }
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()); } }
private static void SetCanCrawl(bool value) { SqliteManager.Get().UpdateParam(Params.CanCrawlQwertee, value.ToString()); }
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); } }
private static bool CanCrawl() { return(SqliteManager.Get().GetParamByName(Params.CanCrawlQwertee).ToBool()); }