public Task <Result> Execute(CommandMetadata data) { var leaderboard = ParentPlugin.GetShipLeaderboard(data.Message.GetGuild()); EmbedBuilder builder = new EmbedBuilder(). WithAuthor(ParentPlugin.GuildHandler.BotUser). WithTitle("All ships on " + data.Message.GetGuild().Name + "."); foreach (var pair in leaderboard) { SocketGuildUser shippie = ParentPlugin.GuildHandler.GetUser(pair.Key); string ships = ""; foreach (Shipping.Ship ship in pair.Value) { ships += $"{ParentPlugin.ShipToString (ship)}\n"; } builder.AddField($"{shippie.GetShownName ()} has been shipped {pair.Value.Count} times in the following ships:", ships); } LargeEmbed largeEmbed = new LargeEmbed(); largeEmbed.CreateFrom(builder); return(TaskResult(largeEmbed, null)); }
public async Task <Result> Execute(CommandMetadata metadata, string url) // Perhaps add URLs to the command framework? { (ulong channelId, ulong messageId) = url.ParseMessageUrl(); SocketTextChannel channel = ParentPlugin.GuildHandler.FindTextChannel(channelId); if (channel == null) { throw new ArgumentException($"The message URL does not point to any channel on this server."); } var message = await channel.GetMessageAsync(messageId); if (message == null) { throw new ArgumentException($"The message URL does not point to any message in channel '{channel.Name}'. Perhaps it has been deleted."); } if (message is IUserMessage userMessage) { if (!string.IsNullOrEmpty(userMessage.Content)) { Quote quote = new Quote(userMessage.Content, userMessage.Author.GetShownName(), userMessage.Timestamp.Year); ParentPlugin.AddQuote(quote); return(new Result(ParentPlugin.GetQuoteEmbed(quote), $"Succesfully quoted {userMessage.Author.GetShownName()} in their infinite wisdom.")); } else { throw new ArgumentException($"The message URL points to a message without any text content, perhaps an embed-only message. There must be some raw text to quote."); } } else { throw new ArgumentException($"The message URL points to a non-user message. Only messages sent by users or bots can be used."); } }
public async Task <Result> Execute(CommandMetadata data, string username) { IUser user = ParentPlugin.GuildHandler.GetUser(username); var karma = ParentPlugin.GetKarma(user.Id); return(new Result(await GetKarmaEmbed(karma, user.GetShownName(), 3, ParentPlugin.GuildHandler), string.Empty)); }
public async Task <Result> Execute(CommandMetadata data, string colorName) { SocketGuildUser guildUser = data.Message.Author as SocketGuildUser; IEnumerable <SocketRole> currentRoles = guildUser.Roles.Where(x => ParentPlugin.GetRoles().Any(y => x.Id == y.Id)); SocketRole role = null; foreach (var entry in ParentPlugin.GetRoles()) { string roleName = entry.Name.Substring(ParentPlugin._colourRolePrefix.GetValue().Length).ToUpperInvariant(); if (colorName.ToUpperInvariant() == roleName) { role = entry; break; } } await guildUser.RemoveRolesAsync(currentRoles); if (role != null) { await guildUser.AddRoleAsync(role); } return(new Result(null, role == null ? "Failed to colour you, colour not found." : $"You've been succesfully coloured **{colorName}**!")); }
public Task <Result> Execute(CommandMetadata _, string pluginName) { ParentPlugin.RemovePlugin(pluginName); var state = ParentPlugin.GuildHandler.State; return(TaskResult(state.ChangesToEmbed($"Successfully disabled plugin '{Plugin.GetName(PluginLoader.GetPlugin(pluginName))}' on this server."), string.Empty)); }
public Task <Result> Execute(CommandMetadata metadata, string content, string author, int year) { Quote quote = new Quote(content, author, year); ParentPlugin.AddQuote(quote); return(TaskResult(ParentPlugin.GetQuoteEmbed(quote), $"Succesfully quoted {author} in their eternal brilliancy.")); }
public Task <Result> Execute(CommandMetadata metadata, string content, string author) { Quote quote = new Quote(content, author, DateTime.Now.Year); ParentPlugin.AddQuote(quote); return(TaskResult(ParentPlugin.GetQuoteEmbed(quote), $"Succesfully quoted {author} in their endless genius.")); }
public Task <Result> Execute(CommandMetadata data, int amount) { var allKarma = ParentPlugin.GetKarmaDictionary(); List <SocketGuildUser> inGuild = new List <SocketGuildUser> (); foreach (var entry in allKarma) // Man I'm getting lazy with dictionary type naming. All those generic parameters yo. { SocketGuildUser user = data.Message.GetGuild()?.GetUser(entry.Key); if (user == null) { continue; } inGuild.Add(user); } inGuild.OrderByDescending(x => ParentPlugin.GetKarma(x.Id).Total); inGuild = inGuild.GetRange(0, Math.Min(amount, inGuild.Count)); string result = "```"; foreach (SocketGuildUser user in inGuild) { result += StringExtensions.UniformStrings(user.GetShownName(), ParentPlugin.GetKarma(user.Id).ToString()) + "\n"; } result += "```"; return(TaskResult(inGuild, result)); }
public Task <Result> Execute(CommandMetadata data, int day, int month, int year) { Consent.AssertConsent((data.Author as SocketGuildUser).Guild.Id, data.AuthorID);; DateTime date = new DateTime(year, month, day, 12, 0, 0); ParentPlugin.SetBirthday(data.Message.Author.Id, date); return(TaskResult(null, $"Succesfully set birthday date to **{date.ToShortDateString ()}**.")); }
public Task <Result> Execute(CommandMetadata data, int amount) { var allKarma = ParentPlugin.GetLeaderboard(); return(TaskResult(GetLeaderboardEmbed(allKarma, (x, y) => y.Total - x.Total, x => ParentPlugin.GuildHandler.FindUser(x.UserId), x => x.ToString(), "No one has yet to recieve any karma :(", "Karma Leaderboard", "Top [amount] of karma hoarders are..", amount), string.Empty)); }
public Task <Result> Execute(CommandMetadata data, SocketGuildUser shippieOne, SocketGuildUser shippieTwo) { Shipping.Ship ship = ParentPlugin.Sink(data.Message.Author as SocketGuildUser, shippieOne, shippieTwo, out bool succesful); if (succesful) { return(TaskResult(null, "Succesfully sunk " + ParentPlugin.GetShipName(ship) + ", at least for you.")); } return(TaskResult(null, $"Failed to sink {ParentPlugin.GetShipName (ship)} - You have not shipped them yet.")); }
public Task <Result> Execute(CommandMetadata data, SocketGuildUser shippieOne, SocketGuildUser shippieTwo) { Shipping.Ship ship = ParentPlugin.Ship(data.Message.Author as SocketGuildUser, shippieOne, shippieTwo, out bool succesful); if (succesful) { return(TaskResult(ship, "Succesfully shipped " + shippieOne.GetShownName() + " and " + shippieTwo.GetShownName() + ", now known as " + ParentPlugin.GetShipName(ship) + ".")); } return(TaskResult(ship, $"Failed to ship {shippieOne.GetShownName ()} x {shippieTwo.GetShownName ()} - You've already shipped them.")); }
public Task <Result> Execute(CommandMetadata data, SocketGuildUser shippieOne, SocketGuildUser shippieTwo) { var succesful = ParentPlugin.Sink(data.AuthorID, shippieOne.Id, shippieTwo.Id); if (succesful) { return(TaskResult(true, "Succesfully sunk " + ParentPlugin.GetShipName(ParentPlugin.GetShipByShippies(shippieOne.Id, shippieTwo.Id)) + ", at least for you.")); } return(TaskResult(false, $"Failed to sink that ship, as you have not shipped them yet.")); }
public Task <Result> Execute(CommandMetadata data, SocketGuildUser shippieOne, SocketGuildUser shippieTwo) { var succesful = ParentPlugin.Ship(data.AuthorID, shippieOne.Id, shippieTwo.Id); if (succesful) { return(TaskResult(succesful, "Succesfully shipped " + shippieOne.GetShownName() + " and " + shippieTwo.GetShownName() + ", now known as " + ParentPlugin.GetShipName(ParentPlugin.GetShipByShippies(shippieOne.Id, shippieTwo.Id)) + ".")); } return(TaskResult(succesful, $"Failed to ship {shippieOne.GetShownName ()} x {shippieTwo.GetShownName ()} - You've already shipped them.")); }
public async Task <Result> Execute(CommandMetadata data, string word) { var def = await UrbanDefinition.Get(word, ParentPlugin.EnableHyperlinkReactions); Embed embed = def.ToEmbed(); var message = await data.Message.Channel.SendMessageAsync(null, false, embed); await ParentPlugin.AddNestedDefReactions(def, message); return(new Result(null, string.Empty)); }
public Task <Result> Execute(CommandMetadata metadata, string pluginName) { ParentPlugin.AddPlugin(pluginName); if (ParentPlugin.GuildHandler.Plugins.IsPluginActive(pluginName)) { return(TaskResult(null, $"Succesfully enabled plugin '{Plugin.GetFullName(PluginLoader.GetPlugin(pluginName))}' in this server.")); } else { return(TaskResult(null, $"Failed to add plugin '{pluginName}'. An error may have occured in its initialization.")); } }
public async Task <Result> Execute(CommandMetadata metadata, string query) { JObject result = await ParentPlugin.QueryAsync(SourceUrl, query); Embed embed = ParentPlugin.BuildPageEmbed(result); if (embed == null) { return(new Result(null, "Sorry fam, the wiki fetch failed.")); } return(new Result(embed, string.Empty)); }
public Task <Result> Execute(CommandMetadata data) { var allKarma = ParentPlugin.GetLeaderboard(); var allVotes = allKarma.SelectMany(x => x.GetMessages()).SelectMany(x => _voteSelector(x)); var groups = allVotes.GroupBy(x => x); var dict = groups.ToDictionary(x => x.Key, x => allVotes.Count(y => x.Key == y)); var users = dict.Keys.ToArray(); return(TaskResult(GetLeaderboardEmbed(users, (x, y) => dict[y] - dict[x], x => ParentPlugin.GuildHandler.FindUser(x), x => dict[x].ToString() + " " + _voteType, $"No one has yet to be {_adjective}", $"{_type} Leaderboard", $"The most {_adjective} people on this server are..", dict.Count), string.Empty)); }
public Task <Result> Execute(CommandMetadata data, SocketGuildUser user) { var allShips = ParentPlugin.GetAllShipperShips(user); StringBuilder result = new StringBuilder($"{user.GetShownName ()} has shipped the following ships:```\n"); foreach (Shipping.Ship ship in allShips) { result.Append(ParentPlugin.ShipToString(ship) + "\n"); } result.Append("```"); return(TaskResult(result, result.ToString())); }
public async Task <Result> Execute(CommandMetadata data, string name) { SocketGuildUser user = data.Message.Author as SocketGuildUser; if (user.VoiceChannel != null) { await ParentPlugin.SetCustomName(user.VoiceChannel, name); return(new Result(null, $"Succesfully set custom voice channel name to {name}.")); } return(new Result(null, "You aren't in a voice channel at the moment. At least not on this server.")); }
public Task <Result> Execute(CommandMetadata data, SocketGuildUser user) { var allShips = ParentPlugin.GetAllShipperShips(user); string result = $"{user.GetShownName ()} has shipped the following ships:```\n"; foreach (Shipping.Ship ship in allShips) { result += ParentPlugin.ShipToString(ship) + "\n"; } result += "```"; return(TaskResult(result, result)); }
public Task <Result> Execute(CommandMetadata data, string user) { SocketGuildUser userObj = ParentPlugin.GuildHandler.FindUser(user); if (userObj != null) { return(Execute(data, ParentPlugin.GuildHandler.GetUser(user))); } else { return(TaskResult(null, ParentPlugin.SelectGenerator().Insult(user))); } }
public Task <Result> Execute(CommandMetadata metadata, double value, string from) { Converter fromConverter = ParentPlugin.FindConverter(from); if (fromConverter != null) { Converter toConverter = ParentPlugin.FindRandomOfType(fromConverter.Type, fromConverter); return(Execute(metadata, value, from, toConverter.Name)); // don't question it. } else { throw new InvalidOperationException("Cannot convert from unit type " + from); } }
public Task <Result> Execute(CommandMetadata data) { string message; string suffix; if (ParentPlugin.TryNut(out message)) { suffix = $"You have made me nut {ParentPlugin.AddNutter(data.AuthorID)} time(s) now, be proud mortal."; } else { suffix = "You have failed to make me nut. " + (ParentPlugin.IsPrecious(data.AuthorID) ? "But that's okay I still love you." : "You are worthless."); } return(TaskResult(message + "\n" + suffix, message + "\n" + suffix)); }
public Task <Result> Execute(CommandMetadata data) { var leaderboard = ParentPlugin.GetShipLeaderboard(data.Message.GetGuild()); EmbedBuilder builder = new EmbedBuilder(). WithAuthor(ParentPlugin.GuildHandler.BotUser). WithTitle("All ships on " + data.Message.GetGuild().Name + "."); List <EmbedFieldBuilder> embedFields = new List <EmbedFieldBuilder>(); foreach (var pair in leaderboard) { SocketGuildUser shippie = ParentPlugin.GuildHandler.GetUser(pair.Key); var ships = string.Join("\n", ParentPlugin.GetShippieShips(shippie.Id).Select(x => ParentPlugin.ShipToString(x))); embedFields.Add(new EmbedFieldBuilder().WithName($"{shippie.GetShownName ()} has been shipped {pair.Value.Count} times in the following ships:\n").WithValue(ships)); } LargeEmbed largeEmbed = new LargeEmbed(builder, embedFields); return(TaskResult(largeEmbed, null)); }
public Task <Result> Execute(CommandMetadata metadata, double value, string from, string to) { Converter fromConverter = ParentPlugin.FindConverter(from); Converter toConverter = ParentPlugin.FindConverter(to); if (fromConverter != null && toConverter != null) { value = toConverter.FromSI(toConverter.ToSI(value)); return(TaskResult(value, ParentPlugin.GetConversionString(value, fromConverter, toConverter))); } else if (fromConverter == null) { throw new InvalidOperationException("Cannot convert from unit type " + from); } else if (toConverter == null) { throw new InvalidOperationException("Cannot convert to unit type " + to); } else { throw new InvalidOperationException("You shouldn't be able to get this error message, if you do I'll give you a hug."); } }
public Task <Result> Execute(CommandMetadata data, SocketGuildUser user) { var ships = ParentPlugin.GetShippieShips(user); var catagorized = ships.GroupBy(x => x.GetCompanionTo(user.Id)); EmbedBuilder builder = new EmbedBuilder(); builder.WithAuthor(user). WithTitle("Ships containing " + user.GetShownName() + "."); foreach (var ship in catagorized) { var shippers = ship.Select(x => ParentPlugin.GuildHandler.GetUser(x.Shipper)); SocketGuildUser companion = ParentPlugin.GuildHandler.GetUser(ship.Key); builder.AddField("Shipped with " + companion.GetShownName() + " as " + ParentPlugin.GetShipName(ship.FirstOrDefault()) + " " + ship.Count() + " times by:", string.Join(", ", shippers)); } LargeEmbed largeEmbed = new LargeEmbed(); largeEmbed.CreateFrom(builder); return(TaskResult(largeEmbed, null)); }
public async Task <Result> Execute(CommandMetadata metadata, string pluginName) { Type plugin = PluginLoader.GetPlugin(pluginName); if (plugin != null) { string name = Plugin.GetName(plugin); if (!ParentPlugin.GuildHandler.Plugins.IsPluginActive(pluginName)) { QuestionMessage question = new QuestionMessage($"Are you sure you wish to enable plugin '{name}'?", async() => { ParentPlugin.AddPlugin(pluginName); if (ParentPlugin.GuildHandler.Plugins.IsPluginActive(pluginName)) { var state = ParentPlugin.GuildHandler.State; await metadata.Message.Channel.SendMessageAsync(string.Empty, false, state.ChangesToEmbed($"Succesfully enabled plugin '{name}' on this server.")); } else { IEnumerable <string> exceptions = ParentPlugin.GuildHandler.Plugins.GetInitializationExceptions().Select(x => x.InnerException.Message); await metadata.Message.Channel.SendMessageAsync($"Failed to add plugin '{name}'. Issues occured during initialization:\n\t{string.Join("\n\t", exceptions)}"); } }, async() => await metadata.Message.Channel.SendMessageAsync($"Cancelled enabled plugin '{name}'.")).SetRecipient(metadata.AuthorID); await metadata.Message.Channel.SendMessageAsync(null, false, GetModuleEmbed(PluginLoader.GetPlugin(pluginName))); return(new Result(question, string.Empty)); } else { return(new Result(null, $"Failed to enable plugin: '{name}' is already enabled.")); } } else { return(new Result(null, $"Failed to enable plugin: No available plugins matches '{pluginName}' Check `!plugin available` to get a list of available plugins.")); } }
public async Task <Result> Execute(CommandMetadata data, ulong channelId, ulong messageId) { ITextChannel channel = ParentPlugin.GuildHandler.FindTextChannel(channelId); IMessage message = await channel?.GetMessageAsync(messageId); if (channel == null) { throw new ArgumentException("The channel could not be found."); } if (message == null) { throw new ArgumentException("The message could not be found."); } var karma = ParentPlugin.GetKarma(message.Author.Id); var karmaMessage = karma.GetMessages().FirstOrDefault(x => x.Id == message.Id); if (karmaMessage == null) { throw new ArgumentException("The message given has neither upvotes or downvotes."); } var upvoters = karmaMessage.GetUpvotes().Select(x => ParentPlugin.GuildHandler.FindUser(x)); var downvoters = karmaMessage.GetDownvotes().Select(x => ParentPlugin.GuildHandler.FindUser(x)); string ups = string.Join(", ", upvoters.Select(x => UserToString(x))); string downs = string.Join(", ", downvoters.Select(x => UserToString(x))); string UserToString(IUser user) => user == null ? "*Missing User*" : user.GetShownName(); return(new Result(new EmbedBuilder().WithTitle("Voters of Message") .WithDescription($"> [{message.Content.Replace('\n', ' ')}]({message.GetJumpUrl ()}) - {karmaMessage.ToString()}") .AddField("The following people upvoted the message..", upvoters.Count() == 0 ? "```No one :(```" : $"```{ups}```") .AddField("The following people downvoted the message..", downvoters.Count() == 0 ? "```No one! :)```" : $"```{downs}```") .Build(), string.Empty)); }
public Task <Result> Execute(CommandMetadata _, SocketGuildUser user) { return(TaskResult(null, ParentPlugin.SelectGenerator().Insult(user.GetShownName()))); }