public async Task Subscriptions() { using (SubDBContext DBContext = DBFactory.Create <SubDBContext>()) { SimpleStopWatch watch = new SimpleStopWatch(); string channelId = Context.Channel.Id.ToString(); var cnnSub = DBContext.CNNSubscribers.FromSql("SELECT * FROM CNNSubscribers WHERE Id = {0} LIMIT 1", channelId).AsNoTracking().FirstOrDefault(); var redditSubs = DBContext.RedditSubscribers.FromSql("SELECT * FROM RedditSubscribers WHERE Id = {0}", channelId).AsNoTracking().ToList(); EmbedBuilder embedBuilder = new EmbedBuilder(); EmbedService.BuildFeedbackEmbed(embedBuilder); embedBuilder.Title = $"Subscriptions for {Context.Channel.Name.UpperFirstChar()}"; embedBuilder.Description = "\n\n"; embedBuilder.Description += $":newspaper: CNN Subscription Status: {(cnnSub == null ? "Not subscribed." : "Currently subscribed.").Bold()}\n\n"; embedBuilder.Description += ":monkey_face: Reddit Subscriptions: "; if (redditSubs == null || redditSubs.Count == 0) { embedBuilder.Description += "Not subscribed to any subreddits.".Bold(); } else { foreach (RedditSubscriber sub in redditSubs) { embedBuilder.Description += $"{sub.Subreddit.Bold()}, "; } embedBuilder.Description = embedBuilder.Description.Substring(0, embedBuilder.Description.Length - 2); } TimeSpan timeTook = watch.Stop(); embedBuilder.WithFooter(footer => { footer.Text = $"⏰ {"Generated in:"} {Math.Round(timeTook.TotalMilliseconds)}ms"; }); await ReplyAsync("", embed : embedBuilder.Build()); } }
public async Task GuildInfo() { DateTime startTime = DateTime.Now; var orderedRoles = Context.Guild.Roles.Where(x => x.IsMentionable).ToList().OrderByDescending(x => x.Permissions.ToString()); EmbedBuilder embedBuilder = new EmbedBuilder(); EmbedService.BuildFeedbackEmbed(embedBuilder); embedBuilder.Title = $"{Context.Guild.Name.ToString()} Info"; embedBuilder.Description = $"{Context.Guild.DefaultChannel.Topic.SpliceText(50)}\n\n{"Roles:".Bold()} "; foreach (IRole role in orderedRoles) { embedBuilder.AppendEmbedDescription($"{role.Mention} ({Context.Guild.Users.Where(x => x.Roles.Contains(role)).Count().ToString().Bold()}), "); } using (BotDBContext DBContext = DBFactory.Create <BotDBContext>()) { embedBuilder.AddField(x => { x.Name = ":desktop: Default Channel"; x.Value = Context.Guild.DefaultChannel.Name; x.IsInline = true; }); embedBuilder.AddField(x => { x.Name = ":man: Users"; x.Value = Context.Guild.MemberCount; x.IsInline = true; }); embedBuilder.AddField(x => { x.Name = ":abc: Text Channels"; x.Value = Context.Guild.TextChannels.Count(); x.IsInline = true; }); embedBuilder.AddField(x => { x.Name = ":speaking_head: Voice Channels"; x.Value = Context.Guild.VoiceChannels.Count(); x.IsInline = true; }); embedBuilder.AddField(x => { x.Name = ":love_letter: Stored Messages"; x.Value = DBContext.Messages.FromSql("SELECT Messages.Id, Messages.ChannelId, TextChannels.GuildId FROM Messages INNER JOIN TextChannels ON TextChannels.Id = Messages.ChannelId WHERE TextChannels.GuildId = {0}", Context.Guild.Id.ToString()).AsNoTracking().Count().ToString(); x.IsInline = true; }); //embedBuilder.AddField(x => { x.Name = ":love_letter: Stored Messages"; x.Value = DBContext.Messages.Where(y => Context.Guild.Channels.FirstOrDefault(z => z.Id.ToString() == y.ChannelId) != null).Count().ToString(); x.IsInline = true; }); embedBuilder.AddField(x => { x.Name = ":camera_with_flash: Multifactor Authentication Level"; x.Value = Enum.GetName(typeof(MfaLevel), Context.Guild.MfaLevel); x.IsInline = true; }); embedBuilder.AddField(x => { x.Name = ":tools: Commands Executed"; x.Value = DBContext.CommandLogs.Where(y => y.GuildId == Context.Guild.Id.ToString()).Count().ToString().Number().Bold(); x.IsInline = true; }); } embedBuilder.WithThumbnailUrl(Context.Guild.IconUrl); embedBuilder.WithFooter(x => { x.Text = $"⏰ Generated in: {Math.Round((DateTime.Now.Subtract(startTime).TotalMilliseconds)).ToString()}ms"; }); await ReplyAsync("", embed : embedBuilder.Build()); }
public async Task Tag([Summary("Retrieves the specified tag.")] string name) { using (BotDBContext DBContext = DBFactory.Create <BotDBContext>()) { ChannelTag selectedTag = DBContext.ChannelTags.FirstOrDefault(x => x.ChannelId == Context.Channel.Id.ToString() && x.Name.ToLower() == name.ToLower()); if (selectedTag != null) { DiscordUser user = DBContext.Users.FirstOrDefault(x => x.Id.ToString() == selectedTag.OwnerId); if (user == null) { await ReplyAsync("", embed : EmbedService.MakeFailFeedbackEmbed("You are not the owner of that!")); return; } EmbedBuilder embedBuilder = new EmbedBuilder(); embedBuilder.WithAuthor(x => { x.Name = user.Username; x.IconUrl = user.AvatarUrl; }); embedBuilder.WithTimestamp(selectedTag.CreatedBy); EmbedService.BuildFeedbackEmbed(embedBuilder); embedBuilder.Description = ""; embedBuilder.AddField(x => { x.Name = name; x.Value = $":notepad_spiral:{selectedTag.Content}"; }); await ReplyAsync("", embed : embedBuilder.Build()); } else { await ReplyAsync("", embed : EmbedService.MakeFailFeedbackEmbed("There's no tag on this channel with that name.")); } } }
public async Task RandomDog() { DateTime startTime = DateTime.Now; using (var typingState = await Context.Channel.EnterTypingState(Config.ImageManipulateTypeTime)) { string result = await HttpService.Get("http://shibe.online/api/shibes?count=1&urls=true&httpsUrls=true"); dynamic obj = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject <List <string> >(result)); EmbedBuilder builder = new EmbedBuilder(); EmbedService.BuildFeedbackEmbed(builder); builder.Description = ""; builder.Title = "Random Dog"; builder.WithImageUrl(obj[0]); builder.WithFooter(footer => { footer.Text = $"⏰ {"Generated in:"} {Math.Round((DateTime.Now.Subtract(startTime).TotalMilliseconds)).ToString()}ms"; }); await ReplyAsync("", embed : builder.Build()); //await Context.Channel.SendFileAsync((Image<Rgba32>)await HttpService.GetImageBitmap(obj[0]), ImageFormat.Png, "random_dog.png"); } }
public async Task UrbanDefine([Summary("The word to define.")][Remainder] string word) { string result = await HttpService.Get($"https://mashape-community-urban-dictionary.p.mashape.com/define?term={word}", new Dictionary <string, string> { { "X-Mashape-Key", Config.MashapeKey } }); Dictionary <string, dynamic> json = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject <Dictionary <string, dynamic> >(result)); if (json["result_type"].ToString() != "no_results") { dynamic randWord = json["list"][MathService.RandomRange(0, json["list"].Count)]; EmbedBuilder embedBuilder = new EmbedBuilder(); EmbedService.BuildFeedbackEmbed(embedBuilder); embedBuilder.Title = $"Urban Dictionary Definition"; embedBuilder.ThumbnailUrl = "http://www.userlogos.org/files/logos/pln_xp/ud.png"; embedBuilder.Description = ""; embedBuilder.AddField(field => { field.Name = $":pencil2: {word}"; field.Value = randWord["definition"]; }); embedBuilder.AddField(field => { field.Name = ":paperclip: Example"; field.Value = randWord["example"]; }); embedBuilder.WithFooter(footer => { footer.Text = $"Written By: {randWord["author"]}"; }); await ReplyAsync("", embed : embedBuilder.Build()); } else { Embed failEmbed = EmbedService.MakeFailFeedbackEmbed($"{word.ToString().Bold()} could not be found."); await ReplyAsync("", embed : failEmbed, lifeTime : Config.FeedbackMessageLifeTime); } }
public async Task <bool> RequestImageAPI(string apiEndpoint, Dictionary <string, string> parameters, bool getUserAvatar) { DateTime startTime = DateTime.Now; if ((!parameters.ContainsKey("Url") || (parameters.ContainsKey("Url") && parameters["Url"] == null) && !getUserAvatar)) { string targetUrl = null; var messages = await Context.Channel.GetMessagesAsync(50).Flatten(); foreach (var msg in messages) { if (msg.Embeds.Count > 0 && msg.Embeds.FirstOrDefault().Image.HasValue) { targetUrl = msg.Embeds.FirstOrDefault().Image?.Url; break; } if (msg.Attachments.Count > 0 && !string.IsNullOrEmpty(msg.Attachments.FirstOrDefault().Url)) { targetUrl = msg.Attachments.FirstOrDefault().Url; break; } } //string targetUrl = (await Context.Channel.GetMessagesAsync(50).Flatten()).Where(x => x.Attachments.Count > 0).FirstOrDefault().Attachments.FirstOrDefault().Url; if (targetUrl == null) { return(false); } if (!parameters.ContainsKey("Url")) { parameters.Add("Url", targetUrl); } else { parameters["Url"] = targetUrl; } } using (await Context.Channel.EnterTypingState(Config.ImageManipulateTypeTime)) { PostBitmapResponse resp = null; IImage imgData = null; //string uploadUrl = ""; if (getUserAvatar) { resp = await HttpService.PostBitmap($"{MagickServerUrl}/api/{apiEndpoint}/", parameters); if (resp.Status.Success && resp.Image != null) { imgData = await ImageService.UploadImage(resp.Image); //uploadUrl = await ImageService.PomfImageUpload(resp.Image); resp.Image.Dispose(); } } else { Image <Rgba32> targetImage = await HttpService.GetImageBitmap(parameters["Url"]); imgData = await ImageService.UploadImage(ImageService.ClampImage(targetImage, Config.MaxGeneratedImageSize, Config.MaxGeneratedImageSize)); parameters["Url"] = imgData.Link; //uploadUrl = await ImageService.PomfImageUpload(ImageService.ClampImage(targetImage, Config.MaxGeneratedImageSize, Config.MaxGeneratedImageSize)); //parameters["Url"] = uploadUrl; resp = await HttpService.PostBitmap($"{MagickServerUrl}/api/{apiEndpoint}/", parameters); if (resp.Status.Success && resp.Image != null) { imgData = await ImageService.UploadImage(resp.Image); resp.Image.Dispose(); targetImage.Dispose(); } else { targetImage.Dispose(); } } if (!resp.Status.Success) { await ReplyAsync("", embed : EmbedService.MakeFailFeedbackEmbed(resp.Status.Message)); return(false); } EmbedBuilder builder = new EmbedBuilder(); EmbedService.BuildFeedbackEmbed(builder); builder.Description = ""; builder.WithImageUrl(imgData.Link); //await Context.Channel.SendFileAsync(resp.Image, System.Drawing.Imaging.ImageFormat.Gif, $"{apiEndpoint}.gif"); builder.WithFooter(footer => { footer.Text = $"⏰ {"Generated in:"} {(DateTime.Now.Subtract(startTime)).ToNiceTime(false)}"; }); await ReplyAsync("", embed : builder.Build()); imgData = null; //if (!getUserAvatar) // await ImageService.DeleteImage(imgData.DeleteHash); return(true); } }