diff --git a/src/NadekoBot/Common/Attributes/Usage.cs b/src/NadekoBot/Common/Attributes/Usage.cs index 97d342ee..391de638 100644 --- a/src/NadekoBot/Common/Attributes/Usage.cs +++ b/src/NadekoBot/Common/Attributes/Usage.cs @@ -1,14 +1,24 @@ using System.Runtime.CompilerServices; using Discord.Commands; using NadekoBot.Services.Impl; +using System.Linq; +using Discord; namespace NadekoBot.Common.Attributes { public class Usage : RemarksAttribute { - public Usage([CallerMemberName] string memberName="") : base(Localization.LoadCommand(memberName.ToLowerInvariant()).Usage) + public Usage([CallerMemberName] string memberName="") : base(Usage.GetUsage(memberName)) { } + + public static string GetUsage(string memberName) + { + var usage = Localization.LoadCommand(memberName.ToLowerInvariant()).Usage; + return string.Join(" or ", usage + .Select(x => Format.Code(x))); + + } } } diff --git a/src/NadekoBot/Common/CommandData.cs b/src/NadekoBot/Common/CommandData.cs index 59712eae..b53ab2ea 100644 --- a/src/NadekoBot/Common/CommandData.cs +++ b/src/NadekoBot/Common/CommandData.cs @@ -3,7 +3,7 @@ public class CommandData { public string Cmd { get; set; } - public string Usage { get; set; } public string Desc { get; set; } + public string[] Usage { get; set; } } } diff --git a/src/NadekoBot/Modules/Gambling/CurrencyEventsCommands.cs b/src/NadekoBot/Modules/Gambling/CurrencyEventsCommands.cs index 4546ea72..0ad3ddf9 100644 --- a/src/NadekoBot/Modules/Gambling/CurrencyEventsCommands.cs +++ b/src/NadekoBot/Modules/Gambling/CurrencyEventsCommands.cs @@ -56,7 +56,7 @@ namespace NadekoBot.Modules.Gambling switch (e) { case CurrencyEvent.Reaction: - await reactionEvent(Context, arg).ConfigureAwait(false); + await ReactionEvent(Context, arg).ConfigureAwait(false); break; case CurrencyEvent.SneakyGameStatus: await SneakyGameStatusEvent(Context, arg).ConfigureAwait(false); @@ -128,7 +128,7 @@ namespace NadekoBot.Modules.Gambling return Task.CompletedTask; } - public async Task reactionEvent(ICommandContext context, int amount) + public async Task ReactionEvent(ICommandContext context, int amount) { if (amount <= 0) amount = 100; diff --git a/src/NadekoBot/NadekoBot.cs b/src/NadekoBot/NadekoBot.cs index 95fd9574..f6a87c11 100644 --- a/src/NadekoBot/NadekoBot.cs +++ b/src/NadekoBot/NadekoBot.cs @@ -61,6 +61,17 @@ namespace NadekoBot if (shardId < 0) throw new ArgumentOutOfRangeException(nameof(shardId)); + //var obj = JsonConvert.DeserializeObject>(File.ReadAllText("./data/command_strings.json")) + // .ToDictionary(x => x.Key, x => new CommandData2 + // { + // Cmd = x.Value.Cmd, + // Desc = x.Value.Desc, + // Usage = x.Value.Usage.Select(y => y.Substring(1, y.Length - 2)).ToArray(), + // }); + + //File.WriteAllText("./data/command_strings.json", JsonConvert.SerializeObject(obj, Formatting.Indented)); + + LogSetup.SetupLogger(); _log = LogManager.GetCurrentClassLogger(); TerribleElevatedPermissionCheck(); diff --git a/src/NadekoBot/Services/Impl/Localization.cs b/src/NadekoBot/Services/Impl/Localization.cs index 438153a0..dc3829ce 100644 --- a/src/NadekoBot/Services/Impl/Localization.cs +++ b/src/NadekoBot/Services/Impl/Localization.cs @@ -137,7 +137,7 @@ namespace NadekoBot.Services.Impl { Cmd = key, Desc = key, - Usage = key, + Usage = new[] { key }, }; return toReturn; diff --git a/src/NadekoBot/data/command_strings.json b/src/NadekoBot/data/command_strings.json index fdd51cd3..ca64fa24 100644 --- a/src/NadekoBot/data/command_strings.json +++ b/src/NadekoBot/data/command_strings.json @@ -2,2056 +2,2968 @@ "h": { "Cmd": "help h", "Desc": "Either shows a help for a single command, or DMs you help link if no arguments are specified.", - "Usage": "`{0}h {0}cmds` or `{0}h`" + "Usage": [ + "{0}h {0}cmds", + "{0}h" + ] }, "hgit": { "Cmd": "hgit", "Desc": "Generates the commandlist.md file.", - "Usage": "`{0}hgit`" + "Usage": [ + "{0}hgit" + ] }, "donate": { "Cmd": "donate", "Desc": "Instructions for helping the project financially.", - "Usage": "`{0}donate`" + "Usage": [ + "{0}donate" + ] }, "modules": { "Cmd": "modules mdls", "Desc": "Lists all bot modules.", - "Usage": "`{0}modules`" + "Usage": [ + "{0}modules" + ] }, "commands": { "Cmd": "commands cmds", "Desc": "List all of the bot's commands from a certain module. You can either specify the full name or only the first few letters of the module name.", - "Usage": "`{0}commands Administration` or `{0}cmds Admin`" + "Usage": [ + "{0}commands Administration", + "{0}cmds Admin" + ] }, "greetdel": { "Cmd": "greetdel grdel", "Desc": "Sets the time it takes (in seconds) for greet messages to be auto-deleted. Set it to 0 to disable automatic deletion.", - "Usage": "`{0}greetdel 0` or `{0}greetdel 30`" + "Usage": [ + "{0}greetdel 0", + "{0}greetdel 30" + ] }, "greet": { "Cmd": "greet", "Desc": "Toggles anouncements on the current channel when someone joins the server.", - "Usage": "`{0}greet`" + "Usage": [ + "{0}greet" + ] }, "greetmsg": { "Cmd": "greetmsg", "Desc": "Sets a new join announcement message which will be shown in the server's channel. Type `%user%` if you want to mention the new member. Using it with no message will show the current greet message. You can use embed json from instead of a regular text, if you want the message to be embedded.", - "Usage": "`{0}greetmsg Welcome, %user%.`" + "Usage": [ + "{0}greetmsg Welcome, %user%." + ] }, "bye": { "Cmd": "bye", "Desc": "Toggles anouncements on the current channel when someone leaves the server.", - "Usage": "`{0}bye`" + "Usage": [ + "{0}bye" + ] }, "byemsg": { "Cmd": "byemsg", "Desc": "Sets a new leave announcement message. Type `%user%` if you want to show the name the user who left. Type `%id%` to show id. Using this command with no message will show the current bye message. You can use embed json from instead of a regular text, if you want the message to be embedded.", - "Usage": "`{0}byemsg %user% has left.`" + "Usage": [ + "{0}byemsg %user% has left." + ] }, "byedel": { "Cmd": "byedel", "Desc": "Sets the time it takes (in seconds) for bye messages to be auto-deleted. Set it to `0` to disable automatic deletion.", - "Usage": "`{0}byedel 0` or `{0}byedel 30`" + "Usage": [ + "{0}byedel 0", + "{0}byedel 30" + ] }, "greetdm": { "Cmd": "greetdm", "Desc": "Toggles whether the greet messages will be sent in a DM (This is separate from greet - you can have both, any or neither enabled).", - "Usage": "`{0}greetdm`" + "Usage": [ + "{0}greetdm" + ] }, "logserver": { "Cmd": "logserver", "Desc": "Enables or Disables ALL log events. If enabled, all log events will log to this channel.", - "Usage": "`{0}logserver enable` or `{0}logserver disable`" + "Usage": [ + "{0}logserver enable", + "{0}logserver disable" + ] }, "logignore": { "Cmd": "logignore", "Desc": "Toggles whether the `.logserver` command ignores this channel. Useful if you have hidden admin channel and public log channel.", - "Usage": "`{0}logignore`" + "Usage": [ + "{0}logignore" + ] }, "userpresence": { "Cmd": "userpresence", "Desc": "Starts logging to this channel when someone from the server goes online/offline/idle.", - "Usage": "`{0}userpresence`" + "Usage": [ + "{0}userpresence" + ] }, "voicepresence": { "Cmd": "voicepresence", "Desc": "Toggles logging to this channel whenever someone joins or leaves a voice channel you are currently in.", - "Usage": "`{0}voicepresence`" + "Usage": [ + "{0}voicepresence" + ] }, "repeatinvoke": { "Cmd": "repeatinvoke repinv", "Desc": "Immediately shows the repeat message on a certain index and restarts its timer.", - "Usage": "`{0}repinv 1`" + "Usage": [ + "{0}repinv 1" + ] }, "repeat": { "Cmd": "repeat", "Desc": "Repeat a message every `X` minutes in the current channel. You can instead specify time of day for the message to be repeated at daily (make sure you've set your server's timezone). You can have up to 5 repeating messages on the server in total.", - "Usage": "`{0}repeat 5 Hello there` or `{0}repeat 17:30 tea time`" + "Usage": [ + "{0}repeat 5 Hello there", + "{0}repeat 17:30 tea time" + ] }, "rotateplaying": { "Cmd": "rotateplaying ropl", "Desc": "Toggles rotation of playing status of the dynamic strings you previously specified.", - "Usage": "`{0}ropl`" + "Usage": [ + "{0}ropl" + ] }, "addplaying": { "Cmd": "addplaying adpl", "Desc": "Adds a specified string to the list of playing strings to rotate. Supported placeholders: `%servers%`, `%users%`, `%playing%`, `%queued%`, `%time%`, `%shardid%`, `%shardcount%`, `%shardguilds%`.", - "Usage": "`{0}adpl`" + "Usage": [ + "{0}adpl" + ] }, "listplaying": { "Cmd": "listplaying lipl", "Desc": "Lists all playing statuses with their corresponding number.", - "Usage": "`{0}lipl`" + "Usage": [ + "{0}lipl" + ] }, "removeplaying": { "Cmd": "removeplaying rmpl repl", "Desc": "Removes a playing string on a given number.", - "Usage": "`{0}rmpl`" + "Usage": [ + "{0}rmpl" + ] }, "slowmode": { "Cmd": "slowmode", "Desc": "Toggles slowmode. Disable by specifying no parameters. To enable, specify a number of messages each user can send, and an interval in seconds. For example 1 message every 5 seconds.", - "Usage": "`{0}slowmode 1 5` or `{0}slowmode`" + "Usage": [ + "{0}slowmode 1 5", + "{0}slowmode" + ] }, "cleanvplust": { "Cmd": "cleanvplust cv+t", "Desc": "Deletes all text channels ending in `-voice` for which voicechannels are not found. Use at your own risk.", - "Usage": "`{0}cleanv+t`" + "Usage": [ + "{0}cleanv+t" + ] }, "voiceplustext": { "Cmd": "voice+text v+t", "Desc": "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.", - "Usage": "`{0}v+t`" + "Usage": [ + "{0}v+t" + ] }, "scsc": { "Cmd": "scsc", "Desc": "Starts an instance of cross server channel. You will get a token as a DM that other people will use to tune in to the same instance.", - "Usage": "`{0}scsc`" + "Usage": [ + "{0}scsc" + ] }, "jcsc": { "Cmd": "jcsc", "Desc": "Joins current channel to an instance of cross server channel using the token.", - "Usage": "`{0}jcsc TokenHere`" + "Usage": [ + "{0}jcsc TokenHere" + ] }, "lcsc": { "Cmd": "lcsc", "Desc": "Leaves a cross server channel instance from this channel.", - "Usage": "`{0}lcsc`" + "Usage": [ + "{0}lcsc" + ] }, "asar": { "Cmd": "asar", "Desc": "Adds a role to the list of self-assignable roles.", - "Usage": "`{0}asar Gamer`" + "Usage": [ + "{0}asar Gamer" + ] }, "rsar": { "Cmd": "rsar", "Desc": "Removes a specified role from the list of self-assignable roles.", - "Usage": "`{0}rsar`" + "Usage": [ + "{0}rsar" + ] }, "lsar": { "Cmd": "lsar", "Desc": "Lists all self-assignable roles.", - "Usage": "`{0}lsar`" + "Usage": [ + "{0}lsar" + ] }, "tesar": { "Cmd": "togglexclsar tesar", "Desc": "Toggles whether the self-assigned roles are exclusive. (So that any person can have only one of the self assignable roles)", - "Usage": "`{0}tesar`" + "Usage": [ + "{0}tesar" + ] }, "iam": { "Cmd": "iam", "Desc": "Adds a role to you that you choose. Role must be on a list of self-assignable roles.", - "Usage": "`{0}iam Gamer`" + "Usage": [ + "{0}iam Gamer" + ] }, "iamnot": { "Cmd": "iamnot iamn", "Desc": "Removes a specified role from you. Role must be on a list of self-assignable roles.", - "Usage": "`{0}iamn Gamer`" + "Usage": [ + "{0}iamn Gamer" + ] }, "addcustreact": { "Cmd": "addcustreact acr", "Desc": "Add a custom reaction with a trigger and a response. Running this command in server requires the Administration permission. Running this command in DM is Bot Owner only and adds a new global custom reaction. Guide here: ", - "Usage": "`{0}acr \"hello\" Hi there %user%`" + "Usage": [ + "{0}acr \"hello\" Hi there %user%" + ] }, "listcustreact": { "Cmd": "listcustreact lcr", "Desc": "Lists global or server custom reactions (20 commands per page). Running the command in DM will list global custom reactions, while running it in server will list that server's custom reactions. Specifying `all` argument instead of the number will DM you a text file with a list of all custom reactions.", - "Usage": "`{0}lcr 1` or `{0}lcr all`" + "Usage": [ + "{0}lcr 1", + "{0}lcr all" + ] }, "listcustreactg": { "Cmd": "listcustreactg lcrg", "Desc": "Lists global or server custom reactions (20 commands per page) grouped by trigger, and show a number of responses for each. Running the command in DM will list global custom reactions, while running it in server will list that server's custom reactions.", - "Usage": "`{0}lcrg 1`" + "Usage": [ + "{0}lcrg 1" + ] }, "showcustreact": { "Cmd": "showcustreact scr", "Desc": "Shows a custom reaction's response on a given ID.", - "Usage": "`{0}scr 1`" + "Usage": [ + "{0}scr 1" + ] }, "delcustreact": { "Cmd": "delcustreact dcr", "Desc": "Deletes a custom reaction on a specific index. If ran in DM, it is bot owner only and deletes a global custom reaction. If ran in a server, it requires Administration privileges and removes server custom reaction.", - "Usage": "`{0}dcr 5`" + "Usage": [ + "{0}dcr 5" + ] }, "autoassignrole": { "Cmd": "autoassignrole aar", "Desc": "Automaticaly assigns a specified role to every user who joins the server.", - "Usage": "`{0}aar` to disable, `{0}aar Role Name` to enable" + "Usage": [ + "{0}aar` to disable, `{0}aar Role Name` to enabl" + ] }, "leave": { "Cmd": "leave", "Desc": "Makes Nadeko leave the server. Either server name or server ID is required.", - "Usage": "`{0}leave 123123123331`" + "Usage": [ + "{0}leave 123123123331" + ] }, "delmsgoncmd": { "Cmd": "delmsgoncmd", "Desc": "Toggles the automatic deletion of the user's successful command message to prevent chat flood.", - "Usage": "`{0}delmsgoncmd`" + "Usage": [ + "{0}delmsgoncmd" + ] }, "restart": { "Cmd": "restart", "Desc": "Restarts the bot. Might not work.", - "Usage": "`{0}restart`" + "Usage": [ + "{0}restart" + ] }, "setrole": { "Cmd": "setrole sr", "Desc": "Sets a role for a given user.", - "Usage": "`{0}sr @User Guest`" + "Usage": [ + "{0}sr @User Guest" + ] }, "removerole": { "Cmd": "removerole rr", "Desc": "Removes a role from a given user.", - "Usage": "`{0}rr @User Admin`" + "Usage": [ + "{0}rr @User Admin" + ] }, "renamerole": { "Cmd": "renamerole renr", "Desc": "Renames a role. The role you are renaming must be lower than bot's highest role.", - "Usage": "`{0}renr \"First role\" SecondRole`" + "Usage": [ + "{0}renr \"First role\" SecondRole" + ] }, "removeallroles": { "Cmd": "removeallroles rar", "Desc": "Removes all roles from a mentioned user.", - "Usage": "`{0}rar @User`" + "Usage": [ + "{0}rar @User" + ] }, "createrole": { "Cmd": "createrole cr", "Desc": "Creates a role with a given name.", - "Usage": "`{0}cr Awesome Role`" + "Usage": [ + "{0}cr Awesome Role" + ] }, "rolecolor": { "Cmd": "rolecolor roleclr", "Desc": "Set a role's color to the hex or 0-255 rgb color value provided.", - "Usage": "`{0}roleclr Admin 255 200 100` or `{0}roleclr Admin ffba55`" + "Usage": [ + "{0}roleclr Admin 255 200 100", + "{0}roleclr Admin ffba55" + ] }, "ban": { "Cmd": "ban b", "Desc": "Bans a user by ID or name with an optional message.", - "Usage": "`{0}b \"@some Guy\" Your behaviour is toxic.`" + "Usage": [ + "{0}b \"@some Guy\" Your behaviour is toxic." + ] }, "softban": { "Cmd": "softban sb", "Desc": "Bans and then unbans a user by ID or name with an optional message.", - "Usage": "`{0}sb \"@some Guy\" Your behaviour is toxic.`" + "Usage": [ + "{0}sb \"@some Guy\" Your behaviour is toxic." + ] }, "kick": { "Cmd": "kick k", "Desc": "Kicks a mentioned user.", - "Usage": "`{0}k \"@some Guy\" Your behaviour is toxic.`" + "Usage": [ + "{0}k \"@some Guy\" Your behaviour is toxic." + ] }, "mute": { "Cmd": "mute", "Desc": "Mutes a mentioned user both from speaking and chatting. You can also specify time in minutes (up to 1440) for how long the user should be muted.", - "Usage": "`{0}mute @Someone` or `{0}mute 30 @Someone`" + "Usage": [ + "{0}mute @Someone", + "{0}mute 30 @Someone" + ] }, "voiceunmute": { "Cmd": "voiceunmute", "Desc": "Gives a previously voice-muted user a permission to speak.", - "Usage": "`{0}voiceunmute @Someguy`" + "Usage": [ + "{0}voiceunmute @Someguy" + ] }, "deafen": { "Cmd": "deafen deaf", "Desc": "Deafens mentioned user or users.", - "Usage": "`{0}deaf \"@Someguy\"` or `{0}deaf \"@Someguy\" \"@Someguy\"`" + "Usage": [ + "{0}deaf \"@Someguy\"", + "{0}deaf \"@Someguy\" \"@Someguy\"" + ] }, "undeafen": { "Cmd": "undeafen undef", "Desc": "Undeafens mentioned user or users.", - "Usage": "`{0}undef \"@Someguy\"` or `{0}undef \"@Someguy\" \"@Someguy\"`" + "Usage": [ + "{0}undef \"@Someguy\"", + "{0}undef \"@Someguy\" \"@Someguy\"" + ] }, "delvoichanl": { "Cmd": "delvoichanl dvch", "Desc": "Deletes a voice channel with a given name.", - "Usage": "`{0}dvch VoiceChannelName`" + "Usage": [ + "{0}dvch VoiceChannelName" + ] }, "creatvoichanl": { "Cmd": "creatvoichanl cvch", "Desc": "Creates a new voice channel with a given name.", - "Usage": "`{0}cvch VoiceChannelName`" + "Usage": [ + "{0}cvch VoiceChannelName" + ] }, "deltxtchanl": { "Cmd": "deltxtchanl dtch", "Desc": "Deletes a text channel with a given name.", - "Usage": "`{0}dtch TextChannelName`" + "Usage": [ + "{0}dtch TextChannelName" + ] }, "creatxtchanl": { "Cmd": "creatxtchanl ctch", "Desc": "Creates a new text channel with a given name.", - "Usage": "`{0}ctch TextChannelName`" + "Usage": [ + "{0}ctch TextChannelName" + ] }, "settopic": { "Cmd": "settopic st", "Desc": "Sets a topic on the current channel.", - "Usage": "`{0}st My new topic`" + "Usage": [ + "{0}st My new topic" + ] }, "setchanlname": { "Cmd": "setchanlname schn", "Desc": "Changes the name of the current channel.", - "Usage": "`{0}schn NewName`" + "Usage": [ + "{0}schn NewName" + ] }, "prune": { "Cmd": "prune clear", "Desc": "`{0}prune` removes all Nadeko's messages in the last 100 messages. `{0}prune X` removes last `X` number of messages from the channel (up to 100). `{0}prune @Someone` removes all Someone's messages in the last 100 messages. `{0}prune @Someone X` removes last `X` number of 'Someone's' messages in the channel.", - "Usage": "`{0}prune` or `{0}prune 5` or `{0}prune @Someone` or `{0}prune @Someone X`" + "Usage": [ + "{0}prune", + "{0}prune 5", + "{0}prune @Someone", + "{0}prune @Someone X" + ] }, "die": { "Cmd": "die", "Desc": "Shuts the bot down.", - "Usage": "`{0}die`" + "Usage": [ + "{0}die" + ] }, "setname": { "Cmd": "setname newnm", "Desc": "Gives the bot a new name.", - "Usage": "`{0}newnm BotName`" + "Usage": [ + "{0}newnm BotName" + ] }, "setnick": { "Cmd": "setnick", "Desc": "Changes the nickname of the bot on this server. You can also target other users to change their nickname.", - "Usage": "`{0}setnick BotNickname` or `{0}setnick @SomeUser New Nickname`" + "Usage": [ + "{0}setnick BotNickname", + "{0}setnick @SomeUser New Nickname" + ] }, "setavatar": { "Cmd": "setavatar setav", "Desc": "Sets a new avatar image for the NadekoBot. Argument is a direct link to an image.", - "Usage": "`{0}setav http://i.imgur.com/xTG3a1I.jpg`" + "Usage": [ + "{0}setav http://i.imgur.com/xTG3a1I.jpg" + ] }, "setgame": { "Cmd": "setgame", "Desc": "Sets the bots game.", - "Usage": "`{0}setgame with snakes`" + "Usage": [ + "{0}setgame with snakes" + ] }, "send": { "Cmd": "send", "Desc": "Sends a message to someone on a different server through the bot. Separate server and channel/user ids with `|` and prefix the channel id with `c:` and the user id with `u:`.", - "Usage": "`{0}send serverid|c:channelid message` or `{0}send serverid|u:userid message`" + "Usage": [ + "{0}send serverid|c:channelid message", + "{0}send serverid|u:userid message" + ] }, "mentionrole": { "Cmd": "mentionrole menro", "Desc": "Mentions every person from the provided role or roles (separated by a ',') on this server.", - "Usage": "`{0}menro RoleName`" + "Usage": [ + "{0}menro RoleName" + ] }, "unstuck": { "Cmd": "unstuck", "Desc": "Clears the message queue.", - "Usage": "`{0}unstuck`" + "Usage": [ + "{0}unstuck" + ] }, "donators": { "Cmd": "donators", "Desc": "List of the lovely people who donated to keep this project alive.", - "Usage": "`{0}donators`" + "Usage": [ + "{0}donators" + ] }, "donadd": { "Cmd": "donadd", "Desc": "Add a donator to the database.", - "Usage": "`{0}donadd Donate Amount`" + "Usage": [ + "{0}donadd Donate Amount" + ] }, "savechat": { "Cmd": "savechat", "Desc": "Saves a number of messages to a text file and sends it to you.", - "Usage": "`{0}savechat 150`" + "Usage": [ + "{0}savechat 150" + ] }, "remind": { "Cmd": "remind", "Desc": "Sends a message to you or a channel after certain amount of time. First argument is `me`/`here`/'channelname'. Second argument is time in a descending order (mo>w>d>h>m) example: 1w5d3h10m. Third argument is a (multiword) message.", - "Usage": "`{0}remind me 1d5h Do something` or `{0}remind #general 1m Start now!`" + "Usage": [ + "{0}remind me 1d5h Do something", + "{0}remind #general 1m Start now!" + ] }, "remindtemplate": { "Cmd": "remindtemplate", "Desc": "Sets message for when the remind is triggered. Available placeholders are `%user%` - user who ran the command, `%message%` - Message specified in the remind, `%target%` - target channel of the remind.", - "Usage": "`{0}remindtemplate %user%, do %message%!`" + "Usage": [ + "{0}remindtemplate %user%, do %message%!" + ] }, "serverinfo": { "Cmd": "serverinfo sinfo", "Desc": "Shows info about the server the bot is on. If no server is supplied, it defaults to current one.", - "Usage": "`{0}sinfo Some Server`" + "Usage": [ + "{0}sinfo Some Server" + ] }, "channelinfo": { "Cmd": "channelinfo cinfo", "Desc": "Shows info about the channel. If no channel is supplied, it defaults to current one.", - "Usage": "`{0}cinfo #some-channel`" + "Usage": [ + "{0}cinfo #some-channel" + ] }, "userinfo": { "Cmd": "userinfo uinfo", "Desc": "Shows info about the user. If no user is supplied, it defaults a user running the command.", - "Usage": "`{0}uinfo @SomeUser`" + "Usage": [ + "{0}uinfo @SomeUser" + ] }, "whosplaying": { "Cmd": "whosplaying whpl", "Desc": "Shows a list of users who are playing the specified game.", - "Usage": "`{0}whpl Overwatch`" + "Usage": [ + "{0}whpl Overwatch" + ] }, "inrole": { "Cmd": "inrole", "Desc": "Lists every person from the specified role on this server. You can use role ID, role name.", - "Usage": "`{0}inrole Some Role`" + "Usage": [ + "{0}inrole Some Role" + ] }, "checkmyperms": { "Cmd": "checkmyperms", "Desc": "Checks your user-specific permissions on this channel.", - "Usage": "`{0}checkmyperms`" + "Usage": [ + "{0}checkmyperms" + ] }, "stats": { "Cmd": "stats", "Desc": "Shows some basic stats for Nadeko.", - "Usage": "`{0}stats`" + "Usage": [ + "{0}stats" + ] }, "userid": { "Cmd": "userid uid", "Desc": "Shows user ID.", - "Usage": "`{0}uid` or `{0}uid @SomeGuy`" + "Usage": [ + "{0}uid", + "{0}uid @SomeGuy" + ] }, "channelid": { "Cmd": "channelid cid", "Desc": "Shows current channel ID.", - "Usage": "`{0}cid`" + "Usage": [ + "{0}cid" + ] }, "serverid": { "Cmd": "serverid sid", "Desc": "Shows current server ID.", - "Usage": "`{0}sid`" + "Usage": [ + "{0}sid" + ] }, "roles": { "Cmd": "roles", "Desc": "List roles on this server or a roles of a specific user if specified. Paginated, 20 roles per page.", - "Usage": "`{0}roles 2` or `{0}roles @Someone`" + "Usage": [ + "{0}roles 2", + "{0}roles @Someone" + ] }, "channeltopic": { "Cmd": "channeltopic ct", "Desc": "Sends current channel's topic as a message.", - "Usage": "`{0}ct`" + "Usage": [ + "{0}ct" + ] }, "chnlfilterinv": { "Cmd": "chnlfilterinv cfi", "Desc": "Toggles automatic deletion of invites posted in the channel. Does not negate the `{0}srvrfilterinv` enabled setting. Does not affect the Bot Owner.", - "Usage": "`{0}cfi`" + "Usage": [ + "{0}cfi" + ] }, "srvrfilterinv": { "Cmd": "srvrfilterinv sfi", "Desc": "Toggles automatic deletion of invites posted in the server. Does not affect the Bot Owner.", - "Usage": "`{0}sfi`" + "Usage": [ + "{0}sfi" + ] }, "chnlfilterwords": { "Cmd": "chnlfilterwords cfw", "Desc": "Toggles automatic deletion of messages containing filtered words on the channel. Does not negate the `{0}srvrfilterwords` enabled setting. Does not affect the Bot Owner.", - "Usage": "`{0}cfw`" + "Usage": [ + "{0}cfw" + ] }, "filterword": { "Cmd": "fw", "Desc": "Adds or removes (if it exists) a word from the list of filtered words. Use`{0}sfw` or `{0}cfw` to toggle filtering.", - "Usage": "`{0}fw poop`" + "Usage": [ + "{0}fw poop" + ] }, "lstfilterwords": { "Cmd": "lstfilterwords lfw", "Desc": "Shows a list of filtered words.", - "Usage": "`{0}lfw`" + "Usage": [ + "{0}lfw" + ] }, "srvrfilterwords": { "Cmd": "srvrfilterwords sfw", "Desc": "Toggles automatic deletion of messages containing filtered words on the server. Does not affect the Bot Owner.", - "Usage": "`{0}sfw`" + "Usage": [ + "{0}sfw" + ] }, "permrole": { "Cmd": "permrole pr", "Desc": "Sets a role which can change permissions. Supply no parameters to see the current one. Default is 'Nadeko'.", - "Usage": "`{0}pr role`" + "Usage": [ + "{0}pr role" + ] }, "verbose": { "Cmd": "verbose v", "Desc": "Sets whether to show when a command/module is blocked.", - "Usage": "`{0}verbose true`" + "Usage": [ + "{0}verbose true" + ] }, "srvrmdl": { "Cmd": "srvrmdl sm", "Desc": "Sets a module's permission at the server level.", - "Usage": "`{0}sm ModuleName enable`" + "Usage": [ + "{0}sm ModuleName enable" + ] }, "srvrcmd": { "Cmd": "srvrcmd sc", "Desc": "Sets a command's permission at the server level.", - "Usage": "`{0}sc \"command name\" disable`" + "Usage": [ + "{0}sc \"command name\" disable" + ] }, "rolemdl": { "Cmd": "rolemdl rm", "Desc": "Sets a module's permission at the role level.", - "Usage": "`{0}rm ModuleName enable MyRole`" + "Usage": [ + "{0}rm ModuleName enable MyRole" + ] }, "rolecmd": { "Cmd": "rolecmd rc", "Desc": "Sets a command's permission at the role level.", - "Usage": "`{0}rc \"command name\" disable MyRole`" + "Usage": [ + "{0}rc \"command name\" disable MyRole" + ] }, "chnlmdl": { "Cmd": "chnlmdl cm", "Desc": "Sets a module's permission at the channel level.", - "Usage": "`{0}cm ModuleName enable SomeChannel`" + "Usage": [ + "{0}cm ModuleName enable SomeChannel" + ] }, "chnlcmd": { "Cmd": "chnlcmd cc", "Desc": "Sets a command's permission at the channel level.", - "Usage": "`{0}cc \"command name\" enable SomeChannel`" + "Usage": [ + "{0}cc \"command name\" enable SomeChannel" + ] }, "usrmdl": { "Cmd": "usrmdl um", "Desc": "Sets a module's permission at the user level.", - "Usage": "`{0}um ModuleName enable SomeUsername`" + "Usage": [ + "{0}um ModuleName enable SomeUsername" + ] }, "usrcmd": { "Cmd": "usrcmd uc", "Desc": "Sets a command's permission at the user level.", - "Usage": "`{0}uc \"command name\" enable SomeUsername`" + "Usage": [ + "{0}uc \"command name\" enable SomeUsername" + ] }, "allsrvrmdls": { "Cmd": "allsrvrmdls asm", "Desc": "Enable or disable all modules for your server.", - "Usage": "`{0}asm [enable/disable]`" + "Usage": [ + "{0}asm [enable/disable]" + ] }, "allchnlmdls": { "Cmd": "allchnlmdls acm", "Desc": "Enable or disable all modules in a specified channel.", - "Usage": "`{0}acm enable #SomeChannel`" + "Usage": [ + "{0}acm enable #SomeChannel" + ] }, "allrolemdls": { "Cmd": "allrolemdls arm", "Desc": "Enable or disable all modules for a specific role.", - "Usage": "`{0}arm [enable/disable] MyRole`" + "Usage": [ + "{0}arm [enable/disable] MyRole" + ] }, "userblacklist": { "Cmd": "ubl", "Desc": "Either [add]s or [rem]oves a user specified by a Mention or an ID from a blacklist.", - "Usage": "`{0}ubl add @SomeUser` or `{0}ubl rem 12312312313`" + "Usage": [ + "{0}ubl add @SomeUser", + "{0}ubl rem 12312312313" + ] }, "channelblacklist": { "Cmd": "cbl", "Desc": "Either [add]s or [rem]oves a channel specified by an ID from a blacklist.", - "Usage": "`{0}cbl rem 12312312312`" + "Usage": [ + "{0}cbl rem 12312312312" + ] }, "serverblacklist": { "Cmd": "sbl", "Desc": "Either [add]s or [rem]oves a server specified by a Name or an ID from a blacklist.", - "Usage": "`{0}sbl add 12312321312` or `{0}sbl rem SomeTrashServer`" + "Usage": [ + "{0}sbl add 12312321312", + "{0}sbl rem SomeTrashServer" + ] }, "cmdcooldown": { "Cmd": "cmdcooldown cmdcd", "Desc": "Sets a cooldown per user for a command. Set it to 0 to remove the cooldown.", - "Usage": "`{0}cmdcd \"some cmd\" 5`" + "Usage": [ + "{0}cmdcd \"some cmd\" 5" + ] }, "allcmdcooldowns": { "Cmd": "allcmdcooldowns acmdcds", "Desc": "Shows a list of all commands and their respective cooldowns.", - "Usage": "`{0}acmdcds`" + "Usage": [ + "{0}acmdcds" + ] }, "addquote": { "Cmd": ".", "Desc": "Adds a new quote with the specified name and message.", - "Usage": "`{0}. sayhi Hi`" + "Usage": [ + "{0}. sayhi Hi" + ] }, "showquote": { "Cmd": "..", "Desc": "Shows a random quote with a specified name.", - "Usage": "`{0}.. abc`" + "Usage": [ + "{0}.. abc" + ] }, "quotesearch": { "Cmd": "qsearch", "Desc": "Shows a random quote for a keyword that contains any text specified in the search.", - "Usage": "`{0}qsearch keyword text`" + "Usage": [ + "{0}qsearch keyword text" + ] }, "quoteid": { "Cmd": "quoteid qid", "Desc": "Displays the quote with the specified ID number. Quote ID numbers can be found by typing `.liqu [num]` where `[num]` is a number of a page which contains 15 quotes.", - "Usage": "`{0}qid 123456`" + "Usage": [ + "{0}qid 123456" + ] }, "quotedelete": { "Cmd": "quotedel qdel", "Desc": "Deletes a quote with the specified ID. You have to be either server Administrator or the creator of the quote to delete it.", - "Usage": "`{0}qdel 123456`" + "Usage": [ + "{0}qdel 123456" + ] }, "draw": { "Cmd": "draw", "Desc": "Draws a card from this server's deck. You can draw up to 10 cards by supplying a number of cards to draw.", - "Usage": "`{0}draw` or `{0}draw 5`" + "Usage": [ + "{0}draw", + "{0}draw 5" + ] }, "drawnew": { "Cmd": "drawnew", "Desc": "Draws a card from the NEW deck of cards. You can draw up to 10 cards by supplying a number of cards to draw.", - "Usage": "`{0}drawnew` or `{0}drawnew 5`" + "Usage": [ + "{0}drawnew", + "{0}drawnew 5" + ] }, "shuffleplaylist": { "Cmd": "shuffle sh plsh", "Desc": "Shuffles the current playlist.", - "Usage": "`{0}plsh`" + "Usage": [ + "{0}plsh" + ] }, "flip": { "Cmd": "flip", "Desc": "Flips coin(s) - heads or tails, and shows an image.", - "Usage": "`{0}flip` or `{0}flip 3`" + "Usage": [ + "{0}flip", + "{0}flip 3" + ] }, "betflip": { "Cmd": "betflip bf", "Desc": "Bet to guess will the result be heads or tails. Guessing awards you 1.95x the currency you've bet (rounded up). Multiplier can be changed by the bot owner.", - "Usage": "`{0}bf 5 heads` or `{0}bf 3 t`" + "Usage": [ + "{0}bf 5 heads", + "{0}bf 3 t" + ] }, "roll": { "Cmd": "roll", "Desc": "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`. `Y` can be a letter 'F' if you want to roll fate dice instead of dnd.", - "Usage": "`{0}roll` or `{0}roll 7` or `{0}roll 3d5` or `{0}roll 5dF`" + "Usage": [ + "{0}roll", + "{0}roll 7", + "{0}roll 3d5", + "{0}roll 5dF" + ] }, "rolluo": { "Cmd": "rolluo", "Desc": "Rolls `X` normal dice (up to 30) unordered. If you split 2 numbers with letter `d` (`xdy`) it will roll `X` dice from 1 to `y`.", - "Usage": "`{0}rolluo` or `{0}rolluo 7` or `{0}rolluo 3d5`" + "Usage": [ + "{0}rolluo", + "{0}rolluo 7", + "{0}rolluo 3d5" + ] }, "nroll": { "Cmd": "nroll", "Desc": "Rolls in a given range.", - "Usage": "`{0}nroll 5` (rolls 0-5) or `{0}nroll 5-15`" + "Usage": [ + "{0}nroll 5` (rolls 0-5", + "{0}nroll 5-15" + ] }, "race": { "Cmd": "race", "Desc": "Starts a new animal race.", - "Usage": "`{0}race`" + "Usage": [ + "{0}race" + ] }, "joinrace": { "Cmd": "joinrace jr", "Desc": "Joins a new race. You can specify an amount of currency for betting (optional). You will get YourBet*(participants-1) back if you win.", - "Usage": "`{0}jr` or `{0}jr 5`" + "Usage": [ + "{0}jr", + "{0}jr 5" + ] }, "nunchi": { "Cmd": "nunchi", "Desc": "Creates or joins an existing nunchi game. Users have to count up by 1 from the starting number shown by the bot. If someone makes a mistake (types an incorrent number, or repeats the same number) they are out of the game and a new round starts without them. Minimum 3 users required.", - "Usage": "`{0}nunchi`" + "Usage": [ + "{0}nunchi" + ] }, "connect4": { "Cmd": "connect4 con4", "Desc": "Creates or joins an existing connect4 game. 2 players are required for the game. Objective of the game is to get 4 of your pieces next to each other in a vertical, horizontal or diagonal line.", - "Usage": "`{0}connect4`" + "Usage": [ + "{0}connect4" + ] }, "raffle": { "Cmd": "raffle", "Desc": "Prints a name and ID of a random user from the online list from the (optional) role.", - "Usage": "`{0}raffle` or `{0}raffle RoleName`" + "Usage": [ + "{0}raffle", + "{0}raffle RoleName" + ] }, "give": { "Cmd": "give", "Desc": "Give someone a certain amount of currency.", - "Usage": "`{0}give 1 @SomeGuy`" + "Usage": [ + "{0}give 1 @SomeGuy" + ] }, "award": { "Cmd": "award", "Desc": "Awards someone a certain amount of currency. You can also specify a role name to award currency to all users in a role.", - "Usage": "`{0}award 100 @person` or `{0}award 5 Role Of Gamblers`" + "Usage": [ + "{0}award 100 @person", + "{0}award 5 Role Of Gamblers" + ] }, "take": { "Cmd": "take", "Desc": "Takes a certain amount of currency from someone.", - "Usage": "`{0}take 1 @SomeGuy`" + "Usage": [ + "{0}take 1 @SomeGuy" + ] }, "betroll": { "Cmd": "betroll br", "Desc": "Bets a certain amount of currency and rolls a dice. Rolling over 66 yields x2 of your currency, over 90 - x4 and 100 x10.", - "Usage": "`{0}br 5`" + "Usage": [ + "{0}br 5" + ] }, "wheeloffortune": { "Cmd": "wheeloffortune wheel", "Desc": "Bets a certain amount of currency on the wheel of fortune. Wheel can stop on one of many different multipliers. Won amount is rounded down to the nearest whole number.", - "Usage": "`{0}wheel 10`" + "Usage": [ + "{0}wheel 10" + ] }, "leaderboard": { "Cmd": "leaderboard lb", "Desc": "Displays the bot's currency leaderboard.", - "Usage": "`{0}lb`" + "Usage": [ + "{0}lb" + ] }, "trivia": { "Cmd": "trivia t", "Desc": "Starts a game of trivia. You can add `nohint` to prevent hints. First player to get to 10 points wins by default. You can specify a different number. 30 seconds per question.", - "Usage": "`{0}t` or `{0}t 5 nohint`" + "Usage": [ + "{0}t", + "{0}t 5 nohint" + ] }, "tl": { "Cmd": "tl", "Desc": "Shows a current trivia leaderboard.", - "Usage": "`{0}tl`" + "Usage": [ + "{0}tl" + ] }, "tq": { "Cmd": "tq", "Desc": "Quits current trivia after current question.", - "Usage": "`{0}tq`" + "Usage": [ + "{0}tq" + ] }, "typestart": { "Cmd": "typestart", "Desc": "Starts a typing contest.", - "Usage": "`{0}typestart`" + "Usage": [ + "{0}typestart" + ] }, "typestop": { "Cmd": "typestop", "Desc": "Stops a typing contest on the current channel.", - "Usage": "`{0}typestop`" + "Usage": [ + "{0}typestop" + ] }, "typeadd": { "Cmd": "typeadd", "Desc": "Adds a new article to the typing contest.", - "Usage": "`{0}typeadd wordswords`" + "Usage": [ + "{0}typeadd wordswords" + ] }, "pollend": { "Cmd": "pollend", "Desc": "Stops active poll on this server and prints the results in this channel.", - "Usage": "`{0}pollend`" + "Usage": [ + "{0}pollend" + ] }, "pick": { "Cmd": "pick", "Desc": "Picks the currency planted in this channel. 60 seconds cooldown.", - "Usage": "`{0}pick`" + "Usage": [ + "{0}pick" + ] }, "plant": { "Cmd": "plant", "Desc": "Spend an amount of currency to plant it in this channel. Default is 1. (If bot is restarted or crashes, the currency will be lost)", - "Usage": "`{0}plant` or `{0}plant 5`" + "Usage": [ + "{0}plant", + "{0}plant 5" + ] }, "gencurrency": { "Cmd": "gencurrency gc", "Desc": "Toggles currency generation on this channel. Every posted message will have chance to spawn currency. Chance is specified by the Bot Owner. (default is 2%)", - "Usage": "`{0}gc`" + "Usage": [ + "{0}gc" + ] }, "leet": { "Cmd": "leet", "Desc": "Converts a text to leetspeak with 6 (1-6) severity levels", - "Usage": "`{0}leet 3 Hello`" + "Usage": [ + "{0}leet 3 Hello" + ] }, "choose": { "Cmd": "choose", "Desc": "Chooses a thing from a list of things", - "Usage": "`{0}choose Get up;Sleep;Sleep more`" - }, - "": { - "Cmd": null, - "Desc": null, - "Usage": null + "Usage": [ + "{0}choose Get up;Sleep;Sleep more" + ] }, "rps": { "Cmd": "rps", "Desc": "Play a game of Rocket-Paperclip-Scissors with Nadeko.", - "Usage": "`{0}rps scissors`" + "Usage": [ + "{0}rps scissors" + ] }, "linux": { "Cmd": "linux", "Desc": "Prints a customizable Linux interjection", - "Usage": "`{0}linux Spyware Windows`" + "Usage": [ + "{0}linux Spyware Windows" + ] }, "next": { "Cmd": "next n", "Desc": "Goes to the next song in the queue. You have to be in the same voice channel as the bot. You can skip multiple songs, but in that case songs will not be requeued if {0}rcs or {0}rpl is enabled.", - "Usage": "`{0}n` or `{0}n 5`" + "Usage": [ + "{0}n", + "{0}n 5" + ] }, "play": { "Cmd": "play start", "Desc": "If no arguments are specified, acts as `{0}next 1` command. If you specify a song number, it will jump to that song. If you specify a search query, acts as a `{0}q` command", - "Usage": "`{0}play` or `{0}play 5` or `{0}play Dream Of Venice`" + "Usage": [ + "{0}play", + "{0}play 5", + "{0}play Dream Of Venice" + ] }, "stop": { "Cmd": "stop s", "Desc": "Stops the music and preserves the current song index. Stays in the channel.", - "Usage": "`{0}s`" + "Usage": [ + "{0}s" + ] }, "destroy": { "Cmd": "destroy d", "Desc": "Completely stops the music and unbinds the bot from the channel. (may cause weird behaviour)", - "Usage": "`{0}d`" + "Usage": [ + "{0}d" + ] }, "pause": { "Cmd": "pause p", "Desc": "Pauses or Unpauses the song.", - "Usage": "`{0}p`" + "Usage": [ + "{0}p" + ] }, "queue": { "Cmd": "queue q yq", "Desc": "Queue a song using keywords or a link. Bot will join your voice channel. **You must be in a voice channel**.", - "Usage": "`{0}q Dream Of Venice`" + "Usage": [ + "{0}q Dream Of Venice" + ] }, "queuenext": { "Cmd": "queuenext qn", "Desc": "Works the same as `{0}queue` command, except it enqueues the new song after the current one. **You must be in a voice channel**.", - "Usage": "`{0}qn Dream Of Venice`" + "Usage": [ + "{0}qn Dream Of Venice" + ] }, "queuesearch": { "Cmd": "queuesearch qs yqs", "Desc": "Search for top 5 youtube song result using keywords, and type the index of the song to play that song. Bot will join your voice channel. **You must be in a voice channel**.", - "Usage": "`{0}qs Dream Of Venice`" + "Usage": [ + "{0}qs Dream Of Venice" + ] }, "soundcloudqueue": { "Cmd": "soundcloudqueue sq", "Desc": "Queue a soundcloud song using keywords. Bot will join your voice channel. **You must be in a voice channel**.", - "Usage": "`{0}sq Dream Of Venice`" + "Usage": [ + "{0}sq Dream Of Venice" + ] }, "listqueue": { "Cmd": "listqueue lq", "Desc": "Lists 10 currently queued songs per page. Default page is 1.", - "Usage": "`{0}lq` or `{0}lq 2`" + "Usage": [ + "{0}lq", + "{0}lq 2" + ] }, "nowplaying": { "Cmd": "nowplaying np", "Desc": "Shows the song that the bot is currently playing.", - "Usage": "`{0}np`" + "Usage": [ + "{0}np" + ] }, "volume": { "Cmd": "volume vol", "Desc": "Sets the music playback volume (0-100%)", - "Usage": "`{0}vol 50`" + "Usage": [ + "{0}vol 50" + ] }, "defvol": { "Cmd": "defvol dv", "Desc": "Sets the default music volume when music playback is started (0-100). Persists through restarts.", - "Usage": "`{0}dv 80`" + "Usage": [ + "{0}dv 80" + ] }, "max": { "Cmd": "max", "Desc": "Sets the music playback volume to 100%.", - "Usage": "`{0}max`" + "Usage": [ + "{0}max" + ] }, "half": { "Cmd": "half", "Desc": "Sets the music playback volume to 50%.", - "Usage": "`{0}half`" + "Usage": [ + "{0}half" + ] }, "playlist": { "Cmd": "playlist pl", "Desc": "Queues up to 500 songs from a youtube playlist specified by a link, or keywords.", - "Usage": "`{0}pl playlist link or name`" + "Usage": [ + "{0}pl playlist lin", + "ame" + ] }, "soundcloudpl": { "Cmd": "soundcloudpl scpl", "Desc": "Queue a Soundcloud playlist using a link.", - "Usage": "`{0}scpl soundcloudseturl`" + "Usage": [ + "{0}scpl soundcloudseturl" + ] }, "localpl": { "Cmd": "localplaylst lopl", "Desc": "Queues all songs from a directory.", - "Usage": "`{0}lopl C:/music/classical`" + "Usage": [ + "{0}lopl C:/music/classical" + ] }, "radio": { "Cmd": "radio ra", "Desc": "Queues a radio stream from a link. It can be a direct mp3 radio stream, .m3u, .pls .asx or .xspf (Usage Video: )", - "Usage": "`{0}ra radio link here`" + "Usage": [ + "{0}ra radio link here" + ] }, "local": { "Cmd": "local lo", "Desc": "Queues a local file by specifying a full path.", - "Usage": "`{0}lo C:/music/mysong.mp3`" + "Usage": [ + "{0}lo C:/music/mysong.mp3" + ] }, "move": { "Cmd": "move mv", "Desc": "Moves the bot to your voice channel. (works only if music is already playing)", - "Usage": "`{0}mv`" + "Usage": [ + "{0}mv" + ] }, "songremove": { "Cmd": "songremove srm", "Desc": "Remove a song by its # in the queue, or 'all' to remove all songs from the queue and reset the song index.", - "Usage": "`{0}srm 5`" + "Usage": [ + "{0}srm 5" + ] }, "movesong": { "Cmd": "movesong ms", "Desc": "Moves a song from one position to another.", - "Usage": "`{0}ms 5>3`" + "Usage": [ + "{0}ms 5>3" + ] }, "setmaxqueue": { "Cmd": "setmaxqueue smq", "Desc": "Sets a maximum queue size. Supply 0 or no argument to have no limit.", - "Usage": "`{0}smq 50` or `{0}smq`" + "Usage": [ + "{0}smq 50", + "{0}smq" + ] }, "cleanup": { "Cmd": "cleanup", "Desc": "Cleans up hanging voice connections.", - "Usage": "`{0}cleanup`" + "Usage": [ + "{0}cleanup" + ] }, "reptcursong": { "Cmd": "reptcursong rcs", "Desc": "Toggles repeat of current song.", - "Usage": "`{0}rcs`" + "Usage": [ + "{0}rcs" + ] }, "repeatpl": { "Cmd": "rpeatplaylst rpl", "Desc": "Toggles repeat of all songs in the queue (every song that finishes is added to the end of the queue).", - "Usage": "`{0}rpl`" + "Usage": [ + "{0}rpl" + ] }, "save": { "Cmd": "save", "Desc": "Saves a playlist under a certain name. Playlist name must be no longer than 20 characters and must not contain dashes.", - "Usage": "`{0}save classical1`" + "Usage": [ + "{0}save classical1" + ] }, "streamrole": { "Cmd": "streamrole", "Desc": "Sets a role which is monitored for streamers (FromRole), and a role to add if a user from 'FromRole' is streaming (AddRole). When a user from 'FromRole' starts streaming, they will receive an 'AddRole'. Provide no arguments to disable", - "Usage": "`{0}streamrole \"Eligible Streamers\" \"Featured Streams\"`" + "Usage": [ + "{0}streamrole \"Eligible Streamers\" \"Featured Streams\"" + ] }, "load": { "Cmd": "load", "Desc": "Loads a saved playlist using its ID. Use `{0}pls` to list all saved playlists and `{0}save` to save new ones.", - "Usage": "`{0}load 5`" + "Usage": [ + "{0}load 5" + ] }, "playlists": { "Cmd": "playlists pls", "Desc": "Lists all playlists. Paginated, 20 per page. Default page is 0.", - "Usage": "`{0}pls 1`" + "Usage": [ + "{0}pls 1" + ] }, "deleteplaylist": { "Cmd": "deleteplaylist delpls", "Desc": "Deletes a saved playlist. Works only if you made it or if you are the bot owner.", - "Usage": "`{0}delpls animu-5`" + "Usage": [ + "{0}delpls animu-5" + ] }, "goto": { "Cmd": "goto", "Desc": "Goes to a specific time in seconds in a song.", - "Usage": "`{0}goto 30`" + "Usage": [ + "{0}goto 30" + ] }, "autoplay": { "Cmd": "autoplay ap", "Desc": "Toggles autoplay - When the song is finished, automatically queue a related Youtube song. (Works only for Youtube songs and when queue is empty)", - "Usage": "`{0}ap`" + "Usage": [ + "{0}ap" + ] }, "lolchamp": { "Cmd": "lolchamp", "Desc": "Shows League Of Legends champion statistics. If there are spaces/apostrophes or in the name - omit them. Optional second parameter is a role.", - "Usage": "`{0}lolchamp Riven` or `{0}lolchamp Annie sup`" + "Usage": [ + "{0}lolchamp Riven", + "{0}lolchamp Annie sup" + ] }, "lolban": { "Cmd": "lolban", "Desc": "Shows top banned champions ordered by ban rate.", - "Usage": "`{0}lolban`" + "Usage": [ + "{0}lolban" + ] }, "smashcast": { "Cmd": "smashcast hb", "Desc": "Notifies this channel when a certain user starts streaming.", - "Usage": "`{0}smashcast SomeStreamer`" + "Usage": [ + "{0}smashcast SomeStreamer" + ] }, "twitch": { "Cmd": "twitch tw", "Desc": "Notifies this channel when a certain user starts streaming.", - "Usage": "`{0}twitch SomeStreamer`" + "Usage": [ + "{0}twitch SomeStreamer" + ] }, "mixer": { "Cmd": "mixer bm", "Desc": "Notifies this channel when a certain user starts streaming.", - "Usage": "`{0}mixer SomeStreamer`" + "Usage": [ + "{0}mixer SomeStreamer" + ] }, "removestream": { "Cmd": "removestream rms", "Desc": "Removes notifications of a certain streamer from a certain platform on this channel.", - "Usage": "`{0}rms Twitch SomeGuy` or `{0}rms mixer SomeOtherGuy`" + "Usage": [ + "{0}rms Twitch SomeGuy", + "{0}rms mixer SomeOtherGuy" + ] }, "liststreams": { "Cmd": "liststreams ls", "Desc": "Lists all streams you are following on this server.", - "Usage": "`{0}ls`" + "Usage": [ + "{0}ls" + ] }, "convert": { "Cmd": "convert", "Desc": "Convert quantities. Use `{0}convertlist` to see supported dimensions and currencies.", - "Usage": "`{0}convert m km 1000`" + "Usage": [ + "{0}convert m km 1000" + ] }, "convertlist": { "Cmd": "convertlist", "Desc": "List of the convertible dimensions and currencies.", - "Usage": "`{0}convertlist`" + "Usage": [ + "{0}convertlist" + ] }, "wowjoke": { "Cmd": "wowjoke", "Desc": "Get one of Kwoth's penultimate WoW jokes.", - "Usage": "`{0}wowjoke`" + "Usage": [ + "{0}wowjoke" + ] }, "calculate": { "Cmd": "calculate calc", "Desc": "Evaluate a mathematical expression.", - "Usage": "`{0}calc 1+1`" + "Usage": [ + "{0}calc 1+1" + ] }, "osu": { "Cmd": "osu", "Desc": "Shows osu stats for a player.", - "Usage": "`{0}osu Name` or `{0}osu Name taiko`" + "Usage": [ + "{0}osu Name", + "{0}osu Name taiko" + ] }, "osub": { "Cmd": "osub", "Desc": "Shows information about an osu beatmap.", - "Usage": "`{0}osub https://osu.ppy.sh/s/127712`" + "Usage": [ + "{0}osub https://osu.ppy.sh/s/127712" + ] }, "osu5": { "Cmd": "osu5", "Desc": "Displays a user's top 5 plays.", - "Usage": "`{0}osu5 Name`" + "Usage": [ + "{0}osu5 Name" + ] }, "pokemon": { "Cmd": "pokemon poke", "Desc": "Searches for a pokemon.", - "Usage": "`{0}poke Sylveon`" + "Usage": [ + "{0}poke Sylveon" + ] }, "pokemonability": { "Cmd": "pokemonability pokeab", "Desc": "Searches for a pokemon ability.", - "Usage": "`{0}pokeab overgrow`" + "Usage": [ + "{0}pokeab overgrow" + ] }, "memelist": { "Cmd": "memelist", "Desc": "Pulls a list of memes you can use with `{0}memegen` from http://memegen.link/templates/", - "Usage": "`{0}memelist`" + "Usage": [ + "{0}memelist" + ] }, "memegen": { "Cmd": "memegen", "Desc": "Generates a meme from memelist with top and bottom text.", - "Usage": "`{0}memegen biw \"gets iced coffee\" \"in the winter\"`" + "Usage": [ + "{0}memegen biw \"gets iced coffee\" \"in the winter\"" + ] }, "weather": { "Cmd": "weather we", "Desc": "Shows weather data for a specified city. You can also specify a country after a comma.", - "Usage": "`{0}we Moscow, RU`" + "Usage": [ + "{0}we Moscow, RU" + ] }, "youtube": { "Cmd": "youtube yt", "Desc": "Searches youtubes and shows the first result", - "Usage": "`{0}yt query`" + "Usage": [ + "{0}yt query" + ] }, "anime": { "Cmd": "anime ani aq", "Desc": "Queries anilist for an anime and shows the first result.", - "Usage": "`{0}ani aquarion evol`" + "Usage": [ + "{0}ani aquarion evol" + ] }, "imdb": { "Cmd": "imdb omdb", "Desc": "Queries omdb for movies or series, show first result.", - "Usage": "`{0}imdb Batman vs Superman`" + "Usage": [ + "{0}imdb Batman vs Superman" + ] }, "manga": { "Cmd": "manga mang mq", "Desc": "Queries anilist for a manga and shows the first result.", - "Usage": "`{0}mq Shingeki no kyojin`" + "Usage": [ + "{0}mq Shingeki no kyojin" + ] }, "randomcat": { "Cmd": "randomcat meow", "Desc": "Shows a random cat image.", - "Usage": "`{0}meow`" + "Usage": [ + "{0}meow" + ] }, "randomdog": { "Cmd": "randomdog woof", "Desc": "Shows a random dog image.", - "Usage": "`{0}woof`" + "Usage": [ + "{0}woof" + ] }, "image": { "Cmd": "image img", "Desc": "Pulls the first image found using a search parameter. Use `{0}rimg` for different results.", - "Usage": "`{0}img cute kitten`" + "Usage": [ + "{0}img cute kitten" + ] }, "randomimage": { "Cmd": "randomimage rimg", "Desc": "Pulls a random image using a search parameter.", - "Usage": "`{0}rimg cute kitten`" + "Usage": [ + "{0}rimg cute kitten" + ] }, "lmgtfy": { "Cmd": "lmgtfy", "Desc": "Google something for an idiot.", - "Usage": "`{0}lmgtfy query`" + "Usage": [ + "{0}lmgtfy query" + ] }, "google": { "Cmd": "google g", "Desc": "Get a Google search link for some terms.", - "Usage": "`{0}google query`" + "Usage": [ + "{0}google query" + ] }, "hearthstone": { "Cmd": "hearthstone hs", "Desc": "Searches for a Hearthstone card and shows its image. Takes a while to complete.", - "Usage": "`{0}hs Ysera`" + "Usage": [ + "{0}hs Ysera" + ] }, "urbandict": { "Cmd": "urbandict ud", "Desc": "Searches Urban Dictionary for a word.", - "Usage": "`{0}ud Pineapple`" + "Usage": [ + "{0}ud Pineapple" + ] }, "hashtag": { "Cmd": "#", "Desc": "Searches Tagdef.com for a hashtag.", - "Usage": "`{0}# ff`" + "Usage": [ + "{0}# ff" + ] }, "catfact": { "Cmd": "catfact", "Desc": "Shows a random catfact from ", - "Usage": "`{0}catfact`" + "Usage": [ + "{0}catfact" + ] }, "yomama": { "Cmd": "yomama ym", "Desc": "Shows a random joke from ", - "Usage": "`{0}ym`" + "Usage": [ + "{0}ym" + ] }, "randjoke": { "Cmd": "randjoke rj", "Desc": "Shows a random joke from ", - "Usage": "`{0}rj`" + "Usage": [ + "{0}rj" + ] }, "chucknorris": { "Cmd": "chucknorris cn", "Desc": "Shows a random Chuck Norris joke from ", - "Usage": "`{0}cn`" + "Usage": [ + "{0}cn" + ] }, "magicitem": { "Cmd": "magicitem mi", "Desc": "Shows a random magic item from ", - "Usage": "`{0}mi`" + "Usage": [ + "{0}mi" + ] }, "revav": { "Cmd": "revav", "Desc": "Returns a Google reverse image search for someone's avatar.", - "Usage": "`{0}revav @SomeGuy`" + "Usage": [ + "{0}revav @SomeGuy" + ] }, "revimg": { "Cmd": "revimg", "Desc": "Returns a Google reverse image search for an image from a link.", - "Usage": "`{0}revimg Image link`" + "Usage": [ + "{0}revimg Image link" + ] }, "safebooru": { "Cmd": "safebooru", "Desc": "Shows a random image from safebooru with a given tag. Tag is optional but preferred. (multiple tags are appended with +)", - "Usage": "`{0}safebooru yuri+kissing`" + "Usage": [ + "{0}safebooru yuri+kissing" + ] }, "wiki": { "Cmd": "wikipedia wiki", "Desc": "Gives you back a wikipedia link", - "Usage": "`{0}wiki query`" + "Usage": [ + "{0}wiki query" + ] }, "color": { "Cmd": "color", "Desc": "Shows you what color corresponds to that hex.", - "Usage": "`{0}color 00ff00`" + "Usage": [ + "{0}color 00ff00" + ] }, "videocall": { "Cmd": "videocall", "Desc": "Creates a private video call link for you and other mentioned people. The link is sent to mentioned people via a private message.", - "Usage": "`{0}videocall \"@the First\" \"@Xyz\"`" + "Usage": [ + "{0}videocall \"@the First\" \"@Xyz\"" + ] }, "avatar": { "Cmd": "avatar av", "Desc": "Shows a mentioned person's avatar.", - "Usage": "`{0}av @SomeGuy`" + "Usage": [ + "{0}av @SomeGuy" + ] }, "hentai": { "Cmd": "hentai", "Desc": "Shows a hentai image from a random website (gelbooru or danbooru or konachan or atfbooru or yandere) with a given tag. Tag is optional but preferred. Only 1 tag allowed.", - "Usage": "`{0}hentai yuri`" + "Usage": [ + "{0}hentai yuri" + ] }, "danbooru": { "Cmd": "danbooru", "Desc": "Shows a random hentai image from danbooru with a given tag. Tag is optional but preferred. (multiple tags are appended with +)", - "Usage": "`{0}danbooru yuri+kissing`" + "Usage": [ + "{0}danbooru yuri+kissing" + ] }, "atfbooru": { "Cmd": "atfbooru atf", "Desc": "Shows a random hentai image from atfbooru with a given tag. Tag is optional but preferred.", - "Usage": "`{0}atfbooru yuri+kissing`" + "Usage": [ + "{0}atfbooru yuri+kissing" + ] }, "gelbooru": { "Cmd": "gelbooru", "Desc": "Shows a random hentai image from gelbooru with a given tag. Tag is optional but preferred. (multiple tags are appended with +)", - "Usage": "`{0}gelbooru yuri+kissing`" + "Usage": [ + "{0}gelbooru yuri+kissing" + ] }, "rule34": { "Cmd": "rule34", "Desc": "Shows a random image from rule34.xx with a given tag. Tag is optional but preferred. (multiple tags are appended with +)", - "Usage": "`{0}rule34 yuri+kissing`" + "Usage": [ + "{0}rule34 yuri+kissing" + ] }, "e621": { "Cmd": "e621", "Desc": "Shows a random hentai image from e621.net with a given tag. Tag is optional but preferred. Use spaces for multiple tags.", - "Usage": "`{0}e621 yuri kissing`" + "Usage": [ + "{0}e621 yuri kissing" + ] }, "boobs": { "Cmd": "boobs", "Desc": "Real adult content.", - "Usage": "`{0}boobs`" + "Usage": [ + "{0}boobs" + ] }, "butts": { "Cmd": "butts ass butt", "Desc": "Real adult content.", - "Usage": "`{0}butts` or `{0}ass`" + "Usage": [ + "{0}butts", + "{0}ass" + ] }, "translate": { "Cmd": "translate trans", "Desc": "Translates from>to text. From the given language to the destination language.", - "Usage": "`{0}trans en>fr Hello`" + "Usage": [ + "{0}trans en>fr Hello" + ] }, "translangs": { "Cmd": "translangs", "Desc": "Lists the valid languages for translation.", - "Usage": "`{0}translangs`" + "Usage": [ + "{0}translangs" + ] }, "guide": { "Cmd": "readme guide", "Desc": "Sends a readme and a guide links to the channel.", - "Usage": "`{0}readme` or `{0}guide`" + "Usage": [ + "{0}readme", + "{0}guide" + ] }, "calcops": { "Cmd": "calcops", "Desc": "Shows all available operations in the `{0}calc` command", - "Usage": "`{0}calcops`" + "Usage": [ + "{0}calcops" + ] }, "delallquotes": { "Cmd": "delallq daq", "Desc": "Deletes all quotes on a specified keyword.", - "Usage": "`{0}delallq kek`" + "Usage": [ + "{0}delallq kek" + ] }, "greetdmmsg": { "Cmd": "greetdmmsg", "Desc": "Sets a new join announcement message which will be sent to the user who joined. Type `%user%` if you want to mention the new member. Using it with no message will show the current DM greet message. You can use embed json from instead of a regular text, if you want the message to be embedded.", - "Usage": "`{0}greetdmmsg Welcome to the server, %user%`." + "Usage": [ + "{0}greetdmmsg Welcome to the server, %user%`" + ] }, "cash": { "Cmd": "$ currency $$ $$$ cash cur", "Desc": "Check how much currency a person has. (Defaults to yourself)", - "Usage": "`{0}$` or `{0}$ @SomeGuy`" + "Usage": [ + "{0}$", + "{0}$ @SomeGuy" + ] }, "listperms": { "Cmd": "listperms lp", "Desc": "Lists whole permission chain with their indexes. You can specify an optional page number if there are a lot of permissions.", - "Usage": "`{0}lp` or `{0}lp 3`" + "Usage": [ + "{0}lp", + "{0}lp 3" + ] }, "allusrmdls": { "Cmd": "allusrmdls aum", "Desc": "Enable or disable all modules for a specific user.", - "Usage": "`{0}aum enable @someone`" + "Usage": [ + "{0}aum enable @someone" + ] }, "moveperm": { "Cmd": "moveperm mp", "Desc": "Moves permission from one position to another in the Permissions list.", - "Usage": "`{0}mp 2 4`" + "Usage": [ + "{0}mp 2 4" + ] }, "removeperm": { "Cmd": "removeperm rp", "Desc": "Removes a permission from a given position in the Permissions list.", - "Usage": "`{0}rp 1`" + "Usage": [ + "{0}rp 1" + ] }, "migratedata": { "Cmd": "migratedata", "Desc": "Migrate data from old bot configuration", - "Usage": "`{0}migratedata`" + "Usage": [ + "{0}migratedata" + ] }, "checkstream": { "Cmd": "checkstream cs", "Desc": "Checks if a user is online on a certain streaming platform.", - "Usage": "`{0}cs twitch MyFavStreamer`" + "Usage": [ + "{0}cs twitch MyFavStreamer" + ] }, "showemojis": { "Cmd": "showemojis se", "Desc": "Shows a name and a link to every SPECIAL emoji in the message.", - "Usage": "`{0}se A message full of SPECIAL emojis`" + "Usage": [ + "{0}se A message full of SPECIAL emojis" + ] }, "deckshuffle": { "Cmd": "deckshuffle dsh", "Desc": "Reshuffles all cards back into the deck.", - "Usage": "`{0}dsh`" + "Usage": [ + "{0}dsh" + ] }, "forwardmessages": { "Cmd": "fwmsgs", "Desc": "Toggles forwarding of non-command messages sent to bot's DM to the bot owners", - "Usage": "`{0}fwmsgs`" + "Usage": [ + "{0}fwmsgs" + ] }, "forwardtoall": { "Cmd": "fwtoall", "Desc": "Toggles whether messages will be forwarded to all bot owners or only to the first one specified in the credentials.json file", - "Usage": "`{0}fwtoall`" + "Usage": [ + "{0}fwtoall" + ] }, "resetpermissions": { "Cmd": "resetperms", "Desc": "Resets the bot's permissions module on this server to the default value.", - "Usage": "`{0}resetperms`" + "Usage": [ + "{0}resetperms" + ] }, "antiraid": { "Cmd": "antiraid", "Desc": "Sets an anti-raid protection on the server. First argument is number of people which will trigger the protection. Second one is a time interval in which that number of people needs to join in order to trigger the protection, and third argument is punishment for those people (Kick, Ban, Mute)", - "Usage": "`{0}antiraid 5 20 Kick`" + "Usage": [ + "{0}antiraid 5 20 Kick" + ] }, "antispam": { "Cmd": "antispam", "Desc": "Stops people from repeating same message X times in a row. You can specify to either mute, kick or ban the offenders. Max message count is 10.", - "Usage": "`{0}antispam 3 Mute` or `{0}antispam 4 Kick` or `{0}antispam 6 Ban`" + "Usage": [ + "{0}antispam 3 Mute", + "{0}antispam 4 Kick", + "{0}antispam 6 Ban" + ] }, "chatmute": { "Cmd": "chatmute", "Desc": "Prevents a mentioned user from chatting in text channels.", - "Usage": "`{0}chatmute @Someone`" + "Usage": [ + "{0}chatmute @Someone" + ] }, "voicemute": { "Cmd": "voicemute", "Desc": "Prevents a mentioned user from speaking in voice channels.", - "Usage": "`{0}voicemute @Someone`" + "Usage": [ + "{0}voicemute @Someone" + ] }, "konachan": { "Cmd": "konachan", "Desc": "Shows a random hentai image from konachan with a given tag. Tag is optional but preferred.", - "Usage": "`{0}konachan yuri`" + "Usage": [ + "{0}konachan yuri" + ] }, "setmuterole": { "Cmd": "setmuterole", "Desc": "Sets a name of the role which will be assigned to people who should be muted. Default is nadeko-mute.", - "Usage": "`{0}setmuterole Silenced`" + "Usage": [ + "{0}setmuterole Silenced" + ] }, "adsarm": { "Cmd": "adsarm", "Desc": "Toggles the automatic deletion of confirmations for `{0}iam` and `{0}iamn` commands.", - "Usage": "`{0}adsarm`" + "Usage": [ + "{0}adsarm" + ] }, "setstream": { "Cmd": "setstream", "Desc": "Sets the bots stream. First argument is the twitch link, second argument is stream name.", - "Usage": "`{0}setstream TWITCHLINK Hello`" + "Usage": [ + "{0}setstream TWITCHLINK Hello" + ] }, "chatunmute": { "Cmd": "chatunmute", "Desc": "Removes a mute role previously set on a mentioned user with `{0}chatmute` which prevented him from chatting in text channels.", - "Usage": "`{0}chatunmute @Someone`" + "Usage": [ + "{0}chatunmute @Someone" + ] }, "unmute": { "Cmd": "unmute", "Desc": "Unmutes a mentioned user previously muted with `{0}mute` command.", - "Usage": "`{0}unmute @Someone`" + "Usage": [ + "{0}unmute @Someone" + ] }, "xkcd": { "Cmd": "xkcd", "Desc": "Shows a XKCD comic. No arguments will retrieve random one. Number argument will retrieve a specific comic, and \"latest\" will get the latest one.", - "Usage": "`{0}xkcd` or `{0}xkcd 1400` or `{0}xkcd latest`" + "Usage": [ + "{0}xkcd", + "{0}xkcd 1400", + "{0}xkcd latest" + ] }, "placelist": { "Cmd": "placelist", "Desc": "Shows the list of available tags for the `{0}place` command.", - "Usage": "`{0}placelist`" + "Usage": [ + "{0}placelist" + ] }, "place": { "Cmd": "place", "Desc": "Shows a placeholder image of a given tag. Use `{0}placelist` to see all available tags. You can specify the width and height of the image as the last two optional arguments.", - "Usage": "`{0}place Cage` or `{0}place steven 500 400`" + "Usage": [ + "{0}place Cage", + "{0}place steven 500 400" + ] }, "togethertube": { "Cmd": "togethertube totube", "Desc": "Creates a new room on and shows the link in the chat.", - "Usage": "`{0}totube`" + "Usage": [ + "{0}totube" + ] }, "poll": { "Cmd": "poll ppoll", "Desc": "Creates a public poll which requires users to type a number of the voting option in the channel command is ran in.", - "Usage": "`{0}ppoll Question?;Answer1;Answ 2;A_3`" + "Usage": [ + "{0}ppoll Question?;Answer1;Answ 2;A_3" + ] }, "autotranslang": { "Cmd": "autotranslang atl", "Desc": "Sets your source and target language to be used with `{0}at`. Specify no arguments to remove previously set value.", - "Usage": "`{0}atl en>fr`" + "Usage": [ + "{0}atl en>fr" + ] }, "autotranslate": { "Cmd": "autotrans at", "Desc": "Starts automatic translation of all messages by users who set their `{0}atl` in this channel. You can set \"del\" argument to automatically delete all translated user messages.", - "Usage": "`{0}at` or `{0}at del`" + "Usage": [ + "{0}at", + "{0}at del" + ] }, "listquotes": { "Cmd": "listquotes liqu", "Desc": "Lists all quotes on the server ordered alphabetically. 15 Per page.", - "Usage": "`{0}liqu` or `{0}liqu 3`" + "Usage": [ + "{0}liqu", + "{0}liqu 3" + ] }, "typedel": { "Cmd": "typedel", "Desc": "Deletes a typing article given the ID.", - "Usage": "`{0}typedel 3`" + "Usage": [ + "{0}typedel 3" + ] }, "typelist": { "Cmd": "typelist", "Desc": "Lists added typing articles with their IDs. 15 per page.", - "Usage": "`{0}typelist` or `{0}typelist 3`" + "Usage": [ + "{0}typelist", + "{0}typelist 3" + ] }, "listservers": { "Cmd": "listservers", "Desc": "Lists servers the bot is on with some basic info. 15 per page.", - "Usage": "`{0}listservers 3`" + "Usage": [ + "{0}listservers 3" + ] }, "hentaibomb": { "Cmd": "hentaibomb", "Desc": "Shows a total 5 images (from gelbooru, danbooru, konachan, yandere and atfbooru). Tag is optional but preferred.", - "Usage": "`{0}hentaibomb yuri`" + "Usage": [ + "{0}hentaibomb yuri" + ] }, "cleverbot": { "Cmd": "cleverbot", "Desc": "Toggles cleverbot session. When enabled, the bot will reply to messages starting with bot mention in the server. Custom reactions starting with %mention% won't work if cleverbot is enabled.", - "Usage": "`{0}cleverbot`" + "Usage": [ + "{0}cleverbot" + ] }, "shorten": { "Cmd": "shorten", "Desc": "Attempts to shorten an URL, if it fails, returns the input URL.", - "Usage": "`{0}shorten https://google.com`" + "Usage": [ + "{0}shorten https://google.com" + ] }, "mcping": { "Cmd": "minecraftping mcping", "Desc": "Pings a minecraft server.", - "Usage": "`{0}mcping 127.0.0.1:25565`" + "Usage": [ + "{0}mcping 127.0.0.1:25565" + ] }, "mcq": { "Cmd": "minecraftquery mcq", "Desc": "Finds information about a minecraft server.", - "Usage": "`{0}mcq server:ip`" + "Usage": [ + "{0}mcq server:ip" + ] }, "wikia": { "Cmd": "wikia", "Desc": "Gives you back a wikia link", - "Usage": "`{0}wikia mtg Vigilance` or `{0}wikia mlp Dashy`" + "Usage": [ + "{0}wikia mtg Vigilance", + "{0}wikia mlp Dashy" + ] }, "yandere": { "Cmd": "yandere", "Desc": "Shows a random image from yandere with a given tag. Tag is optional but preferred. (multiple tags are appended with +)", - "Usage": "`{0}yandere tag1+tag2`" + "Usage": [ + "{0}yandere tag1+tag2" + ] }, "magicthegathering": { "Cmd": "magicthegathering mtg", "Desc": "Searches for a Magic The Gathering card.", - "Usage": "`{0}magicthegathering about face` or `{0}mtg about face`" + "Usage": [ + "{0}magicthegathering about face", + "{0}mtg about face" + ] }, "yodify": { "Cmd": "yodify yoda", "Desc": "Translates your normal sentences into Yoda styled sentences!", - "Usage": "`{0}yoda my feelings hurt`" + "Usage": [ + "{0}yoda my feelings hurt" + ] }, "attack": { "Cmd": "attack", "Desc": "Attacks a target with the given move. Use `{0}movelist` to see a list of moves your type can use.", - "Usage": "`{0}attack \"vine whip\" @someguy`" + "Usage": [ + "{0}attack \"vine whip\" @someguy" + ] }, "heal": { "Cmd": "heal", "Desc": "Heals someone. Revives those who fainted. Costs one Currency. ", - "Usage": "`{0}heal @someone`" + "Usage": [ + "{0}heal @someone" + ] }, "movelist": { "Cmd": "movelist ml", "Desc": "Lists the moves you are able to use", - "Usage": "`{0}ml`" + "Usage": [ + "{0}ml" + ] }, "settype": { "Cmd": "settype", "Desc": "Set your poketype. Costs one Currency. Provide no arguments to see a list of available types.", - "Usage": "`{0}settype fire` or `{0}settype`" + "Usage": [ + "{0}settype fire", + "{0}settype" + ] }, "type": { "Cmd": "type", "Desc": "Get the poketype of the target.", - "Usage": "`{0}type @someone`" + "Usage": [ + "{0}type @someone" + ] }, "hangmanlist": { "Cmd": "hangmanlist", "Desc": "Shows a list of hangman term types.", - "Usage": "`{0}hangmanlist`" + "Usage": [ + "{0}hangmanlist" + ] }, "hangman": { "Cmd": "hangman", "Desc": "Starts a game of hangman in the channel. Use `{0}hangmanlist` to see a list of available term types. Defaults to 'all'.", - "Usage": "`{0}hangman` or `{0}hangman movies`" + "Usage": [ + "{0}hangman", + "{0}hangman movies" + ] }, "hangmanstop": { "Cmd": "hangmanstop", "Desc": "Stops the active hangman game on this channel if it exists.", - "Usage": "`{0}hangmanstop`" + "Usage": [ + "{0}hangmanstop" + ] }, "crstatsclear": { "Cmd": "crstatsclear", "Desc": "Resets the counters on `{0}crstats`. You can specify a trigger to clear stats only for that trigger.", - "Usage": "`{0}crstatsclear` or `{0}crstatsclear rng`" + "Usage": [ + "{0}crstatsclear", + "{0}crstatsclear rng" + ] }, "crstats": { "Cmd": "crstats", "Desc": "Shows a list of custom reactions and the number of times they have been executed. Paginated with 10 per page. Use `{0}crstatsclear` to reset the counters.", - "Usage": "`{0}crstats` or `{0}crstats 3`" + "Usage": [ + "{0}crstats", + "{0}crstats 3" + ] }, "overwatch": { "Cmd": "overwatch ow", "Desc": "Show's basic stats on a player (competitive rank, playtime, level etc) Region codes are: `eu` `us` `cn` `kr`", - "Usage": "`{0}ow us Battletag#1337` or `{0}overwatch eu Battletag#2016`" + "Usage": [ + "{0}ow us Battletag#1337", + "`{0}overwatch eu Battletag#2016" + ] }, "acro": { "Cmd": "acrophobia acro", "Desc": "Starts an Acrophobia game. Second argument is optional round length in seconds. (default is 60)", - "Usage": "`{0}acro` or `{0}acro 30`" + "Usage": [ + "{0}acro", + "{0}acro 30" + ] }, "logevents": { "Cmd": "logevents", "Desc": "Shows a list of all events you can subscribe to with `{0}log`", - "Usage": "`{0}logevents`" + "Usage": [ + "{0}logevents" + ] }, "log": { "Cmd": "log", "Desc": "Toggles logging event. Disables it if it is active anywhere on the server. Enables if it isn't active. Use `{0}logevents` to see a list of all events you can subscribe to.", - "Usage": "`{0}log userpresence` or `{0}log userbanned`" + "Usage": [ + "{0}log userpresence", + "{0}log userbanned" + ] }, "fairplay": { "Cmd": "fairplay fp", "Desc": "Toggles fairplay. While enabled, the bot will prioritize songs from users who didn't have their song recently played instead of the song's position in the queue.", - "Usage": "`{0}fp`" + "Usage": [ + "{0}fp" + ] }, "songautodelete": { "Cmd": "songautodelete sad", "Desc": "Toggles whether the song should be automatically removed from the music queue when it finishes playing.", - "Usage": "`{0}sad`" + "Usage": [ + "{0}sad" + ] }, "define": { "Cmd": "define def", "Desc": "Finds a definition of a word.", - "Usage": "`{0}def heresy`" + "Usage": [ + "{0}def heresy" + ] }, "setmaxplaytime": { "Cmd": "setmaxplaytime smp", "Desc": "Sets a maximum number of seconds (>14) a song can run before being skipped automatically. Set 0 to have no limit.", - "Usage": "`{0}smp 0` or `{0}smp 270`" + "Usage": [ + "{0}smp 0", + "{0}smp 270" + ] }, "activity": { "Cmd": "activity", "Desc": "Checks for spammers.", - "Usage": "`{0}activity`" + "Usage": [ + "{0}activity" + ] }, "autohentai": { "Cmd": "autohentai", "Desc": "Posts a hentai every X seconds with a random tag from the provided tags. Use `|` to separate tags. 20 seconds minimum. Provide no arguments to disable.", - "Usage": "`{0}autohentai 30 yuri|tail|long_hair` or `{0}autohentai`" + "Usage": [ + "{0}autohentai 30 yuri|tail|long_hair", + "{0}autohentai" + ] }, "setstatus": { "Cmd": "setstatus", "Desc": "Sets the bot's status. (Online/Idle/Dnd/Invisible)", - "Usage": "`{0}setstatus Idle`" + "Usage": [ + "{0}setstatus Idle" + ] }, "rotaterolecolor": { "Cmd": "rotaterolecolor rrc", "Desc": "Rotates a roles color on an interval with a list of supplied colors. First argument is interval in seconds (Minimum 60). Second argument is a role, followed by a space-separated list of colors in hex. Provide a rolename with a 0 interval to disable.", - "Usage": "`{0}rrc 60 MyLsdRole #ff0000 #00ff00 #0000ff` or `{0}rrc 0 MyLsdRole`" + "Usage": [ + "{0}rrc 60 MyLsdRole #ff0000 #00ff00 #0000ff", + "{0}rrc 0 MyLsdRole" + ] }, "createinvite": { "Cmd": "createinvite crinv", "Desc": "Creates a new invite which has infinite max uses and never expires.", - "Usage": "`{0}crinv`" + "Usage": [ + "{0}crinv" + ] }, "pollstats": { "Cmd": "pollstats", "Desc": "Shows the poll results without stopping the poll on this server.", - "Usage": "`{0}pollstats`" + "Usage": [ + "{0}pollstats" + ] }, "repeatlist": { "Cmd": "repeatlist replst", "Desc": "Shows currently repeating messages and their indexes.", - "Usage": "`{0}repeatlist`" + "Usage": [ + "{0}repeatlist" + ] }, "repeatremove": { "Cmd": "repeatremove reprm", "Desc": "Removes a repeating message on a specified index. Use `{0}repeatlist` to see indexes.", - "Usage": "`{0}reprm 2`" + "Usage": [ + "{0}reprm 2" + ] }, "antilist": { "Cmd": "antilist antilst", "Desc": "Shows currently enabled protection features.", - "Usage": "`{0}antilist`" + "Usage": [ + "{0}antilist" + ] }, "antispamignore": { "Cmd": "antispamignore", "Desc": "Toggles whether antispam ignores current channel. Antispam must be enabled.", - "Usage": "`{0}antispamignore`" + "Usage": [ + "{0}antispamignore" + ] }, "cmdcosts": { "Cmd": "cmdcosts", "Desc": "Shows a list of command costs. Paginated with 9 commands per page.", - "Usage": "`{0}cmdcosts` or `{0}cmdcosts 2`" + "Usage": [ + "{0}cmdcosts", + "{0}cmdcosts 2" + ] }, "commandcost": { "Cmd": "commandcost cmdcost", "Desc": "Sets a price for a command. Running that command will take currency from users. Set 0 to remove the price.", - "Usage": "`{0}cmdcost 0 !!q` or `{0}cmdcost 1 {0}8ball`" + "Usage": [ + "{0}cmdcost 0 !!q", + "{0}cmdcost 1 {0}8ball" + ] }, "startevent": { "Cmd": "startevent", "Desc": "Starts one of the events seen on public nadeko. `reaction` and `sneakygamestatus` are the only 2 available now.", - "Usage": "`{0}startevent reaction`" + "Usage": [ + "{0}startevent reaction" + ] }, "slotstats": { "Cmd": "slotstats", "Desc": "Shows the total stats of the slot command for this bot's session.", - "Usage": "`{0}slotstats`" + "Usage": [ + "{0}slotstats" + ] }, "slottest": { "Cmd": "slottest", "Desc": "Tests to see how much slots payout for X number of plays.", - "Usage": "`{0}slottest 1000`" + "Usage": [ + "{0}slottest 1000" + ] }, "slot": { "Cmd": "slot", "Desc": "Play Nadeko slots. Max bet is 9999. 1.5 second cooldown per user.", - "Usage": "`{0}slot 5`" + "Usage": [ + "{0}slot 5" + ] }, "waifuclaimeraffinity": { "Cmd": "affinity", "Desc": "Sets your affinity towards someone you want to be claimed by. Setting affinity will reduce their `{0}claim` on you by 20%. You can leave second argument empty to clear your affinity. 30 minutes cooldown.", - "Usage": "`{0}affinity @MyHusband` or `{0}affinity`" + "Usage": [ + "{0}affinity @MyHusband", + "{0}affinity" + ] }, "waifuclaim": { "Cmd": "claimwaifu claim", "Desc": "Claim a waifu for yourself by spending currency. You must spend at least 10% more than her current value unless she set `{0}affinity` towards you.", - "Usage": "`{0}claim 50 @Himesama`" + "Usage": [ + "{0}claim 50 @Himesama" + ] }, "waifugift": { "Cmd": "waifugift gift gifts", "Desc": "Gift an item to someone. This will increase their waifu value by 50% of the gifted item's value if they don't have affinity set towards you, or 100% if they do. Provide no arguments to see a list of items that you can gift.", - "Usage": "`{0}gifts` or `{0}gift Rose @Himesama`" + "Usage": [ + "{0}gifts", + "{0}gift Rose @Himesama" + ] }, "waifuleaderboard": { "Cmd": "waifus waifulb", "Desc": "Shows top 9 waifus. You can specify another page to show other waifus.", - "Usage": "`{0}waifus` or `{0}waifulb 3`" + "Usage": [ + "{0}waifus", + "{0}waifulb 3" + ] }, "divorce": { "Cmd": "divorce", "Desc": "Releases your claim on a specific waifu. You will get some of the money you've spent back unless that waifu has an affinity towards you. 6 hours cooldown.", - "Usage": "`{0}divorce @CheatingSloot`" + "Usage": [ + "{0}divorce @CheatingSloot" + ] }, "waifuinfo": { "Cmd": "waifuinfo waifustats", "Desc": "Shows waifu stats for a target person. Defaults to you if no user is provided.", - "Usage": "`{0}waifuinfo @MyCrush` or `{0}waifuinfo`" + "Usage": [ + "{0}waifuinfo @MyCrush", + "{0}waifuinfo" + ] }, "mal": { "Cmd": "mal", "Desc": "Shows basic info from a MyAnimeList profile.", - "Usage": "`{0}mal straysocks`" + "Usage": [ + "{0}mal straysocks" + ] }, "setmusicchannel": { "Cmd": "setmusicchannel smch", "Desc": "Sets the current channel as the default music output channel. This will output playing, finished, paused and removed songs to that channel instead of the channel where the first song was queued in.", - "Usage": "`{0}smch`" + "Usage": [ + "{0}smch" + ] }, "reloadimages": { "Cmd": "reloadimages", "Desc": "Reloads images bot is using. Safe to use even when bot is being used heavily.", - "Usage": "`{0}reloadimages`" + "Usage": [ + "{0}reloadimages" + ] }, "shardstats": { "Cmd": "shardstats", "Desc": "Stats for shards. Paginated with 25 shards per page.", - "Usage": "`{0}shardstats` or `{0}shardstats 2`" + "Usage": [ + "{0}shardstats", + "{0}shardstats 2" + ] }, "restartshard": { "Cmd": "restartshard", "Desc": "Try (re)connecting a shard with a certain shardid when it dies. No one knows will it work. Keep an eye on the console for errors.", - "Usage": "`{0}restartshard 2`" + "Usage": [ + "{0}restartshard 2" + ] }, "shardid": { "Cmd": "shardid", "Desc": "Shows which shard is a certain guild on, by guildid.", - "Usage": "`{0}shardid 117523346618318850`" + "Usage": [ + "{0}shardid 117523346618318850" + ] }, "tictactoe": { "Cmd": "tictactoe ttt", "Desc": "Starts a game of tic tac toe. Another user must run the command in the same channel in order to accept the challenge. Use numbers 1-9 to play. 15 seconds per move.", - "Usage": "{0}ttt" + "Usage": [ + "0}tt" + ] }, "timezones": { "Cmd": "timezones", "Desc": "Lists all timezones available on the system to be used with `{0}timezone`.", - "Usage": "`{0}timezones`" + "Usage": [ + "{0}timezones" + ] }, "timezone": { "Cmd": "timezone", "Desc": "Sets this guilds timezone. This affects bot's time output in this server (logs, etc..)", - "Usage": "`{0}timezone` or `{0}timezone GMT Standard Time`" + "Usage": [ + "{0}timezone", + "{0}timezone GMT Standard Time" + ] }, "languagesetdefault": { "Cmd": "langsetdefault langsetd", "Desc": "Sets the bot's default response language. All servers which use a default locale will use this one. Setting to `default` will use the host's current culture. Provide no arguments to see currently set language.", - "Usage": "`{0}langsetd en-US` or `{0}langsetd default`" + "Usage": [ + "{0}langsetd en-US", + "{0}langsetd default" + ] }, "languageset": { "Cmd": "languageset langset", "Desc": "Sets this server's response language. If bot's response strings have been translated to that language, bot will use that language in this server. Reset by using `default` as the locale name. Provide no arguments to see currently set language.", - "Usage": "`{0}langset de-DE ` or `{0}langset default`" + "Usage": [ + "{0}langset de-DE ", + "{0}langset default" + ] }, "languageslist": { "Cmd": "languageslist langli", "Desc": "List of languages for which translation (or part of it) exist atm.", - "Usage": "`{0}langli`" + "Usage": [ + "{0}langli" + ] }, "rategirl": { "Cmd": "rategirl", "Desc": "Use the universal hot-crazy wife zone matrix to determine the girl's worth. It is everything young men need to know about women. At any moment in time, any woman you have previously located on this chart can vanish from that location and appear anywhere else on the chart.", - "Usage": "`{0}rategirl @SomeGurl`" + "Usage": [ + "{0}rategirl @SomeGurl" + ] }, "lucky7test": { "Cmd": "lucky7test l7t", "Desc": "Tests the l7 command.", - "Usage": "`{0}l7t 10000`" + "Usage": [ + "{0}l7t 10000" + ] }, "lucky7": { "Cmd": "lucky7 l7", "Desc": "Bet currency on the game and start rolling 3 sided dice. At any point you can choose to [m]ove (roll again) or [s]tay (get the amount bet times the current multiplier).", - "Usage": "`{0}l7 10` or `{0}l7 move` or `{0}l7 s`" + "Usage": [ + "{0}l7 10", + "{0}l7 move", + "{0}l7 s" + ] }, "vcrolelist": { "Cmd": "vcrolelist", "Desc": "Shows a list of currently set voice channel roles.", - "Usage": "`{0}vcrolelist`" + "Usage": [ + "{0}vcrolelist" + ] }, "vcrole": { "Cmd": "vcrole", "Desc": "Sets or resets a role which will be given to users who join the voice channel you're in when you run this command. Provide no role name to disable. You must be in a voice channel to run this command.", - "Usage": "`{0}vcrole SomeRole` or `{0}vcrole`" + "Usage": [ + "{0}vcrole SomeRole", + "{0}vcrole" + ] }, "crad": { "Cmd": "crad", "Desc": "Toggles whether the message triggering the custom reaction will be automatically deleted.", - "Usage": "`{0}crad 59`" + "Usage": [ + "{0}crad 59" + ] }, "crdm": { "Cmd": "crdm", "Desc": "Toggles whether the response message of the custom reaction will be sent as a direct message.", - "Usage": "`{0}crdm 44`" + "Usage": [ + "{0}crdm 44" + ] }, "crca": { "Cmd": "crca", "Desc": "Toggles whether the custom reaction will trigger if the triggering message contains the keyword (instead of only starting with it).", - "Usage": "`{0}crca 44`" + "Usage": [ + "{0}crca 44" + ] }, "aliaslist": { "Cmd": "aliaslist cmdmaplist aliases", "Desc": "Shows the list of currently set aliases. Paginated.", - "Usage": "`{0}aliaslist` or `{0}aliaslist 3`" + "Usage": [ + "{0}aliaslist", + "{0}aliaslist 3" + ] }, "alias": { "Cmd": "alias cmdmap", "Desc": "Create a custom alias for a certain Nadeko command. Provide no alias to remove the existing one.", - "Usage": "`{0}alias allin $bf 100 h` or `{0}alias \"linux thingy\" >loonix Spyware Windows`" + "Usage": [ + "{0}alias allin $bf 100 h", + "{0}alias \"linux thingy\" >loonix Spyware Windows" + ] }, "warnlog": { "Cmd": "warnlog", "Desc": "See a list of warnings of a certain user.", - "Usage": "`{0}warnlog @b1nzy`" + "Usage": [ + "{0}warnlog @b1nzy" + ] }, "warnlogall": { "Cmd": "warnlogall", "Desc": "See a list of all warnings on the server. 15 users per page.", - "Usage": "`{0}warnlogall` or `{0}warnlogall 2`" + "Usage": [ + "{0}warnlogall", + "{0}warnlogall 2" + ] }, "warn": { "Cmd": "warn", "Desc": "Warns a user.", - "Usage": "`{0}warn @b1nzy Very rude person`" + "Usage": [ + "{0}warn @b1nzy Very rude person" + ] }, "startupcommandadd": { "Cmd": "scadd", "Desc": "Adds a command to the list of commands which will be executed automatically in the current channel, in the order they were added in, by the bot when it startups up.", - "Usage": "`{0}scadd .stats`" + "Usage": [ + "{0}scadd .stats" + ] }, "startupcommandremove": { "Cmd": "scrm", "Desc": "Removes a startup command with the provided command text.", - "Usage": "`{0}scrm .stats`" + "Usage": [ + "{0}scrm .stats" + ] }, "startupcommandsclear": { "Cmd": "scclr", "Desc": "Removes all startup commands.", - "Usage": "`{0}scclr`" + "Usage": [ + "{0}scclr" + ] }, "startupcommands": { "Cmd": "sclist", "Desc": "Lists all startup commands in the order they will be executed in.", - "Usage": "`{0}sclist`" + "Usage": [ + "{0}sclist" + ] }, "unban": { "Cmd": "unban", "Desc": "Unbans a user with the provided user#discrim or id.", - "Usage": "`{0}unban kwoth#1234` or `{0}unban 123123123`" + "Usage": [ + "{0}unban kwoth#1234", + "{0}unban 123123123" + ] }, "wait": { "Cmd": "wait", "Desc": "Used only as a startup command. Waits a certain number of miliseconds before continuing the execution of the following startup commands.", - "Usage": "`{0}wait 3000`" + "Usage": [ + "{0}wait 3000" + ] }, "warnclear": { "Cmd": "warnclear warnc", "Desc": "Clears all warnings from a certain user.", - "Usage": "`{0}warnclear @PoorDude`" + "Usage": [ + "{0}warnclear @PoorDude" + ] }, "warnpunishlist": { "Cmd": "warnpunishlist warnpl", "Desc": "Lists punishments for warnings.", - "Usage": "`{0}warnpunishlist`" + "Usage": [ + "{0}warnpunishlist" + ] }, "warnpunish": { "Cmd": "warnpunish warnp", "Desc": "Sets a punishment for a certain number of warnings. Provide no punishment to remove.", - "Usage": "`{0}warnpunish 5 Ban` or `{0}warnpunish 3`" + "Usage": [ + "{0}warnpunish 5 Ban", + "{0}warnpunish 3" + ] }, "claimpatreonrewards": { "Cmd": "clparew", "Desc": "Claim patreon rewards. If you're subscribed to bot owner's patreon you can use this command to claim your rewards - assuming bot owner did setup has their patreon key.", - "Usage": "`{0}clparew`" + "Usage": [ + "{0}clparew" + ] }, "ping": { "Cmd": "ping", "Desc": "Ping the bot to see if there are latency issues.", - "Usage": "`{0}ping`" + "Usage": [ + "{0}ping" + ] }, "slowmodewhitelist": { "Cmd": "slowmodewl", "Desc": "Ignores a role or a user from the slowmode feature.", - "Usage": "`{0}slowmodewl SomeRole` or `{0}slowmodewl AdminDude`" + "Usage": [ + "{0}slowmodewl SomeRole", + "{0}slowmodewl AdminDude" + ] }, "time": { "Cmd": "time", "Desc": "Shows the current time and timezone in the specified location.", - "Usage": "`{0}time London, UK`" + "Usage": [ + "{0}time London, UK" + ] }, "patreonrewardsreload": { "Cmd": "parewrel", "Desc": "Forces the update of the list of patrons who are eligible for the reward.", - "Usage": "`{0}parewrel`" + "Usage": [ + "{0}parewrel" + ] }, "shopadd": { "Cmd": "shopadd", "Desc": "Adds an item to the shop by specifying type price and name. Available types are role and list.", - "Usage": "`{0}shopadd role 1000 Rich`" + "Usage": [ + "{0}shopadd role 1000 Rich" + ] }, "shopremove": { "Cmd": "shoprem shoprm", "Desc": "Removes an item from the shop by its ID.", - "Usage": "`{0}shoprm 1`" + "Usage": [ + "{0}shoprm 1" + ] }, "shop": { "Cmd": "shop", "Desc": "Lists this server's administrators' shop. Paginated.", - "Usage": "`{0}shop` or `{0}shop 2`" + "Usage": [ + "{0}shop", + "{0}shop 2" + ] }, "rolehoist": { "Cmd": "rolehoist rh", "Desc": "Toggles whether this role is displayed in the sidebar or not.", - "Usage": "`{0}rh Guests` or `{0}rh \"Space Wizards\"`" + "Usage": [ + "{0}rh Guests", + "{0}rh \"Space Wizards\"" + ] }, "buy": { "Cmd": "buy", "Desc": "Buys an item from the shop on a given index. If buying items, make sure that the bot can DM you.", - "Usage": "`{0}buy 2`" + "Usage": [ + "{0}buy 2" + ] }, "gamevoicechannel": { "Cmd": "gvc", "Desc": "Toggles game voice channel feature in the voice channel you're currently in. Users who join the game voice channel will get automatically redirected to the voice channel with the name of their current game, if it exists. Can't move users to channels that the bot has no connect permission for. One per server.", - "Usage": "`{0}gvc`" + "Usage": [ + "{0}gvc" + ] }, "shoplistadd": { "Cmd": "shoplistadd", "Desc": "Adds an item to the list of items for sale in the shop entry given the index. You usually want to run this command in the secret channel, so that the unique items are not leaked.", - "Usage": "`{0}shoplistadd 1 Uni-que-Steam-Key`" + "Usage": [ + "{0}shoplistadd 1 Uni-que-Steam-Key" + ] }, "gcmd": { "Cmd": "globalcommand gcmd", "Desc": "Toggles whether a command can be used on any server.", - "Usage": "`{0}gcmd .stats`" + "Usage": [ + "{0}gcmd .stats" + ] }, "gmod": { "Cmd": "globalmodule gmod", "Desc": "Toggles whether a module can be used on any server.", - "Usage": "`{0}gmod nsfw`" + "Usage": [ + "{0}gmod nsfw" + ] }, "lgp": { "Cmd": "listglobalperms lgp", "Desc": "Lists global permissions set by the bot owner.", - "Usage": "`{0}lgp`" + "Usage": [ + "{0}lgp" + ] }, "resetglobalpermissions": { "Cmd": "resetglobalperms", "Desc": "Resets global permissions set by bot owner.", - "Usage": "`{0}resetglobalperms`" + "Usage": [ + "{0}resetglobalperms" + ] }, "prefix": { "Cmd": "prefix", "Desc": "Sets this server's prefix for all bot commands. Provide no arguments to see the current server prefix.", - "Usage": "`{0}prefix +`" + "Usage": [ + "{0}prefix +" + ] }, "defprefix": { "Cmd": "defprefix", "Desc": "Sets bot's default prefix for all bot commands. Provide no arguments to see the current default prefix. This will not change this server's current prefix.", - "Usage": "`{0}defprefix +`" + "Usage": [ + "{0}defprefix +" + ] }, "verboseerror": { "Cmd": "verboseerror ve", "Desc": "Toggles whether the bot should print command errors when a command is incorrectly used.", - "Usage": "`{0}ve`" + "Usage": [ + "{0}ve" + ] }, "streamrolekeyword": { "Cmd": "streamrolekw srkw", "Desc": "Sets keyword which is required in the stream's title in order for the streamrole to apply. Provide no keyword in order to reset.", - "Usage": "`{0}srkw` or `{0}srkw PUBG`" + "Usage": [ + "{0}srkw", + "{0}srkw PUBG" + ] }, "streamroleblacklist": { "Cmd": "streamrolebl srbl", "Desc": "Adds or removes a blacklisted user. Blacklisted users will never receive the stream role.", - "Usage": "`{0}srbl add @b1nzy#1234` or `{0}srbl rem @b1nzy#1234`" + "Usage": [ + "{0}srbl add @b1nzy#1234", + "{0}srbl rem @b1nzy#1234" + ] }, "streamrolewhitelist": { "Cmd": "streamrolewl srwl", "Desc": "Adds or removes a whitelisted user. Whitelisted users will receive the stream role even if they don't have the specified keyword in their stream title.", - "Usage": "`{0}srwl add @b1nzy#1234` or `{0}srwl rem @b1nzy#1234`" + "Usage": [ + "{0}srwl add @b1nzy#1234", + "{0}srwl rem @b1nzy#1234" + ] }, "botconfigedit": { "Cmd": "botconfigedit bce", "Desc": "Sets one of available bot config settings to a specified value. Use the command without any parameters to get a list of available settings.", - "Usage": "`{0}bce CurrencyName b1nzy` or `{0}bce`" + "Usage": [ + "{0}bce CurrencyName b1nzy", + "{0}bce" + ] }, "nsfwtagblacklist": { "Cmd": "nsfwtagbl nsfwtbl", "Desc": "Toggles whether the tag is blacklisted or not in nsfw searches. Provide no parameters to see the list of blacklisted tags.", - "Usage": "`{0}nsfwtbl poop`" + "Usage": [ + "{0}nsfwtbl poop" + ] }, "experience": { "Cmd": "experience xp", "Desc": "Shows your xp stats. Specify the user to show that user's stats instead.", - "Usage": "`{0}xp`" + "Usage": [ + "{0}xp" + ] }, "xpexclusionlist": { "Cmd": "xpexclusionlist xpexl", "Desc": "Shows the roles and channels excluded from the XP system on this server, as well as whether the whole server is excluded.", - "Usage": "`{0}xpexl`" + "Usage": [ + "{0}xpexl" + ] }, "xpexclude": { "Cmd": "xpexclude xpex", "Desc": "Exclude a channel, role or current server from the xp system.", - "Usage": "`{0}xpex Role Excluded-Role` `{0}xpex Server`" + "Usage": [ + "{0}xpex Role Excluded-Role` `{0}xpex Server" + ] }, "xpnotify": { "Cmd": "xpnotify xpn", "Desc": "Sets how the bot should notify you when you get a `server` or `global` level. You can set `dm` (for the bot to send a direct message), `channel` (to get notified in the channel you sent the last message in) or `none` to disable.", - "Usage": "`{0}xpn global dm` `{0}xpn server channel`" + "Usage": [ + "{0}xpn global dm` `{0}xpn server channel" + ] }, "xprolerewards": { "Cmd": "xprolerewards xprrs", "Desc": "Shows currently set role rewards.", - "Usage": "`{0}xprrs`" + "Usage": [ + "{0}xprrs" + ] }, "xprolereward": { "Cmd": "xprolereward xprr", "Desc": "Sets a role reward on a specified level. Provide no role name in order to remove the role reward.", - "Usage": "`{0}xprr 3 Social`" + "Usage": [ + "{0}xprr 3 Social" + ] }, "xpleaderboard": { "Cmd": "xpleaderboard xplb", "Desc": "Shows current server's xp leaderboard.", - "Usage": "`{0}xplb`" + "Usage": [ + "{0}xplb" + ] }, "xpgloballeaderboard": { "Cmd": "xpgleaderboard xpglb", "Desc": "Shows the global xp leaderboard.", - "Usage": "`{0}xpglb`" + "Usage": [ + "{0}xpglb" + ] }, "xpadd": { "Cmd": "xpadd", "Desc": "Adds xp to a user on the server. This does not affect their global ranking. You can use negative values.", - "Usage": "`{0}xpadd 100 @b1nzy`" + "Usage": [ + "{0}xpadd 100 @b1nzy" + ] }, "clubcreate": { "Cmd": "clubcreate", "Desc": "Creates a club. You must be atleast level 5 and not be in the club already.", - "Usage": "`{0}clubcreate b1nzy's friends`" + "Usage": [ + "{0}clubcreate b1nzy's friends" + ] }, "clubinformation": { "Cmd": "clubinfo", "Desc": "Shows information about the club.", - "Usage": "`{0}clubinfo b1nzy's friends#123`" + "Usage": [ + "{0}clubinfo b1nzy's friends#123" + ] }, "clubapply": { "Cmd": "clubapply", "Desc": "Apply to join a club. You must meet that club's minimum level requirement, and not be on its ban list.", - "Usage": "`{0}clubapply b1nzy's friends#123`" + "Usage": [ + "{0}clubapply b1nzy's friends#123" + ] }, "clubaccept": { "Cmd": "clubaccept", "Desc": "Accept a user who applied to your club.", - "Usage": "`{0}clubaccept b1nzy#1337`" + "Usage": [ + "{0}clubaccept b1nzy#1337" + ] }, "clubleave": { "Cmd": "clubleave", "Desc": "Leaves the club you're currently in.", - "Usage": "`{0}clubleave`" + "Usage": [ + "{0}clubleave" + ] }, "clubdisband": { "Cmd": "clubdisband", "Desc": "Disbands the club you're the owner of. This action is irreversible.", - "Usage": "`{0}clubdisband`" + "Usage": [ + "{0}clubdisband" + ] }, "clubkick": { "Cmd": "clubkick", "Desc": "Kicks the user from the club. You must be the club owner. They will be able to apply again.", - "Usage": "`{0}clubkick b1nzy#1337`" + "Usage": [ + "{0}clubkick b1nzy#1337" + ] }, "clubban": { "Cmd": "clubban", "Desc": "Bans the user from the club. You must be the club owner. They will not be able to apply again.", - "Usage": "`{0}clubban b1nzy#1337`" + "Usage": [ + "{0}clubban b1nzy#1337" + ] }, "clubunban": { "Cmd": "clubunban", "Desc": "Unbans the previously banned user from the club. You must be the club owner.", - "Usage": "`{0}clubunban b1nzy#1337`" + "Usage": [ + "{0}clubunban b1nzy#1337" + ] }, "clublevelreq": { "Cmd": "clublevelreq", "Desc": "Sets the club required level to apply to join the club. You must be club owner. You can't set this number below 5.", - "Usage": "`{0}clublevelreq 7`" + "Usage": [ + "{0}clublevelreq 7" + ] }, "clubicon": { "Cmd": "clubicon", "Desc": "Sets the club icon.", - "Usage": "`{0}clubicon https://i.imgur.com/htfDMfU.png`" + "Usage": [ + "{0}clubicon https://i.imgur.com/htfDMfU.png" + ] }, "clubapps": { "Cmd": "clubapps", "Desc": "Shows the list of users who have applied to your club. Paginated. You must be club owner to use this command.", - "Usage": "`{0}clubapps 2`" + "Usage": [ + "{0}clubapps 2" + ] }, "clubbans": { "Cmd": "clubbans", "Desc": "Shows the list of users who have banned from your club. Paginated. You must be club owner to use this command.", - "Usage": "`{0}clubbans 2`" + "Usage": [ + "{0}clubbans 2" + ] }, "clubleaderboard": { "Cmd": "clublb", "Desc": "Shows club rankings on the specified page.", - "Usage": "`{0}clublb 2`" + "Usage": [ + "{0}clublb 2" + ] }, "nsfwclearcache": { "Cmd": "nsfwcc", "Desc": "Clears nsfw cache.", - "Usage": "`{0}nsfwcc`" + "Usage": [ + "{0}nsfwcc" + ] }, "clubadmin": { "Cmd": "clubadmin", "Desc": "Assigns (or unassigns) staff role to the member of the club. Admins can ban, kick and accept applications.", - "Usage": "`{0}clubadmin`" + "Usage": [ + "{0}clubadmin" + ] }, "autoboobs": { "Cmd": "autoboobs", "Desc": "Posts a boobs every X seconds. 20 seconds minimum. Provide no arguments to disable.", - "Usage": "`{0}autoboobs 30` or `{0}autoboobs`" + "Usage": [ + "{0}autoboobs 30", + "{0}autoboobs" + ] }, "autobutts": { "Cmd": "autobutts", "Desc": "Posts a butts every X seconds. 20 seconds minimum. Provide no arguments to disable.", - "Usage": "`{0}autobutts 30` or `{0}autobutts`" + "Usage": [ + "{0}autobutts 30", + "{0}autobutts" + ] }, "eightball": { - "cmd": "8ball", - "desc": "Ask the 8ball a yes/no question.", - "usage": "`{0}8ball`" + "Cmd": "8ball", + "Desc": "Ask the 8ball a yes/no question.", + "Usage": [ + "{0}8ball" + ] } } \ No newline at end of file