public async Task DisableAdvancedCommand(AdaCommandContext ctx, [AdaArgumentParameter("Commands to disable. Consult adahelp for list of commands that can be disabled.", true)] params string[] commands) { var gld = ctx.Guild; var chn = ctx.Channel; var msg = ctx.Message; var usr = ctx.User; var cmds = commands; if (cmds.Length == 0) { throw new ArgumentException("You need to list commands you want to disable."); } AdvancedCommandsPlugin.Instance.SetEnabled(cmds.ToArray(), gld.Id, false); var embed = this.PrepareEmbed(EmbedType.Success); embed.AddField(x => { x.IsInline = false; x.Name = "Following commands were disabled"; x.Value = string.Join(", ", cmds); }); await chn.SendMessageAsync("", false, embed); }
public async Task RemoveRss(AdaCommandContext ctx, [AdaArgumentParameter("Mention of the channel to remove the feed from.", true)] ITextChannel channel, [AdaArgumentParameter("URL of the RSS feed.", true)] string url, [AdaArgumentParameter("Tag of the feed to use as title prefix.", false)] string tag) { var gld = ctx.Guild; var chn = ctx.Channel; var msg = ctx.Message; var chf = channel as SocketTextChannel; if (chf == null) { throw new ArgumentException("Invalid channel specified."); } FeedlePlugin.Instance.RemoveFeed(new Uri(url), chf.Id, tag); var embed = this.PrepareEmbed("Success", "Feed was removed successfully.", EmbedType.Success); embed.AddField(x => { x.IsInline = false; x.Name = "Details"; x.Value = string.Concat("Feed pointing to <", url, ">", tag != null ? string.Concat(" and **", tag, "** tag") : "", " was removed from ", chf.Mention, "."); }); await chn.SendMessageAsync("", false, embed); }
public async Task SetColor(AdaCommandContext ctx, [AdaArgumentParameter("Color in RRGGBB format.", true)] string color) { var gld = ctx.Guild as SocketGuild; var chn = ctx.Channel; var msg = ctx.Message; var usr = ctx.User; var clr = Convert.ToUInt32(color, 16); var url = gld.Roles.FirstOrDefault(xr => xr.Name == usr.Id.ToString()) as IRole; if (url == null) { url = await gld.CreateRoleAsync(usr.Id.ToString(), gld.EveryoneRole.Permissions, null, false); await usr.AddRolesAsync(url); } await url.ModifyAsync(x => { x.Color = new s.Color(clr); }); var embed = this.PrepareEmbed("Success", string.Format(usr.Mention, "'s color is now ", clr.ToString("X6")), EmbedType.Success); await chn.SendMessageAsync("", false, embed); }
public async Task ColorSquare(AdaCommandContext ctx, [AdaArgumentParameter("Color in AARRGGBB format.", true)] string color) { var gld = ctx.Guild; var chn = ctx.Channel; var msg = ctx.Message; var usr = ctx.User; using (var ms = new MemoryStream()) using (var bmp = new Bitmap(64, 64, PixelFormat.Format32bppPArgb)) using (var g = Graphics.FromImage(bmp)) { g.CompositingMode = CompositingMode.SourceOver; g.CompositingQuality = CompositingQuality.HighSpeed; var cli = Convert.ToInt32(color, 16); var clr = d.Color.FromArgb(cli); var csb = new SolidBrush(clr); g.Clear(d.Color.Transparent); g.FillRectangle(csb, new Rectangle(Point.Empty, bmp.Size)); g.Flush(); bmp.Save(ms, ImageFormat.Png); ms.Seek(0, SeekOrigin.Begin); await chn.SendFileAsync(ms, "color_square.png", string.Concat(usr.Mention, ", here's a ", cli.ToString("X8"), " square.")); } }
public async Task ListRss(AdaCommandContext ctx) { var gld = ctx.Guild as SocketGuild; var chn = ctx.Channel; var msg = ctx.Message; var usr = ctx.User; var feeds = FeedlePlugin.Instance.GetFeeds(gld.Channels.Select(xch => xch.Id).ToArray()); var sb = new StringBuilder(); foreach (var feed in feeds) { var xch = gld.GetChannel(feed.ChannelId) as SocketTextChannel; sb.AppendFormat("**URL**: <{0}>", feed.FeedUri).AppendLine(); sb.AppendFormat("**Tag**: {0}", feed.Tag).AppendLine(); sb.AppendFormat("**Channel**: {0}", xch.Mention).AppendLine(); sb.AppendLine("---------"); } var embed = this.PrepareEmbed("RSS Feeds", "Listing of all RSS feeds on this server.", EmbedType.Info); embed.AddField(x => { x.IsInline = false; x.Name = "RSS Feeds"; x.Value = sb.Length > 0 ? sb.ToString() : "No feeds are configured."; }); await chn.SendMessageAsync("", false, embed); }
public async Task EditTag(AdaCommandContext ctx, [AdaArgumentParameter("Name of tag to edit.", true)] string name, [AdaArgumentParameter("New contents of the tag.", true)] params string[] contents) { var gld = ctx.Guild; var chn = ctx.Channel; var msg = ctx.Message; var nam = name; var tag = string.Join(" ", contents); if (string.IsNullOrWhiteSpace(nam) || string.IsNullOrWhiteSpace(tag)) { throw new ArgumentException("Tag needs to have a name and contents."); } var wrk = TagPlugin.Instance.EditTag(chn.Id, nam, tag); if (!wrk) { throw new ArgumentException("Failed to edit the tag, a tag with given name does not exist for this channel."); } var embed = this.PrepareEmbed("Success", string.Concat("Edited tag **", nam, "** for this channel."), EmbedType.Success); await chn.SendMessageAsync("", false, embed); }
public async Task DisableStallman(AdaCommandContext ctx) { var gld = ctx.Guild; StallmanPlugin.Instance.Disable(gld.Id); var embed = this.PrepareEmbed("Success", "GNU/Stallman plugin was disabled for this guild.", EmbedType.Success); await ctx.Channel.SendMessageAsync("", false, embed); }
public async Task CreateUuid(AdaCommandContext ctx) { var gld = ctx.Guild; var chn = ctx.Channel; var msg = ctx.Message; var usr = ctx.User; var n1 = Guid.NewGuid().ToString(); var embed = this.PrepareEmbed("Generated UUID", string.Concat(usr.Mention, ", the UUID you requested is ", n1), EmbedType.Info); await chn.SendMessageAsync("", false, embed); }
public async Task AsciiToBase64(AdaCommandContext ctx, [AdaArgumentParameter("ASCII text to convert to Base64.", true)] params string[] ascii_text) { var gld = ctx.Guild; var chn = ctx.Channel; var msg = ctx.Message; var usr = ctx.User; var utf8 = new UTF8Encoding(false); var dat = utf8.GetBytes(string.Join(" ", ascii_text)); var b64 = Convert.ToBase64String(dat); var embed = this.PrepareEmbed("ASCII to Base64", string.Concat(usr.Mention, ": ", b64), EmbedType.Info); await chn.SendMessageAsync("", false, embed); }
public async Task CreateId(AdaCommandContext ctx) { var gld = ctx.Guild; var chn = ctx.Channel; var msg = ctx.Message; var usr = ctx.User; var rng = new Random(); var n3 = rng.Next(); var n2 = BitConverter.GetBytes(n3); var n1 = BitConverter.ToString(n2).Replace("-", "").ToLower().Insert(4, "-"); var embed = this.PrepareEmbed("Generated ID", string.Concat(usr.Mention, ", the ID you requested is ", n1), EmbedType.Info); await chn.SendMessageAsync("", false, embed); }
public async Task Base64ToAscii(AdaCommandContext ctx, [AdaArgumentParameter("Base64 text to convert to ASCII.", true)] params string[] base64_text) { var gld = ctx.Guild; var chn = ctx.Channel; var msg = ctx.Message; var usr = ctx.User; var utf8 = new UTF8Encoding(false); var dat = Convert.FromBase64String(string.Join(" ", base64_text)); var ascii = utf8.GetString(dat); var embed = this.PrepareEmbed("Base64 to ASCII", string.Concat(usr.Mention, ": ", ascii), EmbedType.Info); await chn.SendMessageAsync("", false, embed); }
public async Task ShowTag(AdaCommandContext ctx, [AdaArgumentParameter("Name of tag to display.", true)] params string[] name) { var gld = ctx.Guild; var chn = ctx.Channel; var msg = ctx.Message; var nam = string.Join(" ", name); if (string.IsNullOrWhiteSpace(nam)) { throw new ArgumentException("Need to specify a tag to display."); } var tag = TagPlugin.Instance.GetTag(chn.Id, nam); if (tag == null) { throw new ArgumentException("Invalid tag specified."); } await chn.SendMessageAsync(tag.Contents); }
public async Task RemoveTag(AdaCommandContext ctx, [AdaArgumentParameter("Name of tag to delete.", true)] params string[] name) { var gld = ctx.Guild; var chn = ctx.Channel; var msg = ctx.Message; var nam = string.Join(" ", name); if (string.IsNullOrWhiteSpace(nam)) { throw new ArgumentException("Need to specify a tag to remove."); } var wrk = TagPlugin.Instance.DeleteTag(chn.Id, nam); if (!wrk) { throw new ArgumentException("Invalid tag specified."); } var embed = this.PrepareEmbed("Success", string.Concat("Removed tag **", nam, "** for this channel."), EmbedType.Success); await chn.SendMessageAsync("", false, embed); }
public async Task ShowTags(AdaCommandContext ctx) { var gld = ctx.Guild; var chn = ctx.Channel as SocketTextChannel; var msg = ctx.Message; var tags = TagPlugin.Instance.GetTags(chn.Id); if (tags.Count() > 0) { var embed = this.PrepareEmbed("Tag Plugin", string.Concat("List of tags defined for ", chn.Mention, "."), EmbedType.Info); embed.AddField(x => { x.IsInline = false; x.Name = "Defined tags"; x.Value = string.Join(", ", tags.Select(xtag => string.Concat("**", xtag.Id, "**"))); }); await chn.SendMessageAsync("", false, embed); } else { throw new InvalidOperationException("There are no tags defined for this channel."); } }
public async Task Markov(AdaCommandContext ctx) { var gld = ctx.Guild; var chn = ctx.Channel; var msg = ctx.Message; var usr = ctx.User; var chain = new MarkovChain <string>(1); var rnd = new Random(); var mnt = (string)null; var xmu = msg.MentionedUserIds.Select(xid => gld.GetUserAsync(xid).GetAwaiter().GetResult()); var xmr = msg.MentionedRoleIds.Select(xid => gld.GetRole(xid)); var xmc = msg.MentionedChannelIds.Select(xid => gld.GetChannelAsync(xid).GetAwaiter().GetResult()); if (xmu.Count() == 0 && xmr.Count() == 0 && xmc.Count() == 0) { throw new ArgumentException("Missing mention."); } else if (xmu.Count() > 0) { var mus = xmu.First(); mnt = mus.Mention; var chs = xmc; var maxm = 100; var lstm = -1; var msgs = new List <IMessage>(maxm); var msgt = (IEnumerable <IMessage>)null; while (msgs.Count < maxm && lstm != 0) { foreach (var xch in chs) { var xcn = xch as SocketTextChannel; if (msgs.Count == 0) { msgt = await xcn.GetMessagesAsync(100).Flatten(); msgs.AddRange(msgt.Where(xmsg => xmsg.Author != null && xmsg.Author.Id == mus.Id)); } if ((await xcn.GetMessagesAsync(msgs.OrderByDescending(xm => xm != null ? xm.Timestamp : DateTimeOffset.MinValue).FirstOrDefault(), Direction.Before, Math.Min(100, maxm - msgs.Count)).Flatten()).Count() > 0) { lstm = Math.Max(msgt.Count(), lstm); msgs.AddRange(msgt.Where(xmsg => xmsg.Author != null && xmsg.Author.Id == mus.Id)); } } } foreach (var xmsg in msgs) { chain.Add(xmsg.Content.Split(' '), 1); } } else if (xmr.Count() > 0) { var mrl = xmr.First(); mnt = mrl.Mention; var chs = xmc; var maxm = 100; var lstm = -1; var msgs = new List <IMessage>(maxm); var msgt = (IEnumerable <IMessage>)null; while (msgs.Count < maxm && lstm != 0) { foreach (var xch in chs) { var xcn = xch as SocketTextChannel; if (msgs.Count == 0) { msgt = await xcn.GetMessagesAsync(100).Flatten(); msgs.AddRange(msgt.Where(xmsg => xmsg.Author as SocketGuildUser != null && (xmsg.Author as SocketGuildUser).RoleIds.Contains(mrl.Id))); } if ((await xcn.GetMessagesAsync(msgs.OrderByDescending(xm => xm != null ? xm.Timestamp : DateTimeOffset.MinValue).FirstOrDefault(), Direction.Before, Math.Min(100, maxm - msgs.Count)).Flatten()).Count() > 0) { lstm = Math.Max(msgt.Count(), lstm); msgs.AddRange(msgt.Where(xmsg => xmsg.Author as SocketGuildUser != null && (xmsg.Author as SocketGuildUser).RoleIds.Contains(mrl.Id))); } } } foreach (var xmsg in msgs) { chain.Add(xmsg.Content.Split(' '), 1); } } else if (xmc.Count() > 0) { var mch = xmc.First() as SocketTextChannel; mnt = mch.Mention; var maxm = 500; var msgs = new IMessage[maxm]; var msgi = 0; var msgt = (IEnumerable <IMessage>)null; msgt = await mch.GetMessagesAsync(100).Flatten(); Array.Copy(msgt.ToArray(), 0, msgs, msgi, msgt.Count()); while (msgi < maxm && (msgt = await mch.GetMessagesAsync(msgs.OrderByDescending(xm => xm != null ? xm.Timestamp : DateTimeOffset.MinValue).FirstOrDefault(), Direction.Before, Math.Min(100, maxm - msgi)).Flatten()).Count() > 0) { Array.Copy(msgt.ToArray(), 0, msgs, msgi, msgt.Count()); msgi += msgt.Count(); } foreach (var xmsg in msgs) { chain.Add(xmsg.Content.Split(' '), 1); } } var sentence = string.Join(" ", chain.Chain(rnd)); var embed = this.PrepareEmbed("Markov Chain", string.Concat("Markov chain of ", mnt, ": ", sentence), EmbedType.Info); await chn.SendMessageAsync("", false, embed); }