public static void createCommand(CommandGroupBuilder builder) { builder.CreateCommand("cookie") .Description("Bot answers with :cookie:") .Do(async e => { Message message = await e.Channel.SendMessage(e.User.Mention + " :cookie::cookie:"); }); }
internal override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand(Module.Prefix + "repeat") .Description("Repeat a message every X minutes. If no parameters are specified, " + "repeat is disabled. Requires manage messages.\n**Usage**:`.repeat 5 Hello there`") .Parameter("minutes", ParameterType.Optional) .Parameter("msg", ParameterType.Unparsed) .AddCheck(SimpleCheckers.ManageMessages()) .Do(async e => { var minutesStr = e.GetArg("minutes"); var msg = e.GetArg("msg"); // if both null, disable if (string.IsNullOrWhiteSpace(msg) && string.IsNullOrWhiteSpace(minutesStr)) { await e.Channel.SendMessage("Repeating disabled").ConfigureAwait(false); Repeater rep; if (repeaters.TryRemove(e.Server, out rep)) { rep.MessageTimer.Stop(); } return; } int minutes; if (!int.TryParse(minutesStr, out minutes) || minutes < 1 || minutes > 1440) { await e.Channel.SendMessage("Invalid value").ConfigureAwait(false); return; } var repeater = repeaters.GetOrAdd( e.Server, s => new Repeater { Interval = minutes * 60 * 1000, RepeatingChannel = e.Channel, RepeatingChannelId = e.Channel.Id, RepeatingServerId = e.Server.Id, }.Start() ); if (!string.IsNullOrWhiteSpace(msg)) { repeater.RepeatingMessage = msg; } repeater.MessageTimer.Stop(); repeater.MessageTimer.Start(); await e.Channel.SendMessage(String.Format("👌 Repeating `{0}` every " + "**{1}** minutes on {2} channel.", repeater.RepeatingMessage, minutes, repeater.RepeatingChannel)) .ConfigureAwait(false); }); }
public override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand("$draw") .Description("Draws a card from the deck.If you supply number [x], she draws up to 5 cards from the deck.\n**Usage**: $draw [x]") .Parameter("count", ParameterType.Optional) .Do(DoFunc()); cgb.CreateCommand("$shuffle") .Alias("$reshuffle") .Description("Reshuffles all cards back into the deck.") .Do(async e => { if (!AllDecks.ContainsKey(e.Server)) { AllDecks.TryAdd(e.Server, new Cards()); } AllDecks[e.Server].Restart(); await e.Channel.SendMessage("Deck reshuffled."); }); }
internal override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand(Module.Prefix + "roll") .Description("Rolls 0-100. If you supply a number [x] it rolls up to 30 normal dice." + $" If you split 2 numbers with letter d (xdy) it will roll x dice from 1 to y. | `{Prefix}roll` or `{Prefix}roll 7` or `{Prefix}roll 3d5`") .Parameter("num", ParameterType.Optional) .Do(RollFunc()); cgb.CreateCommand(Module.Prefix + "rolluo") .Description("Rolls 0-100. If you supply a number [x] it rolls up to 30 normal dice (unordered)." + $" If you split 2 numbers with letter d (xdy) it will roll x dice from 1 to y. | `{Prefix}roll` or `{Prefix}roll` 7 or `{Prefix}roll 3d5`") .Parameter("num", ParameterType.Optional) .Do(RollFunc(false)); cgb.CreateCommand(Module.Prefix + "nroll") .Description($"Rolls in a given range. | `{Prefix}nroll 5` (rolls 0-5) or `{Prefix}nroll 5-15`") .Parameter("range", ParameterType.Required) .Do(NRollFunc()); }
public override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand("t") .Description("Starts a game of trivia.") .Alias("-t") .Do(DoFunc()); cgb.CreateCommand("tl") .Description("Shows a current trivia leaderboard.") .Alias("-tl") .Alias("tlb") .Alias("-tlb") .Do(LbFunc()); cgb.CreateCommand("tq") .Description("Quits current trivia after current question.") .Alias("-tq") .Do(QuitFunc()); }
internal override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand(Module.Prefix + "rank") .Description("Zeigt deinen zurzeitigen Rang an.") .Parameter("user", ParameterType.Unparsed) .Do(e => { if (string.IsNullOrWhiteSpace(e.GetArg("user"))) { long uid = Convert.ToInt64(e.User.Id); LevelData ldm = DbHandler.Instance.FindOne <LevelData>(p => p.UserId == uid); if (ldm != null) { int total = DbHandler.Instance.FindAll <LevelData>(p => true).Count; int rank = GetRank(ldm); e.Channel.SendMessage($"{ e.User.Mention }: LEVEL { ldm.Level } | XP { ldm.CurrentXP }/{ ldm.XPForNextLevel } | TOTAL XP { ldm.TotalXP } | RANK { rank }/{ total }"); } else { e.Channel.SendMessage($"{ e.User.Mention }, dich kenne ich nicht."); } } else { var usr = e.Server.FindUsers(e.GetArg("user")).FirstOrDefault(); if (usr == null) { e.Channel.SendMessage($"{ e.User.Mention }, diesen User kenne ich nicht."); } else { long uid = Convert.ToInt64(usr.Id); LevelData ldm = DbHandler.Instance.FindOne <LevelData>(p => p.UserId == uid); if (ldm != null) { int total = DbHandler.Instance.FindAll <LevelData>(p => true).Count; int rank = GetRank(ldm); e.Channel.SendMessage($"{ e.User.Mention }: **{usr.Name}**\'s Rang > LEVEL { ldm.Level } | XP { ldm.CurrentXP }/{ ldm.XPForNextLevel } | TOTAL XP { ldm.TotalXP } | RANK { rank }/{ total }"); } else { e.Channel.SendMessage($"{ e.User.Mention }, dich kenne ich nicht."); } } } }); }
internal override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand(Module.Prefix + "betray") .Description($"BETRUGS-SPIEL. Betrüge {BotName} in der nächsten Runde." + $"Wenn {BotName} mit dir zusammenarbeitet - Du bekommst Extra-Punkte, {BotName} verliert eine Menge." + $"Wenn {BotName} betrügt - Beide verlieren ein paar Punkte. | `{Prefix}betray`") .Do(async e => { await ReceiveAnswer(e, Answers.Betray).ConfigureAwait(false); }); cgb.CreateCommand(Module.Prefix + "cooperate") .Description($"BETRUGS-SPIEL. Arbeite mit {BotName} zusammen in der nächsten Runde." + $"When {BotName} mit dir zusammenarbeitet - Ihr beide bekommt Bonus-Punkte." + $"Wenn {BotName} betrügt - Du verlierst eine Menge, {BotName} bekommt Bonus-Punkte. | `{Prefix}cooperater`") .Do(async e => { await ReceiveAnswer(e, Answers.Cooperate).ConfigureAwait(false); }); }
internal static void CreateJsonCommand(CommandGroupBuilder group, string name, JToken val, Action <CommandBuilder> cmd_specific) { var cmd = group.CreateCommand(name); foreach (var alias in val["aliases"]) { cmd.Alias(alias.ToString()); } cmd.Description(val["description"].ToString()); cmd_specific(cmd); }
internal override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand(Module.Prefix + "betray") .Description("BETRAY GAME. Betray Wiz Bot next turn." + "If Wiz Bot cooperates - you get extra points, Wiz Bot loses a LOT." + "If Wiz Bot betrays - you both lose some points.") .Do(async e => { await ReceiveAnswer(e, Answers.Betray).ConfigureAwait(false); }); cgb.CreateCommand(Module.Prefix + "cooperate") .Description("BETRAY GAME. Cooperate with Wiz Bot next turn." + "If Wiz Bot cooperates - you both get bonus points." + "If Wiz Bot betrays - you lose A LOT, Wiz Bot gets extra.") .Do(async e => { await ReceiveAnswer(e, Answers.Cooperate).ConfigureAwait(false); }); }
internal override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand(Module.Prefix + "betray") .Description("BETRAY GAME. Betray nadeko next turn." + "If Nadeko cooperates - you get extra points, nadeko loses a LOT." + $"If Nadeko betrays - you both lose some points. | `{Prefix}betray`") .Do(async e => { await ReceiveAnswer(e, Answers.Betray).ConfigureAwait(false); }); cgb.CreateCommand(Module.Prefix + "cooperate") .Description("BETRAY GAME. Cooperate with nadeko next turn." + "If Nadeko cooperates - you both get bonus points." + $"If Nadeko betrays - you lose A LOT, nadeko gets extra. | `{Prefix}cooperater`") .Do(async e => { await ReceiveAnswer(e, Answers.Cooperate).ConfigureAwait(false); }); }
public override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand(">poll") .Description("Creates a poll, only person who has manage server permission can do it.\n**Usage**: >poll Question?;Answer1;Answ 2;A_3") .Parameter("allargs", ParameterType.Unparsed) .Do(e => { if (!e.User.ServerPermissions.ManageChannels) { return; } if (ActivePolls.ContainsKey(e.Server)) { return; } var arg = e.GetArg("allargs"); if (string.IsNullOrWhiteSpace(arg) || !arg.Contains(";")) { return; } var data = arg.Split(';'); if (data.Length < 3) { return; } new Poll(e, data[0], data.Skip(1)); }); cgb.CreateCommand(">pollend") .Description("Stops active poll on this server and prints the results in this channel.") .Do(async e => { if (!e.User.ServerPermissions.ManageChannels) { return; } if (!ActivePolls.ContainsKey(e.Server)) { return; } await ActivePolls[e.Server].StopPoll(e.Channel); }); }
public void Init(CommandGroupBuilder cgb) { cgb.CreateCommand("$draw") .Description("Draws a card from the deck.If you supply number [x], she draws up to 5 cards from the deck.\n**Usage**: $draw [x]") .Parameter("count", ParameterType.Optional) .Do(DoFunc()); cgb.CreateCommand("$shuffle") .Alias("$reshuffle") .Description("Reshuffles all cards back into the deck.") .Do(async e => { AllDecks.AddOrUpdate(e.Server, (s) => new Cards(), (s, c) => { c.Restart(); return(c); }); await e.Channel.SendMessage("Deck reshuffled."); }); }
internal override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand(Module.Prefix + "test") .Alias(Module.Prefix + "guide") .Description($"Sends a readme and a guide links to the channel. | `{Prefix}readme` or `{Prefix}guide`") .Do(async e => await e.Channel.SendMessage("Test Successful").ConfigureAwait(false)); cgb.CreateCommand(Module.Prefix + "setrealname") .Alias(Module.Prefix + "iam") .Description($"Sets your real life name. | `{Prefix}setrealname` or `{Prefix}iam`") .Parameter("realname", ParameterType.Unparsed) .Do(async e => { User user = new User(); user.uid = e.User.Id; user.username = e.User.Name; user.realname = e.GetArg("realname"); var result = await SerializeUserDataAsync(user); await e.Channel.SendMessage(result).ConfigureAwait(false); }); cgb.CreateCommand(Module.Prefix + "realname") .Alias(Module.Prefix + "whois") .Description($"Displays the real name of a mentioned user. | `{Prefix}realname` or `{Prefix}whois`") .Parameter("username", ParameterType.Required) .Do(async e => { string resp = "Could not find the real name of that user."; User user = await DeserializeUserDataAsync(e.GetArg("username")); if (!string.IsNullOrWhiteSpace(user.realname)) { resp = $"Real name of {user.username} is {user.realname}."; } await e.Channel.SendMessage(resp).ConfigureAwait(false); }); }
internal override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand(Module.Prefix + "h") .Alias(Module.Prefix + "help", MidnightBot.BotMention + " help", MidnightBot.BotMention + " h", "~h") .Description("Hilfe-Befehl. | `-h !m q` oder einfach `-h`") .Parameter("module", ParameterType.Unparsed) .Do(HelpFunc()); cgb.CreateCommand(Module.Prefix + "hh") .Description("Hilfe-Befehl. | `-hh !m q` or just `-h` ") .Parameter("command", ParameterType.Unparsed) .Do(NewHelpFunc()); cgb.CreateCommand(Module.Prefix + "hgit") .Description($"commandlist.md Datei erstellung. **Bot Owner Only!** | `{Prefix}hgit`") .AddCheck(SimpleCheckers.OwnerOnly()) .Do(DoGitFunc()); cgb.CreateCommand(Module.Prefix + "readme") .Alias(Module.Prefix + "guide") .Description($"Sendet eine readme und ein Guide verlinkt zum Channel. | `{Prefix}readme` or `{Prefix}guide`") .AddCheck(SimpleCheckers.OwnerOnly()) .Do(async e => await e.Channel.SendMessage( @"**Wiki with all info**: <https://github.com/Midnight-Myth/MidnightBot/wiki> **WINDOWS SETUP GUIDE**: <https://github.com/Midnight-Myth/MidnightBot/blob/master/ComprehensiveGuide.md> **LINUX SETUP GUIDE**: <https://github.com/Midnight-Myth/MidnightBot/blob/master/LinuxSetup.md> **LIST OF COMMANDS**: <https://github.com/Midnight-Myth/MidnightBot/blob/master/commandlist.md>").ConfigureAwait(false)); cgb.CreateCommand(Module.Prefix + "donate") .Alias("~donate") .Description($"Informationen um das Projekt zu unterstützen! | `{Prefix}donate` or `{Prefix}donate`") .Do(async e => { await e.Channel.SendMessage( @"Habt Spaß" ).ConfigureAwait(false); }); }
internal override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand(Module.Prefix + "wowjoke") .Description("Get one of Kwoth's penultimate WoW jokes.") .Do(async e => { if (!jokes.Any()) { jokes = JsonConvert.DeserializeObject <List <WoWJoke> >(File.ReadAllText("data/wowjokes.json")); } await e.Channel.SendMessage(jokes[new Random().Next(0, jokes.Count)].ToString()); }); }
public void Init(CommandGroupBuilder cgb) { cgb.CreateCommand("t") .Description("Starts a game of trivia.") .Alias("-t") .Do(DoFunc()); cgb.CreateCommand("tl") .Description("Shows a current trivia leaderboard.") .Alias("-tl") .Alias("tlb") .Alias("-tlb") .Do(async e => { TriviaGame trivia; if (RunningTrivias.TryGetValue(e.Server.Id, out trivia)) { await e.Channel.SendMessage(trivia.GetLeaderboard()); } else { await e.Channel.SendMessage("No trivia is running on this server."); } }); cgb.CreateCommand("tq") .Description("Quits current trivia after current question.") .Alias("-tq") .Do(async e => { TriviaGame trivia; if (RunningTrivias.TryGetValue(e.Server.Id, out trivia)) { await trivia.StopGame(); } else { await e.Channel.SendMessage("No trivia is running on this server."); } }); }
internal override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand(Module.Prefix + "h") .Alias(Module.Prefix + "help", NadekoBot.BotMention + " help", NadekoBot.BotMention + " h", "~h") .Description("Either shows a help for a single command, or PMs you help link if no arguments are specified.\n**Usage**: '-h !m q' or just '-h' ") .Parameter("command", ParameterType.Unparsed) .Do(HelpFunc()); cgb.CreateCommand(Module.Prefix + "hgit") .Description("Generates the commandlist.md file. **Owner Only!**") .AddCheck(SimpleCheckers.OwnerOnly()) .Do(DoGitFunc()); cgb.CreateCommand(Module.Prefix + "readme") .Alias(Module.Prefix + "guide") .Description("Sends a readme and a guide links to the channel.") .Do(async e => await e.Channel.SendMessage( @"**FULL README**: <https://github.com/Kwoth/NadekoBot/blob/master/README.md> **WINDOWS SETUP GUIDE**: <https://github.com/Kwoth/NadekoBot/blob/master/ComprehensiveGuide.md> **LINUX SETUP GUIDE**: <https://github.com/Kwoth/NadekoBot/blob/master/LinuxSetup.md> **LIST OF COMMANDS**: <https://github.com/Kwoth/NadekoBot/blob/master/commandlist.md>").ConfigureAwait(false)); cgb.CreateCommand(Module.Prefix + "donate") .Alias("~donate") .Description("Instructions for helping the project!") .Do(async e => { await e.Channel.SendMessage( $@"I've created a **paypal** email for nadeko, so if you wish to support the project, you can send your donations to `[email protected]` Don't forget to leave your discord name or id in the message, so that I can reward people who help out. You can join nadekobot server by typing {Module.Prefix}h and you will get an invite in a private message. *If you want to support in some other way or on a different platform, please message me*" ).ConfigureAwait(false); }); }
public override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand("t") .Description("Starts a game of trivia.") .Alias("-t") .Do(DoFunc()); cgb.CreateCommand("tl") .Description("Shows a current trivia leaderboard.") .Alias("-tl") .Alias("tlb") .Alias("-tlb") .Do(async e => { if (runningTrivias.ContainsKey(e.Server)) { await e.Channel.SendMessage(runningTrivias[e.Server].GetLeaderboard()); } else { await e.Channel.SendMessage("No trivia is running on this server."); } }); cgb.CreateCommand("tq") .Description("Quits current trivia after current question.") .Alias("-tq") .Do(async e => { if (runningTrivias.ContainsKey(e.Server)) { runningTrivias[e.Server].StopGame(); } else { await e.Channel.SendMessage("No trivia is running on this server."); } }); }
internal override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand(Module.Prefix + "h") .Alias(Module.Prefix + "help", NadekoBot.BotMention + " help", NadekoBot.BotMention + " h", "~h") .Description($"Either shows a help for a single command, or PMs you help link if no arguments are specified. | `{Prefix}h !m q` or just `{Prefix}h` ") .Parameter("command", ParameterType.Unparsed) .Do(HelpFunc()); cgb.CreateCommand(Module.Prefix + "hgit") .Description($"Generates the commandlist.md file. **Bot Owner Only!** | `{Prefix}hgit`") .AddCheck(SimpleCheckers.OwnerOnly()) .Do(DoGitFunc()); cgb.CreateCommand(Module.Prefix + "readme") .Alias(Module.Prefix + "guide") .Description($"Sends a readme and a guide links to the channel. | `{Prefix}readme` or `{Prefix}guide`") .Do(async e => await e.Channel.SendMessage( @"**Wiki with all info**: <https://github.com/Kwoth/NadekoBot/wiki> **WINDOWS SETUP GUIDE**: <https://github.com/Kwoth/NadekoBot/blob/master/ComprehensiveGuide.md> **LINUX SETUP GUIDE**: <https://github.com/Kwoth/NadekoBot/blob/master/LinuxSetup.md> **LIST OF COMMANDS**: <https://github.com/Kwoth/NadekoBot/blob/master/commandlist.md>").ConfigureAwait(false)); cgb.CreateCommand(Module.Prefix + "donate") .Alias("~donate") .Description($"Instructions for helping the project! | `{Prefix}donate` or `~donate`") .Do(async e => { await e.Channel.SendMessage( $@"You can support the project on patreon. <https://patreon.com/nadekobot> or You can send donations to `[email protected]` Don't forget to leave your discord name or id in the message. **Thank you** ♥️").ConfigureAwait(false); }); }
internal override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand(Prefix + "londonNextMeetup").Alias(NadekoBot.BotMention + " when is the next london meetup?", NadekoBot.BotMention + " when is the next London meetup?", NadekoBot.BotMention + " When is the next London meetup?") .Description("Have de") .Do(e => { var uri = "https://api.meetup.com/London-Deviant-Robot-Comics-movie-games-and-geeks/events?page=1&fields=plain_text_description"; postNextEventToChannel(e, uri); }); cgb.CreateCommand(Prefix + "leedsNextMeetup").Alias(NadekoBot.BotMention + " when is the next leeds meetup?", NadekoBot.BotMention + " when is the next Leeds meetup?", NadekoBot.BotMention + " When is the next Leeds meetup?") .Description("Is deviant test") .Do(e => { var uri = "https://api.meetup.com/Leeds-Deviant-Robot-Comics-movies-games-and-geeks/events?page=1&fields=plain_text_description"; postNextEventToChannel(e, uri); }); cgb.CreateCommand(Prefix + "cambridgeNextMeetup").Alias(NadekoBot.BotMention + " when is the next cambridge meetup?", NadekoBot.BotMention + " when is the next Cambridge meetup?", NadekoBot.BotMention + " When is the next Cambridge meetup?") .Description("Is deviant test") .Do(e => { var uri = "https://api.meetup.com/Cambridge-Deviant-Robot-Comics-movie-games-and-geeks/events?page=1&fields=plain_text_description"; postNextEventToChannel(e, uri); }); }
internal override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand(Module.Prefix + "hs") .Description("Executes a haskell express with LAMBDABOT") .Parameter("command", ParameterType.Unparsed) .Do(e => { var com = e.GetArg("command")?.Trim(); if (string.IsNullOrWhiteSpace(com)) { return; } //send a command and a channel to the queue commandQueue.Enqueue(new KeyValuePair <string, Channel>(com, e.Channel)); }); }
internal override void Init(CommandGroupBuilder cgb) { apiconfigs = JsonConvert.DeserializeObject <List <APIConfig> > (File.ReadAllText("data/apis.json")); foreach (var config in apiconfigs) { var cmd = cgb.CreateCommand(Module.Prefix + config.Names.FirstOrDefault()); var aliases = config.Names.Skip(1); if (aliases.Any()) { cmd.Alias(aliases.Select(x => Module.Prefix + x).ToArray()); } cmd.Parameter("query", ParameterType.Unparsed); cmd.Description($"Queries {config.URL}."); cmd.Do(APIQuery(config)); } }
internal override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand(Module.Prefix + "v+t") .Alias(Module.Prefix + "voice+text") .Description("Creates a text channel for each voice channel only users in that voice channel can see." + "If you are server owner, keep in mind you will see them all the time regardless.") .AddCheck(SimpleCheckers.ManageChannels()) .AddCheck(SimpleCheckers.CanManageRoles) .Do(async e => { try { var config = SpecificConfigurations.Default.Of(e.Server.Id); if (config.VoicePlusTextEnabled == true) { config.VoicePlusTextEnabled = false; foreach (var textChannel in e.Server.TextChannels.Where(c => c.Name.EndsWith("-voice"))) { try { await textChannel.Delete().ConfigureAwait(false); } catch { await e.Channel.SendMessage( ":anger: Error: Most likely i don't have permissions to do this.") .ConfigureAwait(false); return; } } await e.Channel.SendMessage("Successfuly removed voice + text feature.").ConfigureAwait(false); return; } config.VoicePlusTextEnabled = true; await e.Channel.SendMessage("Successfuly enabled voice + text feature. " + "**Make sure the bot has manage roles and manage channels permissions**") .ConfigureAwait(false); } catch (Exception ex) { await e.Channel.SendMessage(ex.ToString()).ConfigureAwait(false); } }); }
internal override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand(Module.Prefix + "slowmode") .Description($"Schaltet Slow Mode um. Wenn AN, Benutzer können nur alle 5 Sekunden eine Nachricht schicken. | `{Prefix}slowmode`") .AddCheck(SimpleCheckers.ManageMessages()) .Do(async e => { ConcurrentDictionary <ulong, DateTime> throwaway; if (RatelimitingChannels.TryRemove(e.Channel.Id, out throwaway)) { await e.Channel.SendMessage("Slow Mode deaktiviert.").ConfigureAwait(false); return; } if (RatelimitingChannels.TryAdd(e.Channel.Id, new ConcurrentDictionary <ulong, DateTime> ())) { await e.Channel.SendMessage("Slow Mode aktivier. " + "Benutzer können nicht mehr als 1 Nachricht, alle 5 Sekunden schicken.") .ConfigureAwait(false); } }); }
public void CreateCommandBasedOnCommandInfo(CommandGroupBuilder cgb, CommandInfo commandInfo) { CommandBuilder command = cgb.CreateCommand(commandInfo.GetSubCommand()) .Description(commandInfo.GetDescription()); List <CommandParam> paramStrings = commandInfo.GetParams(); if (paramStrings == null) { command.Do(commandInfo.GetAction()); return; } foreach (var param in commandInfo.GetParams()) { if (param.IsRequired()) { command.Parameter(param.GetParamName(), ParameterType.Required); continue; } command.Parameter(param.GetParamName()); } command.Do(commandInfo.GetAction()); }
internal override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand(Module.Prefix + "slowmode") .Description($"Toggles slow mode. When ON, users will be able to send only 1 message every 5 seconds. **Needs Manage Messages Permissions.**| `{Prefix}slowmode`") .AddCheck(SimpleCheckers.ManageMessages()) .Do(async e => { ConcurrentDictionary <ulong, DateTime> throwaway; if (RatelimitingChannels.TryRemove(e.Channel.Id, out throwaway)) { await e.Channel.SendMessage("Slow mode disabled.").ConfigureAwait(false); return; } if (RatelimitingChannels.TryAdd(e.Channel.Id, new ConcurrentDictionary <ulong, DateTime>())) { await e.Channel.SendMessage("Slow mode initiated. " + "Users can't send more than 1 message every 5 seconds.") .ConfigureAwait(false); } }); }
internal static void CreateJsonCommand(CommandGroupBuilder group, KeyValuePair <string, JToken> cmdjson, Action <CommandBuilder, JToken> cmd_specific) { var cmd = group.CreateCommand(cmdjson.Key); var val = cmdjson.Value; if (FieldExists(val, "aliases")) { foreach (var alias in val["aliases"]) { cmd.Alias(alias.ToString()); } } if (FieldExists(val, "description")) { cmd.Description(val["description"].ToString()); } if (FieldExists(val, "permissions")) { cmd.MinPermissions(val["permissions"].ToObject <int>()); } cmd_specific(cmd, val); }
internal override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand(Module.Prefix + "leet") .Description($"Converts a text to leetspeak with 6 (1-6) severity levels | `{Module.Prefix}leet 3 Hello`") .Parameter("level", ParameterType.Required) .Parameter("text", ParameterType.Unparsed) .Do(async e => { var text = e.GetArg("text")?.Trim(); var levelStr = e.GetArg("level")?.Trim(); int level; if (!int.TryParse(levelStr, out level)) { return; } if (string.IsNullOrWhiteSpace(text)) { return; } await e.Channel.SendMessage(ToLeet(text, level)).ConfigureAwait(false); }); }
internal override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand($"{Module.Prefix}bmb") .Description("Creates a bomberman game for this channel or join existing one." + " If you are 4th player - Game will start. After game starts " + " everything written in the channel will be autodeleted and treated as a bomberman command." + " only one bomberman game can run at any one time per bot. Game will run at 1FPS." + " You must have manage messages permissions in order to create the game.") .Do(e => { lock (locker) { if (bombGame == null || bombGame.Ended) { if (!e.User.ServerPermissions.ManageMessages || !e.Server.GetUser(NadekoBot.Client.CurrentUser.Id).ServerPermissions.ManageMessages) { e.Channel.SendMessage("Both you and Nadeko need manage messages permissions to start a new bomberman game.").Wait(); } } } }); }
internal override void Init(CommandGroupBuilder cgb) { cgb.CreateCommand(Module.Prefix + "autoassignrole") .Alias(Module.Prefix + "aar") .Description($"Automaticaly assigns a specified role to every user who joins the server. **Needs Manage Roles Permissions.** |`{Prefix}aar` to disable, `{Prefix}aar Role Name` to enable") .Parameter("role", ParameterType.Unparsed) .AddCheck(new SimpleCheckers.ManageRoles()) .Do(async e => { if (!e.Server.CurrentUser.ServerPermissions.ManageRoles) { await e.Channel.SendMessage("I do not have the permission to manage roles.").ConfigureAwait(false); return; } var r = e.GetArg("role")?.Trim(); var config = SpecificConfigurations.Default.Of(e.Server.Id); if (string.IsNullOrWhiteSpace(r)) //if role is not specified, disable { config.AutoAssignedRole = 0; await e.Channel.SendMessage("`Auto assign role on user join is now disabled.`").ConfigureAwait(false); return; } var role = e.Server.FindRoles(r).FirstOrDefault(); if (role == null) { await e.Channel.SendMessage("💢 `Role not found.`").ConfigureAwait(false); return; } config.AutoAssignedRole = role.Id; await e.Channel.SendMessage("`Auto assigned role is set.`").ConfigureAwait(false); }); }