From d203f6032a72c84f001c450e9f7f51ae0655c609 Mon Sep 17 00:00:00 2001 From: Master Kwoth Date: Wed, 10 Feb 2016 17:27:49 +0100 Subject: [PATCH] 8ball, donator stuff, fixed card draws - thx gucci --- NadekoBot/Classes/Cards.cs | 20 +++--- NadekoBot/Modules/Administration.cs | 105 +++++++++++++++------------- NadekoBot/Modules/Games.cs | 18 +++++ NadekoBot/bin/Debug/data/8ball.json | 23 ++++++ 4 files changed, 108 insertions(+), 58 deletions(-) create mode 100644 NadekoBot/bin/Debug/data/8ball.json diff --git a/NadekoBot/Classes/Cards.cs b/NadekoBot/Classes/Cards.cs index 405f90af..d64474b5 100644 --- a/NadekoBot/Classes/Cards.cs +++ b/NadekoBot/Classes/Cards.cs @@ -113,6 +113,7 @@ public class Cards } } } + private Random r = new Random(); /// /// Take a card from the pool, you either take it from the top if the deck is shuffled, or from a random place if the deck is in the default order. /// @@ -122,7 +123,7 @@ public class Cards if (CardPool.Count == 0) Restart(); //you can either do this if your deck is not shuffled - Random r = new Random((int)DateTime.Now.Ticks); + int num = r.Next(0, cardPool.Count); Card c = cardPool[num]; cardPool.RemoveAt(num); @@ -141,7 +142,6 @@ public class Cards private void Shuffle() { if (cardPool.Count > 1) { - Random r = new Random(); cardPool.OrderBy(x => r.Next()); } } @@ -195,15 +195,15 @@ public class Cards handValues = new Dictionary, bool>> { - { "A Pair", isPair }, - { "Two Pairs", isTwoPair }, - { "Three Of A Kind", isThreeOfKind }, - { "Straight", isStraight }, - { "Flush", isFlush }, - { "Full House", isFullHouse }, - { "Four Of A Kind", isFourOfKind }, + { "Royal Flush", isRoyalFlush }, { "Straight Flush", isStraightFlush }, - { "Royal Flush", isRoyalFlush } + { "Four Of A Kind", isFourOfKind }, + { "Full House", isFullHouse }, + { "Flush", isFlush }, + { "Straight", isStraight }, + { "Three Of A Kind", isThreeOfKind }, + { "Two Pairs", isTwoPair }, + { "A Pair", isPair } }; } diff --git a/NadekoBot/Modules/Administration.cs b/NadekoBot/Modules/Administration.cs index e4df1a5a..b945f530 100644 --- a/NadekoBot/Modules/Administration.cs +++ b/NadekoBot/Modules/Administration.cs @@ -579,59 +579,68 @@ namespace NadekoBot.Modules { //THIS IS INTENTED TO BE USED ONLY BY THE ORIGINAL BOT OWNER cgb.CreateCommand(".adddon") - .Description("Add a donator to the database.") - .Parameter("donator") - .Parameter("amount") - .Do(e => { - try { - if (NadekoBot.OwnerID != e.User.Id) - return; - var donator = e.Server.FindUsers(e.GetArg("donator")).FirstOrDefault(); - var amount = int.Parse(e.GetArg("amount")); - Classes.DBHandler.Instance.InsertData(new Donator { - Amount = amount, - UserName = donator.Name, - UserId = (long)e.User.Id - }); - e.Channel.SendMessage("Successfuly added a new donator. 👑"); - } catch (Exception ex) { - Console.WriteLine(ex); - Console.WriteLine("---------------\nInner error:\n" + ex.InnerException); - } - }); + .Alias(".donadd") + .Description("Add a donator to the database.") + .Parameter("donator") + .Parameter("amount") + .Do(e => { + try { + if (NadekoBot.OwnerID != e.User.Id) + return; + var donator = e.Server.FindUsers(e.GetArg("donator")).FirstOrDefault(); + var amount = int.Parse(e.GetArg("amount")); + Classes.DBHandler.Instance.InsertData(new Donator { + Amount = amount, + UserName = donator.Name, + UserId = (long)e.User.Id + }); + e.Channel.SendMessage("Successfuly added a new donator. 👑"); + } catch (Exception ex) { + Console.WriteLine(ex); + Console.WriteLine("---------------\nInner error:\n" + ex.InnerException); + } + }); + /* + cgb.CreateCommand(".no") + .Description("desc") + .Parameter("arg", ParameterType.Required) + .Do(async e => { + var arg = e.GetArg("arg"); - /*cgb.CreateCommand(".voicetext") - .Description("Enabled or disabled voice to text channel connection. Only people in a certain voice channel will see ") - - cgb.CreateCommand(".jsontype") - .Do(async e => { - Newtonsoft.Json.Linq.JArray data = Newtonsoft.Json.Linq.JArray.Parse(File.ReadAllText("data.json")); - if (data == null || data.Count == 0) return; + }); - var wer = data.Where(jt => jt["Description"].ToString().Length > 120); - var list = wer.Select(jt => { - var obj = new Parse.ParseObject("TypingArticles"); - obj["text"] = jt["Description"].ToString(); - return obj; - }); - await Parse.ParseObject.SaveAllAsync(list); - await e.Send("saved to parse"); + cgb.CreateCommand(".voicetext") + .Description("Enabled or disabled voice to text channel connection. Only people in a certain voice channel will see ") - }); + cgb.CreateCommand(".jsontype") + .Do(async e => { + Newtonsoft.Json.Linq.JArray data = Newtonsoft.Json.Linq.JArray.Parse(File.ReadAllText("data.json")); + if (data == null || data.Count == 0) return; - cgb.CreateCommand(".repeat") - .Do(async e => { - if (e.User.Id != NadekoBot.OwnerID) return; + var wer = data.Where(jt => jt["Description"].ToString().Length > 120); + var list = wer.Select(jt => { + var obj = new Parse.ParseObject("TypingArticles"); + obj["text"] = jt["Description"].ToString(); + return obj; + }); + await Parse.ParseObject.SaveAllAsync(list); + await e.Send("saved to parse"); - string[] notifs = { "Admin use .bye .greet", "Unstable - fixing", "fixing ~ani, ~mang", "join NadekoLog server", "-h is help, .stats",}; - int i = notifs.Length; - while (true) { - await e.Channel.SendMessage($".setgame {notifs[--i]}"); - await Task.Delay(20000); - if (i == 0) i = notifs.Length; - } - }); - */ + }); + + cgb.CreateCommand(".repeat") + .Do(async e => { + if (e.User.Id != NadekoBot.OwnerID) return; + + string[] notifs = { "Admin use .bye .greet", "Unstable - fixing", "fixing ~ani, ~mang", "join NadekoLog server", "-h is help, .stats",}; + int i = notifs.Length; + while (true) { + await e.Channel.SendMessage($".setgame {notifs[--i]}"); + await Task.Delay(20000); + if (i == 0) i = notifs.Length; + } + }); + */ }); } diff --git a/NadekoBot/Modules/Games.cs b/NadekoBot/Modules/Games.cs index 80b420a2..940cec6e 100644 --- a/NadekoBot/Modules/Games.cs +++ b/NadekoBot/Modules/Games.cs @@ -3,16 +3,23 @@ using System.Linq; using Discord.Modules; using NadekoBot.Extensions; using NadekoBot.Commands; +using Newtonsoft.Json.Linq; +using System.IO; //🃏 //🏁 namespace NadekoBot.Modules { class Games : DiscordModule { + private string[] _8BallAnswers; + private Random _r = new Random(); + public Games() : base() { commands.Add(new Trivia()); commands.Add(new SpeedTyping()); commands.Add(new PollCommand()); + + _8BallAnswers = JArray.Parse(File.ReadAllText("data/8ball.json")).Select(t => t.ToString()).ToArray(); } public override void Install(ModuleManager manager) @@ -34,6 +41,17 @@ namespace NadekoBot.Modules await e.Send(list[new Random().Next(0, list.Length)]); }); + cgb.CreateCommand(">8ball") + .Description("Ask the 8ball a yes/no question.") + .Parameter("question",Discord.Commands.ParameterType.Unparsed) + .Do(async e => { + string question = e.GetArg("question").Replace("@everyone","[everyone]"); + if (string.IsNullOrWhiteSpace(question)) + return; + await e.Channel.SendMessage( + $":question: **Question:{question}**\n:crystal_ball: **8Ball Answers:**{_8BallAnswers[_r.Next(0, _8BallAnswers.Length)]}"); + }); + cgb.CreateCommand(">") .Description("Attack a person. Supported attacks: 'splash', 'strike', 'burn', 'surge'.\n**Usage**: > strike @User") .Parameter("attack_type",Discord.Commands.ParameterType.Required) diff --git a/NadekoBot/bin/Debug/data/8ball.json b/NadekoBot/bin/Debug/data/8ball.json new file mode 100644 index 00000000..a8110e75 --- /dev/null +++ b/NadekoBot/bin/Debug/data/8ball.json @@ -0,0 +1,23 @@ +[ + "Most definitely yes", + "For sure", + "As I see it, yes", + "My sources say yes", + "Yes", + "Most likely", + "Perhaps", + "Maybe", + "Not sure", + "It is uncertain", + "Ask me again later", + "Don't count on it", + "Probably not", + "Very doubtful", + "Most likely no", + "Nope", + "No", + "My sources say no", + "Dont even think about it", + "Definitely no", + "NO - It may cause disease contraction" +] \ No newline at end of file