public async Task DmMe() { var interactiveMessageBuilder = new InteractiveMessageBuilder("Psssh, tell me a secret, i promese i won't tell anyone") .WithResponseType(InteractiveTextResponseType.Any) .WithTimeSpan(TimeSpan.FromSeconds(115)) .ListenChannel(await Context.User.GetOrCreateDMChannelAsync()) .AddCriteria(CriteriaType.SourceUser); var interactiveMessage = interactiveMessageBuilder.Build(); var response = await StartInteractiveMessage(interactiveMessage); if (response != null) { await Context.Channel.SendMessageAsync(response.Content); } }
public async Task Channel() { var interactiveMessageBuilder = new InteractiveMessageBuilder("Yo, write a channel, I'll check if it's trully a channel") .WithResponseType(InteractiveTextResponseType.Channel) .AddCriteria(CriteriaType.SourceChannel) .AddCriteria(CriteriaType.SourceUser) .EnableLoop() ; var interactiveMessage = interactiveMessageBuilder.Build(); var response = await StartInteractiveMessage(interactiveMessage); if (response != null) { await Context.Channel.SendMessageAsync(response.Content); } }
public async Task YesOrNo(string option1, string option2) { var interactiveMessageBuilder = new InteractiveMessageBuilder(String.Format("Pick one: `{0}` or `{1}`", option1, option2), "Message2", "Message3!!!") .EnableLoop() .WithCancellationWord("Stop") .SetWrongResponseMessage("wrong3", "wrong2", "wrong") .ListenUsers(Context.User); interactiveMessageBuilder.SetOptions(option1, option2); var interactiveMessage = interactiveMessageBuilder.Build(); var response = await StartInteractiveMessage(interactiveMessage); if (response != null) { await Context.Channel.SendMessageAsync(response.Content); } }
public async Task BuyOrdersSearch([Remainder] string msg) { string theresp = ""; var json = File.ReadAllText("SystemLang/Items.json"); var market = Items.FromJson(json); var items = market.Payload.Items.En; var embed = new EmbedBuilder(); embed.WithTitle("Search results"); embed.WithDescription("Please pick one"); embed.WithColor(new Color(188, 66, 244)); int thecount = 1; int dacount = 0; List <string> theitem = new List <string>(); List <string> pickeditem = new List <string>(); for (long i = 0; i < items.Count(); i++) { var theitems = items[i].ItemName.ToLower(); if (theitems.Contains(msg.ToLower())) { if (dacount == 5) { break; } embed.AddField($"Item {dacount + 1}", theitems, true); int listcount = dacount + 1; theitem.Add(listcount.ToString()); pickeditem.Add(theitems); dacount = dacount + 1; } } if (!theitem.Any()) { await Context.Channel.SendMessageAsync( "No orders were found or you mispelled the item you were looking for. Check spelling or try a different word"); return; } await Context.Channel.SendMessageAsync("", false, embed.Build()); var timeout = 30; //seconds the bot will wait var interactiveMessage = new InteractiveMessageBuilder("Pick the one you want and reply with item number! You have 30s!") //initial message the bot will send .ListenChannels(Context.Channel) //The channels the bot will listen .WithTimeSpan(TimeSpan.FromSeconds(timeout)) //Timeout .ListenUsers(Context.User) //The users the bot will listen .SetWrongResponseMessage("NO! pick one please") // Message sent when a response that isnt in the options is sent .SetTimeoutMessage("Command timed out, use the command again") //Message sent on timeout .SetOptions(theitem.ToArray()) //Options .EnableLoop() //Won't stop asking unless timeout .WithCancellationWord("cancel") //if c is sent, will stop .SetCancelationMessage("Alright, nvm then") //Message sent if the user cancels .Build(); var response = await StartInteractiveMessage(interactiveMessage); for (int i = 0; i < theitem.Count; i++) { if (theitem[i].Contains(response.ToString())) { theresp = theitem[i]; } } switch (theresp) { case "1": theresp = pickeditem[0]; break; case "2": theresp = pickeditem[1]; break; case "3": theresp = pickeditem[2]; break; case "4": theresp = pickeditem[3]; break; case "5": theresp = pickeditem[4]; break; default: theresp = "Wrong Choice"; await Context.Channel.SendMessageAsync("Wrong option picked"); break; } foreach (var res in items) { if (res.ItemName.ToLower().Contains(theresp)) { string apiresponse = ""; var theurl = "https://api.warframe.market/v1/items/" + res.UrlName + "/orders"; try { using (WebClient client = new WebClient()) apiresponse = client.DownloadString(theurl); } catch (WebException e) { await Context.Channel.SendMessageAsync( "There was an error getting the required data from the website, please try again later"); return; } if (apiresponse.Contains("Something bad happened")) { await Context.Channel.SendMessageAsync("Error, please try again in a couple minutes!"); return; } var orders = WFOrders.FromJson(apiresponse); var blah = orders.Payload.Orders; List <KeyValuePair <string, long> > theOrders = new List <KeyValuePair <string, long> >(); foreach (var order in blah) { if (order.OrderType == OrderType.Buy) { theOrders.Add(new KeyValuePair <string, long>(order.User.IngameName, order.Platinum)); } } //theOrders.ToArray(); var mylist = theOrders.OrderByDescending(x => x.Value).ToList(); var embed2 = new EmbedBuilder(); embed2.WithTitle("Top 5 Cheapest orders"); embed2.WithThumbnailUrl( "http://3rdshifters.org/market.png"); embed2.WithColor(new Color(188, 66, 244)); for (int i = 0; i < mylist.Count; i++) { string mystring = mylist[i].ToString(); var replstr = mystring.Replace("[", "Game Name: **"); replstr = replstr.Replace(",", "**\nCost: **"); replstr = replstr.Replace("]", "** Platinum"); if (i == 5) { break; } embed2.AddField($"Order {i + 1}", $"{replstr} "); } await Context.Channel.SendMessageAsync("**Here are results of your order search**", false, embed2.Build()); break; } } }
public async Task PVPBAttleTest(SocketUser user) { int WhoTurnItis = rnd.Next(0, 2); int User1HP = 100; int User2HP = 100; string WhoTurn = null; if (WhoTurnItis == 0) { WhoTurn = Context.User.Username; } else if (WhoTurnItis == 1) { WhoTurn = user.Username; } var msg = await Context.Channel.SendMessageAsync($"{Context.User.Username} has you challanged to a duel {user.Username}! please say `accept` or `deny`, they have 1 minute to respond!"); { var interactiveMessage = new InteractiveMessageBuilder("") .EnableLoop() .SetWrongResponseMessage("please say `accept` or `deny`") .ListenUsers(Context.User, user) .SetOptions("accept", "deny") .WithTimeSpan(TimeSpan.FromMinutes(1)) .SetTimeoutMessage("sorry but the player didn't react in time!") .Build(); var response = await StartInteractiveMessage(interactiveMessage); if (response.Author == user) { if (response != null) { if (response.ToString() == "accept") { await msg.ModifyAsync(x => x.Content = $"The duel has been accepted! it will start in 5 seconds."); await Task.Delay(5000); await msg.ModifyAsync(x => x.Content = $"{Context.User.Username} VS {user.Username}\nIt's {WhoTurn}'s turn\n{Context.User.Username}'s HP: {User1HP}\n{user.Username}'s HP: {User2HP}\nps all you gotta do is say `attack`!"); await response.DeleteAsync(); } else if (response.ToString() == "deny") { await msg.ModifyAsync(x => x.Content = $"Sorry {Context.User.Username} but {user.Username} has denied the battle."); await response.DeleteAsync(); return; } } } } { for (var i = 0; i < 1000; i++) { var interactiveMessage = new InteractiveMessageBuilder("") .EnableLoop() .WithCancellationWord("stop") .SetWrongResponseMessage("just say `attack`!") .ListenUsers(Context.User, user) .SetOptions("attack") .Build(); var response = await StartInteractiveMessage(interactiveMessage); if (response != null) { if (WhoTurnItis == 0) { if (response.Author == user) { await ReplyAndDeleteAsync("It's not your turn.", timeout : TimeSpan.FromSeconds(5)); } else { int damage = rnd.Next(12, 18); int NewHP = User2HP - damage; User2HP = NewHP; if (NewHP <= 0) { await msg.ModifyAsync(x => x.Content = $"{Context.User.Username} has won from {user.Username} with {User1HP} HP left!"); await response.DeleteAsync(); return; } else { WhoTurnItis = 1; await msg.ModifyAsync(x => x.Content = $"{Context.User.Username} VS {user.Username}\nIt's {user.Username}'s turn\n{Context.User.Username}'s HP: {User1HP}\n{user.Username}'s HP: {NewHP}"); } } } else if (WhoTurnItis == 1) { if (response.Author == Context.User) { await ReplyAndDeleteAsync("It's not your turn.", timeout : TimeSpan.FromSeconds(5)); } else { int damage = rnd.Next(12, 18); int NewHP = User1HP - damage; User1HP = NewHP; if (NewHP <= 0) { await msg.ModifyAsync(x => x.Content = $"{user.Username} has won from {Context.User.Username} with {User2HP} HP left!"); await response.DeleteAsync(); return; } else { WhoTurnItis = 0; await msg.ModifyAsync(x => x.Content = $"{Context.User.Username} VS {user.Username}\nIt's {Context.User.Username}'s turn\n{Context.User.Username}'s HP: {NewHP}\n{user.Username}'s HP: {User2HP}"); } } } await Task.Delay(400); await response.DeleteAsync(); } } } }
public async Task PVEBattleTest() { int WhoTurnItis = rnd.Next(0, 2); int User1HP = 100; int EnemeyHP = 100; string WhoTurn = null; if (WhoTurnItis == 0) { WhoTurn = Context.User.Username; } else if (WhoTurnItis == 1) { WhoTurn = "monster"; } var msg = await Context.Channel.SendMessageAsync($"{Context.User.Username} VS Monster\nIt's {Context.User.Username}'s turn\n{Context.User.Username}'s HP: {User1HP}\nMonster's HP: {EnemeyHP}"); { for (var i = 0; i < 1000; i++) { var interactiveMessage = new InteractiveMessageBuilder("") .EnableLoop() .WithCancellationWord("stop") .SetWrongResponseMessage("just say `attack`!") .ListenUsers(Context.User) .SetOptions("attack") .Build(); var response = await StartInteractiveMessage(interactiveMessage); if (response != null) { if (WhoTurnItis == 0) { int damage = rnd.Next(12, 18); int NewHP = EnemeyHP - damage; EnemeyHP = NewHP; if (NewHP <= 0) { await msg.ModifyAsync(x => x.Content = $"{Context.User.Username} has won from Monster with {User1HP} HP left!"); await response.DeleteAsync(); return; } else { WhoTurnItis = 1; await msg.ModifyAsync(x => x.Content = $"{Context.User.Username} VS Monster\nIt's Monster's turn\n{Context.User.Username}'s HP: {User1HP}\nMonster's HP: {NewHP}"); } await Task.Delay(400); await response.DeleteAsync(); await Task.Delay(3000); int Enemydamage = rnd.Next(12, 18); NewHP = User1HP - Enemydamage; User1HP = NewHP; if (NewHP <= 0) { await msg.ModifyAsync(x => x.Content = $"Monster has won from {Context.User.Username} with {EnemeyHP} HP left!"); await response.DeleteAsync(); return; } else { WhoTurnItis = 0; await msg.ModifyAsync(x => x.Content = $"{Context.User.Username} VS Monster\nIt's {Context.User.Username}'s turn\n{Context.User.Username}'s HP: {NewHP}\nMonster's HP: {EnemeyHP}"); } } else if (WhoTurnItis == 1) { if (response.Author == Context.User) { await ReplyAndDeleteAsync("It's not your turn.", timeout : TimeSpan.FromSeconds(5)); } else { int damage = rnd.Next(12, 18); int NewHP = User1HP - damage; User1HP = NewHP; if (NewHP <= 0) { await msg.ModifyAsync(x => x.Content = $"Monster has won from {Context.User.Username} with {EnemeyHP} HP left!"); await response.DeleteAsync(); return; } else { WhoTurnItis = 0; await msg.ModifyAsync(x => x.Content = $"{Context.User.Username} VS Monster\nIt's {Context.User.Username}'s turn\n{Context.User.Username}'s HP: {NewHP}\nMonster's HP: {EnemeyHP}"); } } } } } } }