using Discord; using Discord.Addons.Interactive; using Discord.Commands; using Kehyeedra3.Preconditions; using Kehyeedra3.Services.Models; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace Kehyeedra3.Commands { public class Admin : InteractiveBase /////////////////////////////////////////////// { [RequireRolePrecondition(AccessLevel.ServerAdmin)] [Command("adddelet"), Summary("Adds a delet this image to the bot from link or image (admin only)")] public async Task AddDelet() //Listens for attachments { var attachments = Context.Message.Attachments;//Gets attachments as var foreach (var item in attachments) { Uri link = new Uri(item.Url); using (WebClient _webclient = new WebClient()) { string location = Path.Combine(Environment.CurrentDirectory, "delet"); if (!Directory.Exists(location)) Directory.CreateDirectory(location); location += "/" + item.Filename; _webclient.DownloadFileAsync(link, location); } await ReplyAsync($"Delet added"); break; } } [RequireRolePrecondition(AccessLevel.ServerAdmin)] [Command("adddelet"), Summary("Adds a delet this image to the bot from link or image (admin only)")] public async Task AddDelet(string url) //Listens for urls { Uri link = new Uri(url); using (WebClient _webclient = new WebClient()) { string location = Path.Combine(Environment.CurrentDirectory, $"delet"); if (!Directory.Exists(location)) Directory.CreateDirectory(location); location += "/" + Guid.NewGuid() + ".jpg"; _webclient.DownloadFileAsync(link, location); } await ReplyAsync($"Delet added"); } [RequireRolePrecondition(AccessLevel.ServerAdmin)] [Command("say"), Summary("Sends given message to given channel (admin only)")] public async Task Say(ITextChannel channel, [Remainder]string message) { await channel.SendMessageAsync(message); } [RequireRolePrecondition(AccessLevel.BotOwner)] [Command("modifybot"), Summary("I'm goonaa mooodifoo")] public async Task ModifyBot(string _name) { //reference current bot user var BotCurrUser = Bot._bot.CurrentUser; await BotCurrUser.ModifyAsync(x => { //sets name x.Username = _name; }); //reply await ReplyAsync($"Set name to {_name}"); } [RequireRolePrecondition(AccessLevel.BotOwner)] [Command("vbi", RunMode = RunMode.Async)] public async Task VerifyBankIntegrity() { using var Database = new ApplicationDbContextFactory().CreateDbContext(); List users = Database.Users.OrderByDescending(user => user.Money).ToList(); User bank = Database.Users.FirstOrDefault(x => x.Id == 0); int existing = 0; users.ForEach(x => existing += Convert.ToInt32(x.Money)); int difference = 1000000 - existing; string content = ""; if (difference >= 0) { content += $"Current stability is: {existing / 10000d}%\n"; } else { content += $"Current stability is: {(1000000d / existing) * 100}%\n"; } if (difference != 0) { content += "Do you want to stabilize existing economy?"; await Context.Channel.SendMessageAsync($"{content}"); var message = await NextMessageAsync(); if (message != null && message.Content.ToLowerInvariant() == "yes") { bank.Money += difference; await Database.SaveChangesAsync(); if (difference > 0) { await Context.Channel.SendMessageAsync($"Economy has been stabilized by adding {difference / 10000d}% to bank"); } else { await Context.Channel.SendMessageAsync($"Economy has been stabilized by removing {0-difference / 10000d}% from bank"); } } } else { await Context.Channel.SendMessageAsync($"{content}"); } } /* [RequireRolePrecondition(AccessLevel.BotOwner)] [Command("getstamp")] public async Task YeedraStamp() { ulong stamp = DateTime.UtcNow.ToYeedraStamp(); await ReplyAsync($"{Context.User.Mention} {stamp}"); } [RequireRolePrecondition(AccessLevel.BotOwner)] [Command("savefile")] public async Task SaveFile(string fday, string fscore) { string location = Path.Combine(Environment.CurrentDirectory, "drawtasks"); string tlocation = ($"{location}/days.txt"); var attachments = Context.Message.Attachments; string fname = $"{fday}-{fscore}"; if (File.Exists(location + "/days.txt")) { } foreach (var item in attachments) { Uri link = new Uri(item.Url); using (WebClient _webclient = new WebClient()) { if (!Directory.Exists(location)) Directory.CreateDirectory(location); location += ($"/{fday}-{fscore}.jpg"); _webclient.DownloadFileAsync(link, location); } await ReplyAsync($"Post archived"); break; } }*/ } }