using Discord; using Discord.Addons.Interactive; using Discord.Commands; using Kehyeedra3.Services.Models; using Microsoft.EntityFrameworkCore.Storage; using Microsoft.EntityFrameworkCore.Storage.ValueConversion.Internal; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using ImageMagick; namespace Kehyeedra3.Commands { public class Stuff : InteractiveBase /////////////////////////////////////////////// { [Command("delet"), Summary("Posts a delet this image. Can be used on other channels.")] public async Task DeletThis(ITextChannel channel = null) { string imgdirpath = Path.Combine(Environment.CurrentDirectory, "Delet"); DirectoryInfo imgdir = new DirectoryInfo(imgdirpath); var files = imgdir.GetFiles(); var item = files[Bot._rnd.Next(0, files.Length)]; if (channel == null) { await Context.Channel.SendFileAsync(item.FullName); } else { await channel.SendFileAsync(item.FullName); } } [Command("ratenuts"), Summary("Rates your or another person's sack.")] public async Task RateTrap( string name = null) { int nutRating = SRandom.Next(0, 301); string nuts = "nuts"; if (name == null) { if (Context.User.Id == 534859726090010672) { nutRating -= 60; } if (Context.User.Id == 318478574325596163) { nutRating = SRandom.Next(1000000, 10000000); await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nWarning: King, your african scale boss nuts have reached critical mass at {nutRating}g."); return; } if (Context.User.Id == 242040333309837327 || Context.User.Id == 194538583649026049) { nutRating += 10000; } if (nutRating > 160 && nutRating < 200) { nutRating += SRandom.Next(nutRating, 10001); nuts = "boss nuts"; if (nutRating > 10000) { nutRating = SRandom.Next(nutRating, nutRating + 100101); nuts = "king size boss nuts"; } await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nCongrats king, your {nuts} weigh {nutRating}g."); return; } if (nutRating < 10) { nutRating = SRandom.Next(100, 2001); nuts = "tiny lady nuts"; await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nHope you get better soon, your {nuts} weigh 0.{nutRating}g."); } else { await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYour {nuts} weigh {nutRating}g."); } } else { if (name.Contains("534859726090010672")) { nutRating -= 60; } if (name.Contains("318478574325596163")) { nutRating = SRandom.Next(1000000, 10000000); await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nWarning: {name}'s african scale boss nuts have reached critical mass at {nutRating}g."); return; } if (name.Contains("242040333309837327") || name.Contains("194538583649026049")) { nutRating += 10000; } if (nutRating > 180 && nutRating < 200) { nuts = "boss nuts"; nutRating += SRandom.Next(nutRating, 10001); if (nutRating > 10000) { nutRating = SRandom.Next(nutRating, nutRating + 100101); nuts = "king size boss nuts"; } await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nCongrats {name}, your {nuts} weigh {nutRating}g."); return; } if (nutRating < 10) { nutRating = SRandom.Next(100, 2001); nuts = "tiny lady nuts"; await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nSorry to hear about {name}, those {nuts} weigh 0.{nutRating}g."); } else { await Context.Channel.SendMessageAsync($"{Context.User.Mention}\n{name}'s {nuts} weigh {nutRating}g."); } } } [Command("ratertrap"), Summary("ratertrap")] public async Task RaterTrap() { await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nPlease do not be like this man http://tinyurl.com/y7lj6nob"); } [Command("8b"), Summary("Gives a prediction like a generic 8ball command that every self respecting discord bot must have")] public async Task VapeBall([Remainder] string input) { Random rando = new Random(); string[] predictions = new string[] { "No but you're still gay", "I think so", "Mayhaps", "Yeah but you're still gay", "No kys", "Not today", }; int randomIndex = rando.Next(predictions.Length); string text = predictions[randomIndex]; await ReplyAsync($"{Context.User.Mention}\n{text}"); } [Command("math"), Summary("It's a calculator, that's what compooter do")] public async Task Mathboi([Remainder] string input) { string result = new DataTable().Compute(input, null).ToString(); await Context.Channel.SendMessageAsync($"{Context.User.Mention} {input} = {result}"); } [Command("roll"), Summary("Rolls dice. Eg. 'roll 20'")] public async Task RollDice([Remainder] int input) { int output = SRandom.Next(input+1); await Context.Channel.SendMessageAsync($"{Context.User.Mention}\n{output}"); } [Command("remind"), Summary("Reminds you in a given time. (days, hours, minutes) Eg. 'remind 1 2 3 wash hands' would remind you in 1 day, 2 hours, 3 minutes to wash your hands")] public async Task Reminder(ulong d, ulong h, ulong m, [Remainder] string r = null) { string remin = ""; string refix = ""; ulong sen = (d * 86400) + (h * 3600) + (m * 60); ulong yeedraStamp = DateTime.UtcNow.ToYeedraStamp(); if (r == null) { r = "Fill the text field next time you make a reminder."; } while (m > 59) { h += 1; m -= 60; } while (h > 23) { d += 1; h -= 24; } if (d > 0) { remin += $" {d} day"; if (d > 1) { remin += $"s"; } } if (h > 0) { remin += $" {h} hour"; if (h > 1) { remin += $"s"; } } if (m > 0) { remin += $" {m} minute"; if (m > 1) { remin += $"s"; } } if (d == 0 && h == 0 && m == 0) { refix += "right now"; } else { refix += "in"; } if (sen != 0) { if (sen < 63072000) { var reminder = new Reminder { UserId = Context.User.Id, Message = $"{r}", Created = yeedraStamp, Send = sen + yeedraStamp }; using (var Database = new ApplicationDbContextFactory().CreateDbContext()) { Database.Reminders.Add(reminder); await Database.SaveChangesAsync().ConfigureAwait(false); } } else { await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nAre you sure you need a reminder 2 years in the future..? \nAre you stupid?"); return; } await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nOk, I'll remind you {refix}{remin}."); } else { var dmchannel = await Bot._bot.GetUser(Context.User.Id).CreateDMChannelAsync(); await dmchannel.SendMessageAsync($"**You literally just told me to DM you:**\n\n{r}"); } } [Command("reminders",RunMode = RunMode.Async), Summary("List reminders")] public async Task ListReminders(string manage = null) { ulong d = 0; ulong h = 0; ulong m = 0; string when = ""; string remin = ""; using (var Database = new ApplicationDbContextFactory().CreateDbContext()) { string rlist = ""; var user = Context.User; foreach (Reminder reminder in Database.Reminders) { ulong yeedraStamp = DateTime.UtcNow.ToYeedraStamp(); remin = ""; ulong ago = yeedraStamp - reminder.Created; while (ago > 59) { m += 1; ago -= 60; } while (m > 59) { h += 1; m -= 60; } while (h > 23) { d += 1; h -= 24; } if (d > 0) { remin += $" {d} day"; if (d > 1) { remin += $"s"; } } if (h > 0) { remin += $" {h} hour"; if (h > 1) { remin += $"s"; } } if (m > 0) { remin += $" {m} minute"; if (m > 1) { remin += $"s"; } } if (d == 0 && h == 0 && m == 0) { when = " less than a minute ago."; } else { when = $"{remin} ago."; } m = 0; h = 0; d = 0; if (reminder.UserId == Context.User.Id) { rlist += $"Reminder ID: {reminder.Id} From{when} Contents: *{reminder.Message}*\n"; } } if (rlist == "") { await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou haven't set any reminders."); return; } if (manage == null) { await Context.Channel.SendMessageAsync(rlist); return; } else { await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nWhich reminder would you like to edit?\n\n{rlist}"); var reply = await NextMessageAsync(); ulong rep = ulong.Parse(reply.Content); var rem = Database.Reminders.FirstOrDefault(r => r.Id == rep && r.UserId == Context.User.Id); if (rem == null) { await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou have no such reminder."); return; } else { await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nWhat would you like to do? (edit/remove)"); reply = await NextMessageAsync(); if (reply.Content == "edit") { await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nInsert new reminder message."); reply = await NextMessageAsync(); rem.Message = reply.Content; await Database.SaveChangesAsync(); await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nReminder updated."); } else if (reply.Content == "remove") { Database.Reminders.Remove(rem); await Database.SaveChangesAsync(); await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nReminder removed."); } else { await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nInvalid action."); } } } } } [Command("changenick")] public async Task ChangeNickname(IGuildUser usr = null, [Remainder]string name = null) { using var Database = new ApplicationDbContextFactory().CreateDbContext(); var guild = Database.Guilds.FirstOrDefault(x => x.Id == Context.Guild.Id); if (guild == null) { guild = new Guild { Id = Context.Guild.Id }; Database.Guilds.Add(guild); } if (guild.Changenick) { if (usr == null || usr == Context.User || name == null) { await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYeah you gotta ping someone else and write a name, retard"); return; } else { await usr.ModifyAsync(x => x.Nickname = $"{name}"); await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nLet's fucking goooo"); } } else { await ReplyAsync($"{Context.User.Mention}\nServer admins can enable this command using 'enable changenick'."); } } } }