diff --git a/commands.json b/commands.json index fefcba4b9..353e72134 100644 --- a/commands.json +++ b/commands.json @@ -1 +1 @@ -[{"id":"builds.add","call":"add build","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^(?:add build|ab)\\s?(.+)?"},"path":"Builds/AddBuild.js","usages":[{"description":"Display instructions for creating a new build with Genesis","parameters":[]}],"blacklistable":true},{"id":"builds.delete","call":"delete build","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^delete build\\s?(.+)?"},"path":"Builds/DeleteBuild.js","usages":[{"description":"Display information on an existing build from Genesis","parameters":[]}],"blacklistable":true},{"id":"builds.get","call":"get build","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^(?:get build|gb)\\s?(.+)?"},"path":"Builds/GetBuild.js","usages":[{"description":"Display information on an existing build from Genesis","parameters":[]}],"blacklistable":true},{"id":"builds.list","call":"list builds","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^(?:list builds|lb)\\s?(.+)?"},"path":"Builds/ListBuilds.js","usages":[{"description":"Display information on an existing build from Genesis. `|` separates title, body, and image. `;` separates sections in the body.","parameters":["title | body | image"]}],"blacklistable":true},{"id":"builds.set","call":"set build","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^set build(?:\\s?(all|title|body|image)\\s?(.+))?"},"path":"Builds/SetField.js","usages":[{"description":"Display instructions for creating a new build with Genesis","parameters":[]}],"blacklistable":true},{"id":"core.bug","call":"bug","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^bug\\s*(.*)?"},"path":"Core/Bug.js","usages":[{"description":"Send a bug report to bot owner","parameters":["bug report"]},{"description":"Send a bug report to bot owner with subject, message, and optional screenshot. The `|` are important.","parameters":["subject","body","* screenshot"],"separator":" | "},{"description":"Send a bug report to bot owner with subject, message, and optional screenshot. The `|` are important.","parameters":["subject","body","attached image"],"separator":" | "}],"blacklistable":true},{"id":"core.help","call":"help","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^help(?:\\s(.*)?)?$"},"path":"Core/Help.js","usages":[{"description":"Receive the full welcome data by visiting the provided link.","parameters":[]},{"description":"Query for info about a specific command","parameters":["command search"]}],"blacklistable":true},{"id":"core.info","call":"info","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^infos?$"},"path":"Core/Info.js","usages":[{"description":"Information about the bot","parameters":[]}],"blacklistable":true},{"id":"core.invitation","call":"invitation","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"gi","body":"^invitation$"},"path":"Core/Invite.js","usages":[{"description":"Send Invitation Link to Authorize Bot to Join a Server","parameters":[]}],"blacklistable":true},{"id":"core.ping","call":"ping","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^pings?$"},"path":"Core/Ping.js","usages":[{"description":"Ping Genesis to test connectivity","parameters":[]}],"blacklistable":true},{"id":"core.reset","call":"reset","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^resets?$"},"path":"Core/Reset.js","usages":[{"description":"Reset the settings for this guild","parameters":[]}],"blacklistable":true},{"id":"core.support","call":"support","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^supports?$"},"path":"Core/Support.js","usages":[{"description":"Support info about the bot","parameters":[]}],"blacklistable":true},{"id":"customcommands.add","call":"add cc","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^add cc\\s+(\\w+)?\\s?([\\s\\S]*)"},"path":"CustomCommands/AddCustomCommand.js","usages":[{"description":"Add a custom command","parameters":["command call","comamnd response"]}],"blacklistable":true},{"id":"customcommands.delete","call":"delete cc","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^delete cc\\s+(\\w+)?$"},"path":"CustomCommands/DeleteCustomCommand.js","usages":[{"description":"Delete a custom command","parameters":["command call"]}],"blacklistable":true},{"id":"settings.cc.list","call":"list cc","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^list ccs?$"},"path":"CustomCommands/ListCustomCommand.js","usages":[{"description":"List custom commands for this guild","parameters":[]}],"blacklistable":true},{"id":"settings.cc.ping","call":"ping cc","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^ping cc\\s?(on|off)?(?:\\s+in\\s+((?:\\<\\#)?\\d+(?:\\>)?|here))?$"},"path":"CustomCommands/PingCustomCommand.js","usages":[{"description":"Change if this channel's use custom commands will ping","parameters":["custom commands enabled"]}],"blacklistable":true},{"id":"settings.addDefaultRole","call":"add default role","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^add default role\\s?(\\d+)?$"},"path":"DefaultRoles/AddDefaultRole.js","usages":[{"description":"Add a new default role for persons joining the server.","parameters":["role id"]}],"blacklistable":true},{"id":"settings.clearDefaultRoles","call":"clear default roles","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^clear default roless?$"},"path":"DefaultRoles/ClearDefaultRoles.js","usages":[{"description":"Clears all default roles for the server.","parameters":[]}],"blacklistable":true},{"id":"settings.deleteDefaultRole","call":"delete default role","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^delete default role\\s?(\\d+)?$"},"path":"DefaultRoles/DeleteDefaultRole.js","usages":[{"description":"Add a new default role for persons joining the server.","parameters":["message"]}],"blacklistable":true},{"id":"dynamicchannels.add","call":"templates add","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^templates add\\s?(?:(?:<#)?(\\d+)(?:>)?)?(?:\\s+(--relay))?$"},"path":"DynamicChannels/AddTemplateChannel.js","usages":[{"description":"Add a template channel. If `--relay` is specified, it will use relay naming.","parameters":["channel mention","--relay"]}],"blacklistable":true},{"id":"dynamicchannels.delete","call":"templates delete","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^templates delete\\s?(?:(?:<#)?(\\d+)(?:>)?)?$"},"path":"DynamicChannels/DeleteTemplateChannel.js","usages":[{"description":"Remove a template channel","parameters":["channel mention"]}],"blacklistable":true},{"id":"dynamicchannels.list","call":"templates list","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^templates lists?$"},"path":"DynamicChannels/ListTemplateChannels.js","usages":[{"description":"List Template Channels","parameters":[]}],"blacklistable":true},{"id":"inline.warframe.info","call":"[Query]","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":true,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"gi","body":"\\[(.*?)\\]"},"path":"Info/ItemEmbeddedInline.js","usages":[{"description":"Get stats for a Warframe","parameters":["[warframe name]"]}],"blacklistable":true},{"id":"lfg.add","call":"lfg","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^lfg\\s?(.+)?"},"path":"LFG/LFG.js","usages":[{"description":"Submit an LFG request to this guild's LFG channel","parameters":["place","time","for","platform *"],"separator":" | "}],"blacklistable":true},{"id":"settings.lfgChannel","call":"set lfg channel","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set lfg channel\\s?(?:(?:<#)(\\d+)(?:>))?$"},"path":"LFG/SetLFGChannel.js","usages":[{"description":"Set the LFG channel","parameters":["channel id"]}],"blacklistable":true},{"id":"settings.banLog","call":"set ban log","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set ban log\\s?(?:(?:<#)(\\d+)(?:>))?$"},"path":"Logging/BanLog.js","usages":[{"description":"Set the ban log channel","parameters":["channel id"]}],"blacklistable":true},{"id":"settings.memberRemoveLog","call":"set member remove log","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set member remove log\\s?(?:(?:<#)(\\d+)(?:>))?$"},"path":"Logging/MemberRemoveLog.js","usages":[{"description":"Set the member removal log channel","parameters":["channel id"]}],"blacklistable":true},{"id":"settings.msgDeleteLog","call":"set message delete log","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set message delete log\\s?(?:(?:<#)(\\d+)(?:>))?$"},"path":"Logging/SetMessageDeleteLog.js","usages":[{"description":"Set the message dlete log channel","parameters":["channel id"]}],"blacklistable":true},{"id":"settings.setModRole","call":"set mod","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set mod\\s?(?:(?:<@&)(\\d+)(?:>))?$"},"path":"Logging/SetModRole.js","usages":[{"description":"Change the configured mod role","parameters":["mod role id"]}],"blacklistable":true},{"id":"settings.vulgarLog","call":"set vulgar log","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set vulgar log\\s?(?:(?:<#)(\\d+)(?:>))?$"},"path":"Logging/SetVulgarLog.js","usages":[{"description":"Set the vulgarity log channel","parameters":["channel id"]}],"blacklistable":true},{"id":"settings.unbanLog","call":"set unban log","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set unban log\\s?(?:(?:<#)(\\d+)(?:>))?$"},"path":"Logging/UnbanLog.js","usages":[{"description":"Set the unban log channel","parameters":["channel id"]}],"blacklistable":true},{"id":"warframe.misc.arcane","call":"arcane","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^arcane(.+)?"},"path":"Ondemand/Arcane.js","usages":[{"description":"Get information about an Arcane Enhancement","parameters":["enhancement name"]}],"blacklistable":true},{"id":"warframe.misc.armor","call":"armor","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^armor(?:\\s+([\\d+\\.?\\d*\\s]+))?"},"path":"Ondemand/Armor.js","usages":[{"description":"Display instructions for calculating armor","parameters":[]},{"description":"Display current damage resistance and amount of corrosive procs required to strip it.","parameters":["current armor"]},{"description":"Display the current armor, damage resistance, and necessary corrosive procs to strip armor.","parameters":["base armor","base level","current level"]}],"blacklistable":true},{"id":"warframe.misc.buildchart","call":"buildchart","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^buildcharts?$"},"path":"Ondemand/BuildChart.js","usages":[{"description":"Display Weapon Build Flowchart chart","parameters":[]}],"blacklistable":true},{"id":"warframe.misc.damage","call":"damage","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^damages?$"},"path":"Ondemand/Damage.js","usages":[{"description":"Display Damage 2.0 chart","parameters":[]}],"blacklistable":true},{"id":"warframe.misc.efficiency","call":"efficiency","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^efficiencys?$"},"path":"Ondemand/Efficiency.js","usages":[{"description":"Display Warframe Efficiency Chart","parameters":[]}],"blacklistable":true},{"id":"warframe.misc.stats","call":"frame","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^frame\\s?(.+)?"},"path":"Ondemand/FrameStats.js","usages":[{"description":"Get stats for a Warframe","parameters":["warframe name"]}],"blacklistable":true},{"id":"warframe.misc.mod","call":"mod","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^mod(.+)"},"path":"Ondemand/Mod.js","usages":[{"description":"Search the Warframe Wiki for a mod's image","parameters":[]}],"blacklistable":true},{"id":"warframe.misc.pricecheck","call":"pricecheck","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^p(?:rice)?\\s?c(?:heck)?(?:\\s+([\\w+\\s]+))?"},"path":"Ondemand/Pricecheck.js","usages":[{"description":"Display an items worth from nexus-stats.com","parameters":["item"]}],"blacklistable":true},{"id":"warframe.misc.profile","call":"profile","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^profile(?:\\s+(.+))?"},"path":"Ondemand/Profile.js","usages":[{"description":"Search for a player's profile","parameters":["in-game name (PC only)"]}],"blacklistable":true},{"id":"warframe.misc.progress","call":"progress","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^progresss?$"},"path":"Ondemand/Progression.js","usages":[{"description":"Display Warframe Progression Chart","parameters":[]}],"blacklistable":true},{"id":"warframe.stats.raid","call":"raid","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^(?:raids?|trials?)\\s*(.+)?"},"path":"Ondemand/Raid.js","usages":[{"description":"Search for a users's raid stats","parameters":["username"]}],"blacklistable":true},{"id":"warframe.calculations.shields","call":"shields","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^shield(?: +([\\d+\\.?\\d* ]+))?"},"path":"Ondemand/Shields.js","usages":[{"description":"Display an enemy's current shields.","parameters":["base shields","base level","current level"]}],"blacklistable":true},{"id":"warframe.misc.tutorial","call":"tutorial","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^tutorials?\\s?(.+)?"},"path":"Ondemand/Tutorial.js","usages":[{"description":"Get a Warframe Tutorial Video","parameters":["subject"]}],"blacklistable":true},{"id":"warframe.misc.weaponstats","call":"weapon","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^weapon\\s?(.+)?"},"path":"Ondemand/Weapon.js","usages":[{"description":"Get stats for a Warframe","parameters":["weapon name"]}],"blacklistable":true},{"id":"warframe.misc.whatsin","call":"whatsin","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^whatsin(?:\\s+(axi|neo|meso|lith)\\s?(\\w\\d+))?"},"path":"Ondemand/Whatsin.js","usages":[{"description":"Display what drops from a relic","parameters":["relic"]}],"blacklistable":true},{"id":"warframe.misc.whereis","call":"whereis","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^where\\s?(?:is\\s?)?(.+)?"},"path":"Ondemand/WhereIs.js","usages":[{"description":"Display where something drops from","parameters":["item"]}],"blacklistable":true},{"id":"warframe.misc.wiki","call":"wiki","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^wiki\\s*([\\w\\s-]+)?"},"path":"Ondemand/Wiki.js","usages":[{"description":"Search the Warframe wiki for a specific topic","parameters":["topic"]}],"blacklistable":true},{"id":"core.avatar","call":"avatar","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":true,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^avatar\\s*(.*)?"},"path":"Owner/Avatar.js","usages":[{"description":"Set the bot's avatar url","parameters":["avatar url"]}],"blacklistable":true},{"id":"core.webhooks.delete","call":"delete webhook in","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":true,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^delete webhook in\\s*(.*)?"},"path":"Owner/DeleteWebhook.js","usages":[{"description":"Delete the webhook for a given channel id","parameters":["channel id"]}],"blacklistable":true},{"id":"core.kill","call":"kill","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":true,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^kills?$"},"path":"Owner/Kill.js","usages":[{"description":"Kill current shard","parameters":[]}],"blacklistable":true},{"id":"core.leaveserver","call":"leaveserver","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":true,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^leaveserver\\s*(.*)?"},"path":"Owner/LeaveServer.js","usages":[{"description":"Tell the bot to leave a server, if it's cached","parameters":["server id"]}],"blacklistable":true},{"id":"core.reload","call":"reload","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":true,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^reloads?$"},"path":"Owner/Reload.js","usages":[{"description":"Reload bot modules","parameters":[]}],"blacklistable":true},{"id":"core.restart","call":"restart","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":true,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^restarts?$"},"path":"Owner/Restart.js","usages":[{"description":"Restart bot","parameters":[]}],"blacklistable":true},{"id":"core.servers","call":"servers","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":true,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^serverss?$"},"path":"Owner/Servers.js","usages":[{"description":"Get list of bot servers in file","parameters":[]}],"blacklistable":true},{"id":"core.username","call":"username","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":true,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^username\\s*(.*)?"},"path":"Owner/Username.js","usages":[{"description":"Set the bot's username","parameters":["username"]}],"blacklistable":true},{"id":"promocode.managers.add","call":"glyphs add manager","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs add manager\\s?(?:--pool\\s?(.*))?([0-9]{0,20})?"},"path":"Promocodes/AddManager.js","usages":[{"description":"Add a manager to a glyph pool","parameters":["--pool *",""],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"glyphs.addCode","call":"glyphs import","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs import\\s*(?:--pool\\s(.*))?\\s?(pc|ps4|xb1)?(.*)?"},"path":"Promocodes/AddPromocode.js","usages":[{"description":"Add a single code","parameters":["--pool *","",""],"delimBefore":" ","delimAfter":" "},{"description":"Bulk add codes. Export a single code to see the format.","parameters":["--pool *","",""],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.code.claim","call":"glyphs claim","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs claim\\s?(?:--pool\\s(.*))?\\s?(pc|ps4|xb1)?\\s?(?:--password\\s(.*))?"},"path":"Promocodes/ClaimPromocode.js","usages":[{"description":"Claim a code","parameters":["--pool *","--password (required if pool is secured)",""],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.pool.clearpassword","call":"glyphs clear password","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs clear password\\s?(?:--pool\\s(.*))?"},"path":"Promocodes/ClearPoolPassword.js","usages":[{"description":"Clear a pool's password","parameters":["--pool *"],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.pools.add","call":"glyphs create pool","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs create pool\\s?(.+)?"},"path":"Promocodes/CreatePool.js","usages":[{"description":"Create a pool from a name","parameters":["new pool name"]}],"blacklistable":true},{"id":"promocode.pools.remove","call":"glyphs del pool","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs del pool\\s?(.*)?"},"path":"Promocodes/DeletePool.js","usages":[{"description":"Remove a glyph pool that you manage","parameters":["--pool *"],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.export","call":"glyphs export","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"","body":"^glyphs export\\s?(.*)"},"path":"Promocodes/Export.js","usages":[{"description":"Export codes from a pool to a `.csv` file","parameters":["--pool *"],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.code.grant","call":"glyphs grant","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs grant\\s?(?:--pool\\s(.*))?\\s?(pc|ps4|xb1)?\\s?(?:<@([0-9]{0,20})>)?"},"path":"Promocodes/GrantPromocode.js","usages":[{"description":"Grant a code to a user from a specific pool","parameters":["--pool *","",""],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.code.claimed","call":"glyphs list claimed","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^glyphs list claimed"},"path":"Promocodes/ListClaimed.js","usages":[{"description":"List claimed codes.","parameters":[]}],"blacklistable":true},{"id":"promocode.pools.managed","call":"glyphs list managed","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^glyphs list managed"},"path":"Promocodes/ListPools.js","usages":[{"description":"List claimed codes.","parameters":[]}],"blacklistable":true},{"id":"promocode.managers.remove","call":"glyphs del manager","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs del manager\\s?(?:--pool\\s?(.*))?\\s?(?:<@([0-9]{15,20})>)?"},"path":"Promocodes/RemoveManager.js","usages":[{"description":"Remove a manager from a code pool","parameters":["--pool *",""],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.pool.restrict","call":"glyphs restrict","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs restrict\\s?(on|off)?\\s*(?:--pool\\s?(.*))?"},"path":"Promocodes/RestrictPool.js","usages":[{"description":"Restrict or unrestrict a pool","parameters":["","--pool *"],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.code.revoke","call":"glyphs revoke","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs revoke\\s?(.*)?"},"path":"Promocodes/RevokePromocode.js","usages":[{"description":"Revoke a claimed promocode from a user","parameters":["code to revoke"]}],"blacklistable":true},{"id":"promocode.pool.guild","call":"glyphs set guild","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs set guild\\s?(?:--pool\\s?(.*))?([0-9]{0,20})?"},"path":"Promocodes/SetPoolGuild.js","usages":[{"description":"Set the default guild (server) for a pool","parameters":["--pool *",""],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.pool.name","call":"glyphs set name","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs set name\\s?(?:--pool\\s?(?:.*))?(.*)?"},"path":"Promocodes/SetPoolName.js","usages":[{"description":"Set a pool's name. This doesn't alter the pool Id.","parameters":["--pool *",""],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.pool.password","call":"glyphs set password","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs set password\\s?(?:--pool\\s?(?:.*))?\\s?(.*)?"},"path":"Promocodes/SetPoolPassword.js","usages":[{"description":"Set a pool's password.","parameters":["--pool *",""],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.pool.public","call":"glyphs public","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs public\\s?(on|off)?\\s*(?:--pool\\s?(.*))?"},"path":"Promocodes/SetPoolPublic.js","usages":[{"description":"Make a pool public or private","parameters":["","--pool *"],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"settings.addRole","call":"add role","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^add role\\s?(.*)?\\s?(--create)?\\s?(--mentionable)?"},"path":"Roles/AddRole.js","usages":[{"description":"Show instructions for adding joinable roles","parameters":[]},{"description":"Add a role","parameters":["Role/Role id to add","--create","--mentionable","--leavable (on | off)","--requires @Role Mention"]}],"blacklistable":true},{"id":"settings.joinRole","call":"join","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^join\\s?(.*)?"},"path":"Roles/JoinRole.js","usages":[{"description":"Show instructions for joining roles","parameters":[]},{"description":"Joining a role","parameters":["Role/Role id to join."]}],"blacklistable":true},{"id":"settings.leaveRole","call":"leave","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^leave\\s?(.*)?"},"path":"Roles/LeaveRole.js","usages":[{"description":"Show instructions for leaving roles","parameters":[]},{"description":"Leave a role","parameters":["Role/Role id to leave"]}],"blacklistable":true},{"id":"settings.removeRole","call":"remove role","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^remove role\\s?(.*)?"},"path":"Roles/RemoveRole.js","usages":[{"description":"Show instructions for removing joinable roles","parameters":[]},{"description":"Remove a role","parameters":["Role/Role id to add","--delete"]}],"blacklistable":true},{"id":"settings.roleids","call":"roleids","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^roleidss?$"},"path":"Roles/RoleIds.js","usages":[{"description":"Get list of role ids","parameters":[]}],"blacklistable":true},{"id":"settings.ranks","call":"roles","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^roless?$"},"path":"Roles/Roles.js","usages":[{"description":"Get list of joinable roles","parameters":[]}],"blacklistable":true},{"id":"rooms.create","call":"create","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^create\\s?(room|raid|team|chat)?(\\w|-)?(?:-n(.+))?(--no-text)?(--public)?(--text)?(--hidden)?(--shown)?"},"path":"Rooms/Create.js","usages":[{"description":"Display instructions for creating temporary rooms","parameters":[]},{"description":"Create temporary text and voice channels for the calling user.","parameters":["room | raid | team"]},{"description":"Create temporary text and voice channels for the calling user and any mentioned users/roles.","parameters":["room | raid | team","users and/or role"]},{"description":"Create temporary text and voice channels for the calling user and any mentioned users/roles, with a custom name","parameters":["room | raid | team","users and/or role","-n name","--no-text","--public","--text","--locked"]}],"blacklistable":true},{"id":"rooms.destry","call":"destroy room","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^destroy room$"},"path":"Rooms/Destroy.js","usages":[],"blacklistable":true},{"id":"rooms.hide","call":"hide","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^hide$"},"path":"Rooms/Hide.js","usages":[],"blacklistable":true},{"id":"rooms.invite","call":"invite","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^invite"},"path":"Rooms/Invite.js","usages":[],"blacklistable":true},{"id":"rooms.lock","call":"lock","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^lock$"},"path":"Rooms/Lock.js","usages":[],"blacklistable":true},{"id":"rooms.rename","call":"rename room ","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^rename room \\s?(.+)?"},"path":"Rooms/Rename.js","usages":[],"blacklistable":true},{"id":"rooms.resize","call":"resize room","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^resize room\\s?(\\d+)"},"path":"Rooms/ResizeRoom.js","usages":[],"blacklistable":true},{"id":"settings.allowprivateroom","call":"allow private room","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^allow private room\\s?(on|off)?$"},"path":"Rooms/RoomCreation.js","usages":[{"description":"Change if the bot is allowed to create private channels","parameters":["private rooms enabled"]}],"blacklistable":true},{"id":"settings.defaultNoText","call":"set rooms notext","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set rooms notext\\s?(on|off)?$"},"path":"Rooms/RoomDefaultNoText.js","usages":[{"description":"Change if the bot should create unlocked channels by default (defaults to off)","parameters":["private notext defaulted"]}],"blacklistable":true},{"id":"settings.defaultroomsunlocked","call":"set rooms unlocked","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set rooms unlocked\\s?(on|off)?$"},"path":"Rooms/RoomPublicDefault.js","usages":[{"description":"Change if the bot should create unlocked channels by default (defaults to off)","parameters":["private rooms defaulted"]}],"blacklistable":true},{"id":"settings.defaultroomsshown","call":"set rooms shown","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set rooms shown\\s?(on|off)?$"},"path":"Rooms/RoomShownDefault.js","usages":[{"description":"Change if the bot should create shown channels by default (defaults to off)","parameters":["shown rooms defaulted"]}],"blacklistable":true},{"id":"settings.defaultcategory","call":"set rooms category","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set rooms category\\s?(\\d+)?$"},"path":"Rooms/SetDefaultCategory.js","usages":[{"description":"Change the bot's default category for temp rooms. Defaults to none.","parameters":["temp room default"]}],"blacklistable":true},{"id":"rooms.show","call":"show","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^show$"},"path":"Rooms/Show.js","usages":[],"blacklistable":true},{"id":"rooms.unlock","call":"unlock","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^unlock$"},"path":"Rooms/Unlock.js","usages":[],"blacklistable":true},{"id":"settings.allowCustom","call":"allow custom commands","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^allow\\s?custom(?:\\s?commands)?\\s?(on|off)?(?:\\s+in\\s+((?:\\<\\#)?\\d+(?:\\>)?|here))?$"},"path":"Settings/AllowCustomCommands.js","usages":[{"description":"Change if this channel can use custom commands","parameters":["custom commands enabled"]}],"blacklistable":true},{"id":"settings.allowinline","call":"allow inline commands","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^allow\\s?inline(?:\\s?commands)?\\s?(on|off)?(?:\\s+in\\s+((?:\\<\\#)?\\d+(?:\\>)?|here))?$"},"path":"Settings/AllowInlineCommands.js","usages":[{"description":"Change if this channel can use inline commands","parameters":["inline commands enabled"]}],"blacklistable":true},{"id":"settings.clearChannelPerms","call":"clear permissions","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^clear permissions(?:\\s*((?:(?:<#)?\\d+(?:>)?)|current|all|guild))?$"},"path":"Settings/ClearChannelPermissions.js","usages":[{"description":"Clear channel permisions for this or specified room, or guild","parameters":[]}],"blacklistable":true},{"id":"settings.clearpings","call":"clear pings","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^clear pingss?$"},"path":"Settings/ClearPings.js","usages":[{"description":"Clears all pings for the server","parameters":[]}],"blacklistable":true},{"id":"settings.deleteafterrespond","call":"delete after respond","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^delete\\s?after\\s?respond\\s?(all|command|respond|none)?(?:\\s+in\\s+((?:\\<\\#)?\\d+(?:\\>)?|here))?$"},"path":"Settings/DeleteAfterRespond.js","usages":[{"description":"Change if the bot to delete commands and/or responses after responding in this channel","parameters":["deleting enabled"]}],"blacklistable":true},{"id":"settings.deleteexpired","call":"delete expired","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^delete\\s?expired\\s?(on|off)?$"},"path":"Settings/DeleteExpired.js","usages":[{"description":"Change if the bot to deletes expired notifications","parameters":["deleting enabled"]}],"blacklistable":true},{"id":"settings.disable","call":"disable","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^disable"},"path":"Settings/Disable.js","usages":[{"description":"Disable a command for a role in a channel or channels","parameters":["command id> in for "},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^enable(?:\\s+(\\w*\\.*\\w*\\.*\\w*\\*?)(?:\\s+in\\s+((?:\\<\\#)?\\d+(?:\\>)?|here|\\*))?(?:\\s+for\\s((?:\\<\\@\\&?)?\\d+(?:\\>)?|\\*))?)?"},"path":"Settings/Enable.js","usages":[{"description":"Enable a command for a role in a channel or channels","parameters":["command id> in for "},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^language\\s?(en-us)?(?:\\s+in\\s+((?:\\<\\#)?\\d+(?:\\>)?|here))?$"},"path":"Settings/Language.js","usages":[{"description":"Change this channel's language","parameters":["language"]}],"blacklistable":true},{"id":"settings.platform","call":"platform","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"platform(?:\\s+([pcsxb14]{2,3}))?(?:\\s+in\\s+((?:\\<\\#)?\\d+(?:\\>)?|here))?$"},"path":"Settings/Platform.js","usages":[{"description":"Change this channel's platform","parameters":["platform"]}],"blacklistable":true},{"id":"settings.prefix","call":"prefix","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^prefix(?:\\s+(.+))?"},"path":"Settings/Prefix.js","usages":[{"description":"Change this channel's platform","parameters":["prefix (up to 3 characters)"]}],"blacklistable":true},{"id":"settings.respondSettings","call":"respond to settings","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^respond(?:\\sto)?\\s?settings\\s?(on|off)?(?:\\s+in\\s+((?:\\<\\#)?\\d+(?:\\>)?|here))?$"},"path":"Settings/RespondToSettings.js","usages":[{"description":"Change if this channel has settings changes responded in it","parameters":["response enabled"]}],"blacklistable":true},{"id":"settings.settings","call":"settings","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^settings(?:\\s*--expand)?(?:\\s+in\\s+((?:(?:<#)?\\d+(?:>)?)|current|all))?$"},"path":"Settings/Settings.js","usages":[{"description":"Get settings","parameters":[]}],"blacklistable":true},{"id":"silly.corgi","call":"corgi","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^corgis?$"},"path":"Silly/Corgi.js","usages":[{"description":"Genesis gets you a corgi","parameters":[]}],"blacklistable":true},{"id":"silly.echo","call":"echo","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^echo\\s?(.+)?"},"path":"Silly/Echo.js","usages":[{"description":"Genesis echos your message","parameters":[]}],"blacklistable":true},{"id":"silly.hug","call":"hug","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^hugs?$"},"path":"Silly/Hug.js","usages":[{"description":"Hug Genesis","parameters":[]}],"blacklistable":true},{"id":"silly.joke","call":"joke","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^jokes?$"},"path":"Silly/Joke.js","usages":[{"description":"Genesis tells a joke","parameters":[]}],"blacklistable":true},{"id":"silly.promocode","call":"promocodes","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^promocodess?$"},"path":"Silly/PromoCodes.js","usages":[{"description":"Get promocodes","parameters":[]}],"blacklistable":true},{"id":"settings.setping","call":"set ping","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set ping\\s*((alerts|invasions|news|sorties|baro|darvo|deals.featured|deals.popular|enemies|enemies.departed|conclave.weeklies|conclave.dailies|syndicate.arbiters|syndicate.suda|syndicate.loka|syndicate.perrin|syndicate.veil|syndicate.meridian|twitter.warframe.tweet|twitter.warframe.retweet|twitter.warframe.quote|twitter.warframe.reply|twitter.digitalextremes.tweet|twitter.digitalextremes.quote|twitter.digitalextremes.reply|twitter.pablo.tweet|twitter.pablo.retweet|twitter.pablo.quote|twitter.pablo.reply|twitter.cameron.tweet|twitter.cameron.retweet|twitter.cameron.quote|twitter.cameron.reply|twitter.rebecca.tweet|twitter.rebecca.retweet|twitter.rebecca.quote|twitter.rebecca.reply|twitter.steve.tweet|twitter.steve.retweet|twitter.steve.quote|twitter.steve.reply|twitter.danielle.tweet|twitter.danielle.retweet|twitter.danielle.quote|twitter.danielle.reply|twitter.megan.tweet|twitter.megan.retweet|twitter.megan.quote|twitter.megan.reply|twitter.george.tweet|twitter.george.retweet|twitter.george.quote|twitter.george.reply|twitter.maciej.tweet|twitter.maciej.retweet|twitter.maciej.quote|twitter.maciej.reply|twitter.sheldon.tweet|twitter.sheldon.retweet|twitter.sheldon.quote|twitter.sheldon.reply|twitter.narc.tweet|twitter.narc.retweet|twitter.narc.quote|twitter.narc.reply|twitter.helen.tweet|twitter.helen.retweet|twitter.helen.quote|twitter.helen.reply|twitter.tobiah.tweet|twitter.tobiah.retweet|twitter.tobiah.quote|twitter.tobiah.reply|twitter.wfdiscord.tweet|twitter.wfdiscord.retweet|twitter.wfdiscord.quote|twitter.wfdiscord.reply|updates|primeaccess|streams|cetus.day|cetus.night|earth.day|earth.night|syndicate.ostrons|syndicate.assassins|operations|fissures.t1.excavation|fissures.t1.sabotage|fissures.t1.mobiledefense|fissures.t1.assassination|fissures.t1.exterminate|fissures.t1.hive|fissures.t1.defense|fissures.t1.interception|fissures.t1.rathuum|fissures.t1.conclave|fissures.t1.rescue|fissures.t1.spy|fissures.t1.survival|fissures.t1.capture|fissures.t1.darksector|fissures.t1.hijack|fissures.t1.assault|fissures.t1.evacuation|fissures.t2.excavation|fissures.t2.sabotage|fissures.t2.mobiledefense|fissures.t2.assassination|fissures.t2.exterminate|fissures.t2.hive|fissures.t2.defense|fissures.t2.interception|fissures.t2.rathuum|fissures.t2.conclave|fissures.t2.rescue|fissures.t2.spy|fissures.t2.survival|fissures.t2.capture|fissures.t2.darksector|fissures.t2.hijack|fissures.t2.assault|fissures.t2.evacuation|fissures.t3.excavation|fissures.t3.sabotage|fissures.t3.mobiledefense|fissures.t3.assassination|fissures.t3.exterminate|fissures.t3.hive|fissures.t3.defense|fissures.t3.interception|fissures.t3.rathuum|fissures.t3.conclave|fissures.t3.rescue|fissures.t3.spy|fissures.t3.survival|fissures.t3.capture|fissures.t3.darksector|fissures.t3.hijack|fissures.t3.assault|fissures.t3.evacuation|fissures.t4.excavation|fissures.t4.sabotage|fissures.t4.mobiledefense|fissures.t4.assassination|fissures.t4.exterminate|fissures.t4.hive|fissures.t4.defense|fissures.t4.interception|fissures.t4.rathuum|fissures.t4.conclave|fissures.t4.rescue|fissures.t4.spy|fissures.t4.survival|fissures.t4.capture|fissures.t4.darksector|fissures.t4.hijack|fissures.t4.assault|fissures.t4.evacuation|vauban|vandal|wraith|skin|helmet|nitain|mutalist|weapon|fieldron|detonite|mutagen|aura|neuralSensors|orokinCell|alloyPlate|circuits|controlModule|ferrite|gallium|morphics|nanoSpores|oxium|rubedo|salvage|plastids|polymerBundle|argonCrystal|cryotic|tellurium|neurodes|nightmare|endo|reactor|catalyst|forma|synthula|exilus|riven|kavatGene|kubrowEgg|traces|other|credits|all|events|items|syndicates|conclave|clantech|deals|resources|fissures.t1|fissures.t2|fissures.t3|fissures.t4|fissures.excavation|fissures.sabotage|fissures.mobiledefense|fissures.assassination|fissures.exterminate|fissures.hive|fissures.defense|fissures.interception|fissures.rathuum|fissures.conclave|fissures.rescue|fissures.spy|fissures.survival|fissures.capture|fissures.darksector|fissures.hijack|fissures.assault|fissures.evacuation|fissures|cetus|earth|twitter)(.+)?)?"},"path":"Tracking/SetPing.js","usages":[{"description":"Set ping for an event or item","parameters":["event or reward","@role or user mention"]}],"blacklistable":true},{"id":"settings.start","call":"start","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^starts?$"},"path":"Tracking/Start.js","usages":[{"description":"Lols","parameters":[]}],"blacklistable":true},{"id":"settings.stop","call":"stop","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^stop\\s*(?:\\s+in\\s+)?((?:\\<\\#)?\\d+(?:\\>)?|here)?"},"path":"Tracking/Stop.js","usages":[{"description":"Untracks everything in a channel, effectively stopping tracking for the channel","parameters":[]}],"blacklistable":true},{"id":"settings.track","call":"track","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^track(?:\\s+(cetus\\.day\\.[0-1]?[0-9]?[0-9]|cetus\\.night\\.[0-1]?[0-9]?[0-9]|alerts|invasions|news|sorties|baro|darvo|deals.featured|deals.popular|enemies|enemies.departed|conclave.weeklies|conclave.dailies|syndicate.arbiters|syndicate.suda|syndicate.loka|syndicate.perrin|syndicate.veil|syndicate.meridian|twitter.warframe.tweet|twitter.warframe.retweet|twitter.warframe.quote|twitter.warframe.reply|twitter.digitalextremes.tweet|twitter.digitalextremes.quote|twitter.digitalextremes.reply|twitter.pablo.tweet|twitter.pablo.retweet|twitter.pablo.quote|twitter.pablo.reply|twitter.cameron.tweet|twitter.cameron.retweet|twitter.cameron.quote|twitter.cameron.reply|twitter.rebecca.tweet|twitter.rebecca.retweet|twitter.rebecca.quote|twitter.rebecca.reply|twitter.steve.tweet|twitter.steve.retweet|twitter.steve.quote|twitter.steve.reply|twitter.danielle.tweet|twitter.danielle.retweet|twitter.danielle.quote|twitter.danielle.reply|twitter.megan.tweet|twitter.megan.retweet|twitter.megan.quote|twitter.megan.reply|twitter.george.tweet|twitter.george.retweet|twitter.george.quote|twitter.george.reply|twitter.maciej.tweet|twitter.maciej.retweet|twitter.maciej.quote|twitter.maciej.reply|twitter.sheldon.tweet|twitter.sheldon.retweet|twitter.sheldon.quote|twitter.sheldon.reply|twitter.narc.tweet|twitter.narc.retweet|twitter.narc.quote|twitter.narc.reply|twitter.helen.tweet|twitter.helen.retweet|twitter.helen.quote|twitter.helen.reply|twitter.tobiah.tweet|twitter.tobiah.retweet|twitter.tobiah.quote|twitter.tobiah.reply|twitter.wfdiscord.tweet|twitter.wfdiscord.retweet|twitter.wfdiscord.quote|twitter.wfdiscord.reply|updates|primeaccess|streams|cetus.day|cetus.night|earth.day|earth.night|syndicate.ostrons|syndicate.assassins|operations|fissures.t1.excavation|fissures.t1.sabotage|fissures.t1.mobiledefense|fissures.t1.assassination|fissures.t1.exterminate|fissures.t1.hive|fissures.t1.defense|fissures.t1.interception|fissures.t1.rathuum|fissures.t1.conclave|fissures.t1.rescue|fissures.t1.spy|fissures.t1.survival|fissures.t1.capture|fissures.t1.darksector|fissures.t1.hijack|fissures.t1.assault|fissures.t1.evacuation|fissures.t2.excavation|fissures.t2.sabotage|fissures.t2.mobiledefense|fissures.t2.assassination|fissures.t2.exterminate|fissures.t2.hive|fissures.t2.defense|fissures.t2.interception|fissures.t2.rathuum|fissures.t2.conclave|fissures.t2.rescue|fissures.t2.spy|fissures.t2.survival|fissures.t2.capture|fissures.t2.darksector|fissures.t2.hijack|fissures.t2.assault|fissures.t2.evacuation|fissures.t3.excavation|fissures.t3.sabotage|fissures.t3.mobiledefense|fissures.t3.assassination|fissures.t3.exterminate|fissures.t3.hive|fissures.t3.defense|fissures.t3.interception|fissures.t3.rathuum|fissures.t3.conclave|fissures.t3.rescue|fissures.t3.spy|fissures.t3.survival|fissures.t3.capture|fissures.t3.darksector|fissures.t3.hijack|fissures.t3.assault|fissures.t3.evacuation|fissures.t4.excavation|fissures.t4.sabotage|fissures.t4.mobiledefense|fissures.t4.assassination|fissures.t4.exterminate|fissures.t4.hive|fissures.t4.defense|fissures.t4.interception|fissures.t4.rathuum|fissures.t4.conclave|fissures.t4.rescue|fissures.t4.spy|fissures.t4.survival|fissures.t4.capture|fissures.t4.darksector|fissures.t4.hijack|fissures.t4.assault|fissures.t4.evacuation|vauban|vandal|wraith|skin|helmet|nitain|mutalist|weapon|fieldron|detonite|mutagen|aura|neuralSensors|orokinCell|alloyPlate|circuits|controlModule|ferrite|gallium|morphics|nanoSpores|oxium|rubedo|salvage|plastids|polymerBundle|argonCrystal|cryotic|tellurium|neurodes|nightmare|endo|reactor|catalyst|forma|synthula|exilus|riven|kavatGene|kubrowEgg|traces|other|credits|all|events|items|syndicates|conclave|clantech|deals|resources|fissures.t1|fissures.t2|fissures.t3|fissures.t4|fissures.excavation|fissures.sabotage|fissures.mobiledefense|fissures.assassination|fissures.exterminate|fissures.hive|fissures.defense|fissures.interception|fissures.rathuum|fissures.conclave|fissures.rescue|fissures.spy|fissures.survival|fissures.capture|fissures.darksector|fissures.hijack|fissures.assault|fissures.evacuation|fissures|cetus|earth|twitter)*)?(?:\\s+in\\s+((?:\\<\\#)?\\d+(?:\\>)?|here))?"},"path":"Tracking/Track.js","usages":[{"description":"Show tracking command for tracking events","parameters":[]},{"description":"Track an event or events","parameters":["event(s) to track"]}],"blacklistable":true},{"id":"settings.untrack","call":"untrack","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^untrack\\s*(cetus\\.day\\.[0-1]?[0-9]?[0-9]?|cetus\\.night\\.[0-1]?[0-9]?[0-9]?|alerts|invasions|news|sorties|baro|darvo|deals.featured|deals.popular|enemies|enemies.departed|conclave.weeklies|conclave.dailies|syndicate.arbiters|syndicate.suda|syndicate.loka|syndicate.perrin|syndicate.veil|syndicate.meridian|twitter.warframe.tweet|twitter.warframe.retweet|twitter.warframe.quote|twitter.warframe.reply|twitter.digitalextremes.tweet|twitter.digitalextremes.quote|twitter.digitalextremes.reply|twitter.pablo.tweet|twitter.pablo.retweet|twitter.pablo.quote|twitter.pablo.reply|twitter.cameron.tweet|twitter.cameron.retweet|twitter.cameron.quote|twitter.cameron.reply|twitter.rebecca.tweet|twitter.rebecca.retweet|twitter.rebecca.quote|twitter.rebecca.reply|twitter.steve.tweet|twitter.steve.retweet|twitter.steve.quote|twitter.steve.reply|twitter.danielle.tweet|twitter.danielle.retweet|twitter.danielle.quote|twitter.danielle.reply|twitter.megan.tweet|twitter.megan.retweet|twitter.megan.quote|twitter.megan.reply|twitter.george.tweet|twitter.george.retweet|twitter.george.quote|twitter.george.reply|twitter.maciej.tweet|twitter.maciej.retweet|twitter.maciej.quote|twitter.maciej.reply|twitter.sheldon.tweet|twitter.sheldon.retweet|twitter.sheldon.quote|twitter.sheldon.reply|twitter.narc.tweet|twitter.narc.retweet|twitter.narc.quote|twitter.narc.reply|twitter.helen.tweet|twitter.helen.retweet|twitter.helen.quote|twitter.helen.reply|twitter.tobiah.tweet|twitter.tobiah.retweet|twitter.tobiah.quote|twitter.tobiah.reply|twitter.wfdiscord.tweet|twitter.wfdiscord.retweet|twitter.wfdiscord.quote|twitter.wfdiscord.reply|updates|primeaccess|streams|cetus.day|cetus.night|earth.day|earth.night|syndicate.ostrons|syndicate.assassins|operations|fissures.t1.excavation|fissures.t1.sabotage|fissures.t1.mobiledefense|fissures.t1.assassination|fissures.t1.exterminate|fissures.t1.hive|fissures.t1.defense|fissures.t1.interception|fissures.t1.rathuum|fissures.t1.conclave|fissures.t1.rescue|fissures.t1.spy|fissures.t1.survival|fissures.t1.capture|fissures.t1.darksector|fissures.t1.hijack|fissures.t1.assault|fissures.t1.evacuation|fissures.t2.excavation|fissures.t2.sabotage|fissures.t2.mobiledefense|fissures.t2.assassination|fissures.t2.exterminate|fissures.t2.hive|fissures.t2.defense|fissures.t2.interception|fissures.t2.rathuum|fissures.t2.conclave|fissures.t2.rescue|fissures.t2.spy|fissures.t2.survival|fissures.t2.capture|fissures.t2.darksector|fissures.t2.hijack|fissures.t2.assault|fissures.t2.evacuation|fissures.t3.excavation|fissures.t3.sabotage|fissures.t3.mobiledefense|fissures.t3.assassination|fissures.t3.exterminate|fissures.t3.hive|fissures.t3.defense|fissures.t3.interception|fissures.t3.rathuum|fissures.t3.conclave|fissures.t3.rescue|fissures.t3.spy|fissures.t3.survival|fissures.t3.capture|fissures.t3.darksector|fissures.t3.hijack|fissures.t3.assault|fissures.t3.evacuation|fissures.t4.excavation|fissures.t4.sabotage|fissures.t4.mobiledefense|fissures.t4.assassination|fissures.t4.exterminate|fissures.t4.hive|fissures.t4.defense|fissures.t4.interception|fissures.t4.rathuum|fissures.t4.conclave|fissures.t4.rescue|fissures.t4.spy|fissures.t4.survival|fissures.t4.capture|fissures.t4.darksector|fissures.t4.hijack|fissures.t4.assault|fissures.t4.evacuation|vauban|vandal|wraith|skin|helmet|nitain|mutalist|weapon|fieldron|detonite|mutagen|aura|neuralSensors|orokinCell|alloyPlate|circuits|controlModule|ferrite|gallium|morphics|nanoSpores|oxium|rubedo|salvage|plastids|polymerBundle|argonCrystal|cryotic|tellurium|neurodes|nightmare|endo|reactor|catalyst|forma|synthula|exilus|riven|kavatGene|kubrowEgg|traces|other|credits|all|events|items|syndicates|conclave|clantech|deals|resources|fissures.t1|fissures.t2|fissures.t3|fissures.t4|fissures.excavation|fissures.sabotage|fissures.mobiledefense|fissures.assassination|fissures.exterminate|fissures.hive|fissures.defense|fissures.interception|fissures.rathuum|fissures.conclave|fissures.rescue|fissures.spy|fissures.survival|fissures.capture|fissures.darksector|fissures.hijack|fissures.assault|fissures.evacuation|fissures|cetus|earth|twitter)*(?:\\s+in\\s+)?((?:\\<\\#)?\\d+(?:\\>)?|here)?"},"path":"Tracking/Untrack.js","usages":[{"description":"Show tracking command for untracking events","parameters":[]},{"description":"Untrack an event or events","parameters":["event(s) to untrack"]}],"blacklistable":true},{"id":"utilities.dump","call":"dump","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^dumps?$"},"path":"Utilities/Dump.js","usages":[{"description":"Dump a channel config to a channel","parameters":["JSON configuration file"]}],"blacklistable":true},{"id":"settings.getcommandids","call":"getcommandids","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^getcommandidss?$"},"path":"Utilities/GetCommandIds.js","usages":[{"description":"Get list of bot command ids available for you to view","parameters":[]}],"blacklistable":true},{"id":"inline.poll","call":"poll:","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":true,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"gi","body":"poll:.+"},"path":"Utilities/PollInline.js","usages":[{"description":"Create a simple poll","parameters":["poll statement"]}],"blacklistable":true},{"id":"inline.roll","call":"roll?","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":true,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"gi","body":"left or right[:\\?]"},"path":"Utilities/RollInline.js","usages":[{"description":"roll between rivens","parameters":["riven link to vote about rolling"]}],"blacklistable":true},{"id":"util.serverInfo","call":"serverinfo","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^serverinfos?$"},"path":"Utilities/ServerInfo.js","usages":[{"description":"Get info about current server","parameters":[]}],"blacklistable":true},{"id":"util.userinfo","call":"userinfo","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"","body":"^userinfo\\s*(?:(?:<@)(\\d+)(?:>))?"},"path":"Utilities/UserInfo.js","usages":[{"description":"Get info about a user","parameters":[]}],"blacklistable":true},{"id":"settings.clearwelcomemessage","call":"clear welcome message","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^clear welcome messages?$"},"path":"Welcoming/ClearWelcome.js","usages":[{"description":"Clears all messages (non-DM) for this guild.","parameters":[]}],"blacklistable":true},{"id":"settings.clearwelcomedm","call":"clear welcome dm","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^clear welcome dms?$"},"path":"Welcoming/ClearWelcomeDM.js","usages":[{"description":"Clears all welcome direct messages for the server.","parameters":[]}],"blacklistable":true},{"id":"settings.setwelcome","call":"set welcome message","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set welcome message\\s?((.+|\\n)+)?$"},"path":"Welcoming/SetWelcome.js","usages":[{"description":"Set welcome message for this server in this channel","parameters":["message"]}],"blacklistable":true},{"id":"settings.setwelcomedm","call":"set welcome dm","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set welcome dm\\s?((.+|\\n)+)?$"},"path":"Welcoming/SetWelcomeDM.js","usages":[{"description":"Set welcome message for this server in this channel to send to a user in DM","parameters":["message"]}],"blacklistable":true},{"id":"warframe.worldstate.alerts","call":"alert","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^alerts?\\s?(?:(compact))?\\s?(?:on\\s+([pcsxb14]{2,3}))?"},"path":"Worldstate/Alerts.js","usages":[{"description":"Display the currently active alerts","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.baro","call":"baro","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^baro(?:\\s+on\\s+([pcsxb14]{2,3}))?"},"path":"Worldstate/Baro.js","usages":[{"description":"Display the current status of the Void Trader","parameters":[]}],"blacklistable":true},{"id":"inline.borko","call":"when borko","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":true,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"gi","body":"(?:where|when|whe|why|which).*(?:borko|baro|bimjo|bonko|bilbo|bermo|barmo|bruno|borso|borneo|bosnia|beerr?ow)"},"path":"Worldstate/BaroInline.js","usages":[{"description":"Display the current status of the Void Trader","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.conclaveChallenges","call":"conclave","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^conclave(?:\\s+(all|day|week))?(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/ConclaveChallenges.js","usages":[{"description":"Display conclave challenges for a challenge type.","parameters":["conclave category"]}],"blacklistable":true},{"id":"warframe.worldstate.construction","call":"construction","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^construction(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/Construction.js","usages":[{"description":"Display current construction progress.","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.darvo","call":"darvo","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^darvo(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/Darvo.js","usages":[{"description":"Displays today's Darvo deal","parameters":[]}],"blacklistable":true},{"id":"warframe.misc.cycle","call":"cycle","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^cycle\\s?(earth)?"},"path":"Worldstate/EarthCycle.js","usages":[{"description":"Display Cetus's current cycle progress","parameters":[]},{"description":"Display Earth's current cycle progress","parameters":["earth"]}],"blacklistable":true},{"id":"warframe.worldstate.acolytes","call":"acolyte","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^acolytes?(?:\\s+on\\s+([pcsxb14]{2,3}))?"},"path":"Worldstate/Enemies.js","usages":[{"description":"Display any currently active acolyte-style enemies.","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.events","call":"events","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^events(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/Event.js","usages":[{"description":"Display current events.","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.featureddeal","call":"featureddeal","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^featured\\s?deals?(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/FeaturedDeal.js","usages":[{"description":"Displays current featured deals","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.fissures","call":"fissure","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^fissures?(?:\\s?(compact))?(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/Fissures.js","usages":[{"description":"Get the current list of Void Fissure Missions","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.invasions","call":"invasion","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^invasions?(?:\\s?(compact))?(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/Invasions.js","usages":[{"description":"Display the currently active Invasions","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.news","call":"news","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^news(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/News.js","usages":[{"description":"Display the currently active news","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.populardeals","call":"populardeal","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^popular\\sdeals?(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/PopularSale.js","usages":[{"description":"Displays current featured deals","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.primeaccess","call":"primeaccess","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^prime\\s?access(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/PrimeAccess.js","usages":[{"description":"Display the currently active prime access news","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.simaris","call":"simaris","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"(^simaris(?:\\s+on\\s+([pcsxb14]{2,3}))?$)|(^simaris(?:\\s+target\\s+([\\sa-zA-Z0-9]+))?$)"},"path":"Worldstate/Simaris.js","usages":[{"description":"Display current Sanctuary status.","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.sorties","call":"sortie","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^sorties?(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/Sorties.js","usages":[{"description":"Display the currently active sorties","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.syndicate","call":"syndicate","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^syndicate\\s?(?:(all|arbiters of hexis|perrin sequence|cephalon suda|steel meridian|new loka|red veil|ostrons|assassins))?(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/Syndicates.js","usages":[{"description":"Display syndicate nodes for a syndicate.","parameters":["syndicate"]}],"blacklistable":true},{"id":"warframe.worldstate.updates","call":"update","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^updates?(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/Updates.js","usages":[{"description":"Display the currently active update news","parameters":[]}],"blacklistable":true}] \ No newline at end of file +[{"id":"builds.delete","call":"delete build","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^delete build\\s?(.+)?"},"path":"Builds/DeleteBuild.js","usages":[{"description":"Display information on an existing build from Genesis","parameters":[]}],"blacklistable":true},{"id":"builds.get","call":"get build","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^(?:get build|gb)\\s?(.+)?"},"path":"Builds/GetBuild.js","usages":[{"description":"Display information on an existing build from Genesis","parameters":[]}],"blacklistable":true},{"id":"builds.list","call":"list builds","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^(?:list builds|lb)\\s?(.+)?"},"path":"Builds/ListBuilds.js","usages":[{"description":"Display information on an existing build from Genesis. `|` separates title, body, and image. `;` separates sections in the body.","parameters":["title | body | image"]}],"blacklistable":true},{"id":"builds.set","call":"set build","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^set build(?:\\s?(all|title|body|image)\\s?(.+))?"},"path":"Builds/SetField.js","usages":[{"description":"Display instructions for creating a new build with Genesis","parameters":[]}],"blacklistable":true},{"id":"core.bug","call":"bug","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^bug\\s*(.*)?"},"path":"Core/Bug.js","usages":[{"description":"Send a bug report to bot owner","parameters":["bug report"]},{"description":"Send a bug report to bot owner with subject, message, and optional screenshot. The `|` are important.","parameters":["subject","body","* screenshot"],"separator":" | "},{"description":"Send a bug report to bot owner with subject, message, and optional screenshot. The `|` are important.","parameters":["subject","body","attached image"],"separator":" | "}],"blacklistable":true},{"id":"core.help","call":"help","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^help(?:\\s(.*)?)?$"},"path":"Core/Help.js","usages":[{"description":"Receive the full welcome data by visiting the provided link.","parameters":[]},{"description":"Query for info about a specific command","parameters":["command search"]}],"blacklistable":true},{"id":"core.info","call":"info","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^infos?$"},"path":"Core/Info.js","usages":[{"description":"Information about the bot","parameters":[]}],"blacklistable":true},{"id":"core.invitation","call":"invitation","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"gi","body":"^invitation$"},"path":"Core/Invite.js","usages":[{"description":"Send Invitation Link to Authorize Bot to Join a Server","parameters":[]}],"blacklistable":true},{"id":"core.ping","call":"ping","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^pings?$"},"path":"Core/Ping.js","usages":[{"description":"Ping Genesis to test connectivity","parameters":[]}],"blacklistable":true},{"id":"core.reset","call":"reset","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^resets?$"},"path":"Core/Reset.js","usages":[{"description":"Reset the settings for this guild","parameters":[]}],"blacklistable":true},{"id":"core.support","call":"support","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^supports?$"},"path":"Core/Support.js","usages":[{"description":"Support info about the bot","parameters":[]}],"blacklistable":true},{"id":"customcommands.add","call":"add cc","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^add cc\\s+(\\w+)?\\s?([\\s\\S]*)"},"path":"CustomCommands/AddCustomCommand.js","usages":[{"description":"Add a custom command","parameters":["command call","comamnd response"]}],"blacklistable":true},{"id":"customcommands.delete","call":"delete cc","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^delete cc\\s+(\\w+)?$"},"path":"CustomCommands/DeleteCustomCommand.js","usages":[{"description":"Delete a custom command","parameters":["command call"]}],"blacklistable":true},{"id":"settings.cc.list","call":"list cc","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^list ccs?$"},"path":"CustomCommands/ListCustomCommand.js","usages":[{"description":"List custom commands for this guild","parameters":[]}],"blacklistable":true},{"id":"settings.cc.ping","call":"ping cc","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^ping cc\\s?(on|off)?(?:\\s+in\\s+((?:\\<\\#)?\\d+(?:\\>)?|here))?$"},"path":"CustomCommands/PingCustomCommand.js","usages":[{"description":"Change if this channel's use custom commands will ping","parameters":["custom commands enabled"]}],"blacklistable":true},{"id":"settings.addDefaultRole","call":"add default role","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^add default role\\s?(\\d+)?$"},"path":"DefaultRoles/AddDefaultRole.js","usages":[{"description":"Add a new default role for persons joining the server.","parameters":["role id"]}],"blacklistable":true},{"id":"settings.clearDefaultRoles","call":"clear default roles","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^clear default roless?$"},"path":"DefaultRoles/ClearDefaultRoles.js","usages":[{"description":"Clears all default roles for the server.","parameters":[]}],"blacklistable":true},{"id":"settings.deleteDefaultRole","call":"delete default role","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^delete default role\\s?(\\d+)?$"},"path":"DefaultRoles/DeleteDefaultRole.js","usages":[{"description":"Add a new default role for persons joining the server.","parameters":["message"]}],"blacklistable":true},{"id":"dynamicchannels.add","call":"templates add","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^templates add\\s?(?:(?:<#)?(\\d+)(?:>)?)?(?:\\s+(--relay))?$"},"path":"DynamicChannels/AddTemplateChannel.js","usages":[{"description":"Add a template channel. If `--relay` is specified, it will use relay naming.","parameters":["channel mention","--relay"]}],"blacklistable":true},{"id":"dynamicchannels.delete","call":"templates delete","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^templates delete\\s?(?:(?:<#)?(\\d+)(?:>)?)?$"},"path":"DynamicChannels/DeleteTemplateChannel.js","usages":[{"description":"Remove a template channel","parameters":["channel mention"]}],"blacklistable":true},{"id":"dynamicchannels.list","call":"templates list","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^templates lists?$"},"path":"DynamicChannels/ListTemplateChannels.js","usages":[{"description":"List Template Channels","parameters":[]}],"blacklistable":true},{"id":"inline.warframe.info","call":"[Query]","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":true,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"gi","body":"\\[(.*?)\\]"},"path":"Info/ItemEmbeddedInline.js","usages":[{"description":"Get stats for a Warframe","parameters":["[warframe name]"]}],"blacklistable":true},{"id":"lfg.add","call":"lfg","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^lfg\\s?(.+)?"},"path":"LFG/LFG.js","usages":[{"description":"Submit an LFG request to this guild's LFG channel","parameters":["place","time","for","platform *"],"separator":" | "}],"blacklistable":true},{"id":"settings.lfgChannel","call":"set lfg channel","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set lfg channel\\s?(?:(?:<#)(\\d+)(?:>))?$"},"path":"LFG/SetLFGChannel.js","usages":[{"description":"Set the LFG channel","parameters":["channel id"]}],"blacklistable":true},{"id":"settings.banLog","call":"set ban log","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set ban log\\s?(?:(?:<#)(\\d+)(?:>))?$"},"path":"Logging/BanLog.js","usages":[{"description":"Set the ban log channel","parameters":["channel id"]}],"blacklistable":true},{"id":"settings.memberRemoveLog","call":"set member remove log","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set member remove log\\s?(?:(?:<#)(\\d+)(?:>))?$"},"path":"Logging/MemberRemoveLog.js","usages":[{"description":"Set the member removal log channel","parameters":["channel id"]}],"blacklistable":true},{"id":"settings.msgDeleteLog","call":"set message delete log","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set message delete log\\s?(?:(?:<#)(\\d+)(?:>))?$"},"path":"Logging/SetMessageDeleteLog.js","usages":[{"description":"Set the message dlete log channel","parameters":["channel id"]}],"blacklistable":true},{"id":"settings.setModRole","call":"set mod","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set mod\\s?(?:(?:<@&)(\\d+)(?:>))?$"},"path":"Logging/SetModRole.js","usages":[{"description":"Change the configured mod role","parameters":["mod role id"]}],"blacklistable":true},{"id":"settings.vulgarLog","call":"set vulgar log","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set vulgar log\\s?(?:(?:<#)(\\d+)(?:>))?$"},"path":"Logging/SetVulgarLog.js","usages":[{"description":"Set the vulgarity log channel","parameters":["channel id"]}],"blacklistable":true},{"id":"settings.unbanLog","call":"set unban log","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set unban log\\s?(?:(?:<#)(\\d+)(?:>))?$"},"path":"Logging/UnbanLog.js","usages":[{"description":"Set the unban log channel","parameters":["channel id"]}],"blacklistable":true},{"id":"warframe.misc.arcane","call":"arcane","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^arcane(.+)?"},"path":"Ondemand/Arcane.js","usages":[{"description":"Get information about an Arcane Enhancement","parameters":["enhancement name"]}],"blacklistable":true},{"id":"warframe.misc.armor","call":"armor","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^armor(?:\\s+([\\d+\\.?\\d*\\s]+))?"},"path":"Ondemand/Armor.js","usages":[{"description":"Display instructions for calculating armor","parameters":[]},{"description":"Display current damage resistance and amount of corrosive procs required to strip it.","parameters":["current armor"]},{"description":"Display the current armor, damage resistance, and necessary corrosive procs to strip armor.","parameters":["base armor","base level","current level"]}],"blacklistable":true},{"id":"warframe.misc.buildchart","call":"buildchart","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^buildcharts?$"},"path":"Ondemand/BuildChart.js","usages":[{"description":"Display Weapon Build Flowchart chart","parameters":[]}],"blacklistable":true},{"id":"warframe.misc.stats","call":"frame","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^frame\\s?(.+)?"},"path":"Ondemand/FrameStats.js","usages":[{"description":"Get stats for a Warframe","parameters":["warframe name"]}],"blacklistable":true},{"id":"warframe.misc.mod","call":"mod","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^mod(.+)"},"path":"Ondemand/Mod.js","usages":[{"description":"Search the Warframe Wiki for a mod's image","parameters":[]}],"blacklistable":true},{"id":"warframe.misc.pricecheck","call":"pricecheck","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^p(?:rice)?\\s?c(?:heck)?(?:\\s+([\\w+\\s]+))?"},"path":"Ondemand/Pricecheck.js","usages":[{"description":"Display an items worth from nexus-stats.com","parameters":["item"]}],"blacklistable":true},{"id":"warframe.misc.profile","call":"profile","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^profile(?:\\s+(.+))?"},"path":"Ondemand/Profile.js","usages":[{"description":"Search for a player's profile","parameters":["in-game name (PC only)"]}],"blacklistable":true},{"id":"warframe.misc.progress","call":"progress","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^progresss?$"},"path":"Ondemand/Progression.js","usages":[{"description":"Display Warframe Progression Chart","parameters":[]}],"blacklistable":true},{"id":"warframe.stats.raid","call":"raid","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^(?:raids?|trials?)\\s*(.+)?"},"path":"Ondemand/Raid.js","usages":[{"description":"Search for a users's raid stats","parameters":["username"]}],"blacklistable":true},{"id":"warframe.calculations.shields","call":"shields","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^shield(?: +([\\d+\\.?\\d* ]+))?"},"path":"Ondemand/Shields.js","usages":[{"description":"Display an enemy's current shields.","parameters":["base shields","base level","current level"]}],"blacklistable":true},{"id":"warframe.misc.tutorial","call":"tutorial","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^tutorials?\\s?(.+)?"},"path":"Ondemand/Tutorial.js","usages":[{"description":"Get a Warframe Tutorial Video","parameters":["subject"]}],"blacklistable":true},{"id":"warframe.misc.weaponstats","call":"weapon","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^weapon\\s?(.+)?"},"path":"Ondemand/Weapon.js","usages":[{"description":"Get stats for a Warframe","parameters":["weapon name"]}],"blacklistable":true},{"id":"warframe.misc.whatsin","call":"whatsin","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^whatsin(?:\\s+(axi|neo|meso|lith)\\s?(\\w\\d+))?"},"path":"Ondemand/Whatsin.js","usages":[{"description":"Display what drops from a relic","parameters":["relic"]}],"blacklistable":true},{"id":"warframe.misc.whereis","call":"whereis","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^where\\s?(?:is\\s?)?(.+)?"},"path":"Ondemand/WhereIs.js","usages":[{"description":"Display where something drops from","parameters":["item"]}],"blacklistable":true},{"id":"warframe.misc.wiki","call":"wiki","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^wiki\\s*([\\w\\s-]+)?"},"path":"Ondemand/Wiki.js","usages":[{"description":"Search the Warframe wiki for a specific topic","parameters":["topic"]}],"blacklistable":true},{"id":"core.avatar","call":"avatar","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":true,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^avatar\\s*(.*)?"},"path":"Owner/Avatar.js","usages":[{"description":"Set the bot's avatar url","parameters":["avatar url"]}],"blacklistable":true},{"id":"core.webhooks.delete","call":"delete webhook in","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":true,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^delete webhook in\\s*(.*)?"},"path":"Owner/DeleteWebhook.js","usages":[{"description":"Delete the webhook for a given channel id","parameters":["channel id"]}],"blacklistable":true},{"id":"core.kill","call":"kill","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":true,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^kills?$"},"path":"Owner/Kill.js","usages":[{"description":"Kill current shard","parameters":[]}],"blacklistable":true},{"id":"core.leaveserver","call":"leaveserver","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":true,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^leaveserver\\s*(.*)?"},"path":"Owner/LeaveServer.js","usages":[{"description":"Tell the bot to leave a server, if it's cached","parameters":["server id"]}],"blacklistable":true},{"id":"core.reload","call":"reload","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":true,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^reloads?$"},"path":"Owner/Reload.js","usages":[{"description":"Reload bot modules","parameters":[]}],"blacklistable":true},{"id":"core.restart","call":"restart","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":true,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^restarts?$"},"path":"Owner/Restart.js","usages":[{"description":"Restart bot","parameters":[]}],"blacklistable":true},{"id":"core.servers","call":"servers","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":true,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^serverss?$"},"path":"Owner/Servers.js","usages":[{"description":"Get list of bot servers in file","parameters":[]}],"blacklistable":true},{"id":"core.username","call":"username","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":true,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^username\\s*(.*)?"},"path":"Owner/Username.js","usages":[{"description":"Set the bot's username","parameters":["username"]}],"blacklistable":true},{"id":"promocode.managers.add","call":"glyphs add manager","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs add manager\\s?(?:--pool\\s?(.*))?([0-9]{0,20})?"},"path":"Promocodes/AddManager.js","usages":[{"description":"Add a manager to a glyph pool","parameters":["--pool *",""],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"glyphs.addCode","call":"glyphs import","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs import\\s*(?:--pool\\s(.*))?\\s?(pc|ps4|xb1)?(.*)?"},"path":"Promocodes/AddPromocode.js","usages":[{"description":"Add a single code","parameters":["--pool *","",""],"delimBefore":" ","delimAfter":" "},{"description":"Bulk add codes. Export a single code to see the format.","parameters":["--pool *","",""],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.code.claim","call":"glyphs claim","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs claim\\s?(?:--pool\\s(.*))?\\s?(pc|ps4|xb1)?\\s?(?:--password\\s(.*))?"},"path":"Promocodes/ClaimPromocode.js","usages":[{"description":"Claim a code","parameters":["--pool *","--password (required if pool is secured)",""],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.pool.clearpassword","call":"glyphs clear password","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs clear password\\s?(?:--pool\\s(.*))?"},"path":"Promocodes/ClearPoolPassword.js","usages":[{"description":"Clear a pool's password","parameters":["--pool *"],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.pools.add","call":"glyphs create pool","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs create pool\\s?(.+)?"},"path":"Promocodes/CreatePool.js","usages":[{"description":"Create a pool from a name","parameters":["new pool name"]}],"blacklistable":true},{"id":"promocode.pools.remove","call":"glyphs del pool","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs del pool\\s?(.*)?"},"path":"Promocodes/DeletePool.js","usages":[{"description":"Remove a glyph pool that you manage","parameters":["--pool *"],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.export","call":"glyphs export","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"","body":"^glyphs export\\s?(.*)"},"path":"Promocodes/Export.js","usages":[{"description":"Export codes from a pool to a `.csv` file","parameters":["--pool *"],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.code.grant","call":"glyphs grant","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs grant\\s?(?:--pool\\s(.*))?\\s?(pc|ps4|xb1)?\\s?(?:<@([0-9]{0,20})>)?"},"path":"Promocodes/GrantPromocode.js","usages":[{"description":"Grant a code to a user from a specific pool","parameters":["--pool *","",""],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.code.claimed","call":"glyphs list claimed","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^glyphs list claimed"},"path":"Promocodes/ListClaimed.js","usages":[{"description":"List claimed codes.","parameters":[]}],"blacklistable":true},{"id":"promocode.pools.managed","call":"glyphs list managed","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^glyphs list managed"},"path":"Promocodes/ListPools.js","usages":[{"description":"List claimed codes.","parameters":[]}],"blacklistable":true},{"id":"promocode.managers.remove","call":"glyphs del manager","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs del manager\\s?(?:--pool\\s?(.*))?\\s?(?:<@([0-9]{15,20})>)?"},"path":"Promocodes/RemoveManager.js","usages":[{"description":"Remove a manager from a code pool","parameters":["--pool *",""],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.pool.restrict","call":"glyphs restrict","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs restrict\\s?(on|off)?\\s*(?:--pool\\s?(.*))?"},"path":"Promocodes/RestrictPool.js","usages":[{"description":"Restrict or unrestrict a pool","parameters":["","--pool *"],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.code.revoke","call":"glyphs revoke","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs revoke\\s?(.*)?"},"path":"Promocodes/RevokePromocode.js","usages":[{"description":"Revoke a claimed promocode from a user","parameters":["code to revoke"]}],"blacklistable":true},{"id":"promocode.pool.guild","call":"glyphs set guild","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs set guild\\s?(?:--pool\\s?(.*))?([0-9]{0,20})?"},"path":"Promocodes/SetPoolGuild.js","usages":[{"description":"Set the default guild (server) for a pool","parameters":["--pool *",""],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.pool.name","call":"glyphs set name","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs set name\\s?(?:--pool\\s?(?:.*))?(.*)?"},"path":"Promocodes/SetPoolName.js","usages":[{"description":"Set a pool's name. This doesn't alter the pool Id.","parameters":["--pool *",""],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.pool.password","call":"glyphs set password","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs set password\\s?(?:--pool\\s?(?:.*))?\\s?(.*)?"},"path":"Promocodes/SetPoolPassword.js","usages":[{"description":"Set a pool's password.","parameters":["--pool *",""],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"promocode.pool.public","call":"glyphs public","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^glyphs public\\s?(on|off)?\\s*(?:--pool\\s?(.*))?"},"path":"Promocodes/SetPoolPublic.js","usages":[{"description":"Make a pool public or private","parameters":["","--pool *"],"delimBefore":" ","delimAfter":" "}],"blacklistable":true},{"id":"settings.addRole","call":"add role","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^add role\\s?(.*)?\\s?(--create)?\\s?(--mentionable)?"},"path":"Roles/AddRole.js","usages":[{"description":"Show instructions for adding joinable roles","parameters":[]},{"description":"Add a role","parameters":["Role/Role id to add","--create","--mentionable","--leavable (on | off)","--requires @Role Mention"]}],"blacklistable":true},{"id":"settings.joinRole","call":"join","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^join\\s?(.*)?"},"path":"Roles/JoinRole.js","usages":[{"description":"Show instructions for joining roles","parameters":[]},{"description":"Joining a role","parameters":["Role/Role id to join."]}],"blacklistable":true},{"id":"settings.leaveRole","call":"leave","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^leave\\s?(.*)?"},"path":"Roles/LeaveRole.js","usages":[{"description":"Show instructions for leaving roles","parameters":[]},{"description":"Leave a role","parameters":["Role/Role id to leave"]}],"blacklistable":true},{"id":"settings.removeRole","call":"remove role","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^remove role\\s?(.*)?"},"path":"Roles/RemoveRole.js","usages":[{"description":"Show instructions for removing joinable roles","parameters":[]},{"description":"Remove a role","parameters":["Role/Role id to add","--delete"]}],"blacklistable":true},{"id":"settings.roleids","call":"roleids","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^roleidss?$"},"path":"Roles/RoleIds.js","usages":[{"description":"Get list of role ids","parameters":[]}],"blacklistable":true},{"id":"settings.ranks","call":"roles","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^roless?$"},"path":"Roles/Roles.js","usages":[{"description":"Get list of joinable roles","parameters":[]}],"blacklistable":true},{"id":"rooms.create","call":"create","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^create\\s?(room|raid|team|chat)?(\\w|-)?(?:-n(.+))?(--no-text)?(--public)?(--text)?(--hidden)?(--shown)?"},"path":"Rooms/Create.js","usages":[{"description":"Display instructions for creating temporary rooms","parameters":[]},{"description":"Create temporary text and voice channels for the calling user.","parameters":["room | raid | team"]},{"description":"Create temporary text and voice channels for the calling user and any mentioned users/roles.","parameters":["room | raid | team","users and/or role"]},{"description":"Create temporary text and voice channels for the calling user and any mentioned users/roles, with a custom name","parameters":["room | raid | team","users and/or role","-n name","--no-text","--public","--text","--locked"]}],"blacklistable":true},{"id":"rooms.destry","call":"destroy room","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^destroy room$"},"path":"Rooms/Destroy.js","usages":[],"blacklistable":true},{"id":"rooms.hide","call":"hide","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^hide$"},"path":"Rooms/Hide.js","usages":[],"blacklistable":true},{"id":"rooms.invite","call":"invite","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^invite"},"path":"Rooms/Invite.js","usages":[],"blacklistable":true},{"id":"rooms.lock","call":"lock","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^lock$"},"path":"Rooms/Lock.js","usages":[],"blacklistable":true},{"id":"rooms.rename","call":"rename room ","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^rename room \\s?(.+)?"},"path":"Rooms/Rename.js","usages":[],"blacklistable":true},{"id":"rooms.resize","call":"resize room","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^resize room\\s?(\\d+)"},"path":"Rooms/ResizeRoom.js","usages":[],"blacklistable":true},{"id":"settings.allowprivateroom","call":"allow private room","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^allow private room\\s?(on|off)?$"},"path":"Rooms/RoomCreation.js","usages":[{"description":"Change if the bot is allowed to create private channels","parameters":["private rooms enabled"]}],"blacklistable":true},{"id":"settings.defaultNoText","call":"set rooms notext","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set rooms notext\\s?(on|off)?$"},"path":"Rooms/RoomDefaultNoText.js","usages":[{"description":"Change if the bot should create unlocked channels by default (defaults to off)","parameters":["private notext defaulted"]}],"blacklistable":true},{"id":"settings.defaultroomsunlocked","call":"set rooms unlocked","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set rooms unlocked\\s?(on|off)?$"},"path":"Rooms/RoomPublicDefault.js","usages":[{"description":"Change if the bot should create unlocked channels by default (defaults to off)","parameters":["private rooms defaulted"]}],"blacklistable":true},{"id":"settings.defaultroomsshown","call":"set rooms shown","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set rooms shown\\s?(on|off)?$"},"path":"Rooms/RoomShownDefault.js","usages":[{"description":"Change if the bot should create shown channels by default (defaults to off)","parameters":["shown rooms defaulted"]}],"blacklistable":true},{"id":"settings.defaultcategory","call":"set rooms category","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set rooms category\\s?(\\d+)?$"},"path":"Rooms/SetDefaultCategory.js","usages":[{"description":"Change the bot's default category for temp rooms. Defaults to none.","parameters":["temp room default"]}],"blacklistable":true},{"id":"rooms.show","call":"show","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^show$"},"path":"Rooms/Show.js","usages":[],"blacklistable":true},{"id":"rooms.unlock","call":"unlock","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":false,"regex":{"flags":"i","body":"^unlock$"},"path":"Rooms/Unlock.js","usages":[],"blacklistable":true},{"id":"settings.allowCustom","call":"allow custom commands","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^allow\\s?custom(?:\\s?commands)?\\s?(on|off)?(?:\\s+in\\s+((?:\\<\\#)?\\d+(?:\\>)?|here))?$"},"path":"Settings/AllowCustomCommands.js","usages":[{"description":"Change if this channel can use custom commands","parameters":["custom commands enabled"]}],"blacklistable":true},{"id":"settings.allowinline","call":"allow inline commands","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^allow\\s?inline(?:\\s?commands)?\\s?(on|off)?(?:\\s+in\\s+((?:\\<\\#)?\\d+(?:\\>)?|here))?$"},"path":"Settings/AllowInlineCommands.js","usages":[{"description":"Change if this channel can use inline commands","parameters":["inline commands enabled"]}],"blacklistable":true},{"id":"settings.clearChannelPerms","call":"clear permissions","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^clear permissions(?:\\s*((?:(?:<#)?\\d+(?:>)?)|current|all|guild))?$"},"path":"Settings/ClearChannelPermissions.js","usages":[{"description":"Clear channel permisions for this or specified room, or guild","parameters":[]}],"blacklistable":true},{"id":"settings.clearpings","call":"clear pings","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^clear pingss?$"},"path":"Settings/ClearPings.js","usages":[{"description":"Clears all pings for the server","parameters":[]}],"blacklistable":true},{"id":"settings.deleteafterrespond","call":"delete after respond","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^delete\\s?after\\s?respond\\s?(all|command|respond|none)?(?:\\s+in\\s+((?:\\<\\#)?\\d+(?:\\>)?|here))?$"},"path":"Settings/DeleteAfterRespond.js","usages":[{"description":"Change if the bot to delete commands and/or responses after responding in this channel","parameters":["deleting enabled"]}],"blacklistable":true},{"id":"settings.deleteexpired","call":"delete expired","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^delete\\s?expired\\s?(on|off)?$"},"path":"Settings/DeleteExpired.js","usages":[{"description":"Change if the bot to deletes expired notifications","parameters":["deleting enabled"]}],"blacklistable":true},{"id":"settings.disable","call":"disable","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^disable"},"path":"Settings/Disable.js","usages":[{"description":"Disable a command for a role in a channel or channels","parameters":["command id> in for "},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^enable(?:\\s+(\\w*\\.*\\w*\\.*\\w*\\*?)(?:\\s+in\\s+((?:\\<\\#)?\\d+(?:\\>)?|here|\\*))?(?:\\s+for\\s((?:\\<\\@\\&?)?\\d+(?:\\>)?|\\*))?)?"},"path":"Settings/Enable.js","usages":[{"description":"Enable a command for a role in a channel or channels","parameters":["command id> in for "},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^language\\s?(en-us)?(?:\\s+in\\s+((?:\\<\\#)?\\d+(?:\\>)?|here))?$"},"path":"Settings/Language.js","usages":[{"description":"Change this channel's language","parameters":["language"]}],"blacklistable":true},{"id":"settings.platform","call":"platform","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"platform(?:\\s+([pcsxb14]{2,3}))?(?:\\s+in\\s+((?:\\<\\#)?\\d+(?:\\>)?|here))?$"},"path":"Settings/Platform.js","usages":[{"description":"Change this channel's platform","parameters":["platform"]}],"blacklistable":true},{"id":"settings.prefix","call":"prefix","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^prefix(?:\\s+(.+))?"},"path":"Settings/Prefix.js","usages":[{"description":"Change this channel's platform","parameters":["prefix (up to 3 characters)"]}],"blacklistable":true},{"id":"settings.respondSettings","call":"respond to settings","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^respond(?:\\sto)?\\s?settings\\s?(on|off)?(?:\\s+in\\s+((?:\\<\\#)?\\d+(?:\\>)?|here))?$"},"path":"Settings/RespondToSettings.js","usages":[{"description":"Change if this channel has settings changes responded in it","parameters":["response enabled"]}],"blacklistable":true},{"id":"settings.settings","call":"settings","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^settings(?:\\s*--expand)?(?:\\s+in\\s+((?:(?:<#)?\\d+(?:>)?)|current|all))?$"},"path":"Settings/Settings.js","usages":[{"description":"Get settings","parameters":[]}],"blacklistable":true},{"id":"silly.corgi","call":"corgi","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^corgis?$"},"path":"Silly/Corgi.js","usages":[{"description":"Genesis gets you a corgi","parameters":[]}],"blacklistable":true},{"id":"silly.echo","call":"echo","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^echo\\s?(.+)?"},"path":"Silly/Echo.js","usages":[{"description":"Genesis echos your message","parameters":[]}],"blacklistable":true},{"id":"silly.hug","call":"hug","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^hugs?$"},"path":"Silly/Hug.js","usages":[{"description":"Hug Genesis","parameters":[]}],"blacklistable":true},{"id":"silly.joke","call":"joke","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^jokes?$"},"path":"Silly/Joke.js","usages":[{"description":"Genesis tells a joke","parameters":[]}],"blacklistable":true},{"id":"silly.promocode","call":"promocodes","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^promocodess?$"},"path":"Silly/PromoCodes.js","usages":[{"description":"Get promocodes","parameters":[]}],"blacklistable":true},{"id":"settings.setping","call":"set ping","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set ping\\s*((alerts|invasions|news|sorties|baro|darvo|deals.featured|deals.popular|enemies|enemies.departed|conclave.weeklies|conclave.dailies|syndicate.arbiters|syndicate.suda|syndicate.loka|syndicate.perrin|syndicate.veil|syndicate.meridian|twitter.warframe.tweet|twitter.warframe.retweet|twitter.warframe.quote|twitter.warframe.reply|twitter.digitalextremes.tweet|twitter.digitalextremes.quote|twitter.digitalextremes.reply|twitter.pablo.tweet|twitter.pablo.retweet|twitter.pablo.quote|twitter.pablo.reply|twitter.cameron.tweet|twitter.cameron.retweet|twitter.cameron.quote|twitter.cameron.reply|twitter.rebecca.tweet|twitter.rebecca.retweet|twitter.rebecca.quote|twitter.rebecca.reply|twitter.steve.tweet|twitter.steve.retweet|twitter.steve.quote|twitter.steve.reply|twitter.danielle.tweet|twitter.danielle.retweet|twitter.danielle.quote|twitter.danielle.reply|twitter.megan.tweet|twitter.megan.retweet|twitter.megan.quote|twitter.megan.reply|twitter.george.tweet|twitter.george.retweet|twitter.george.quote|twitter.george.reply|twitter.maciej.tweet|twitter.maciej.retweet|twitter.maciej.quote|twitter.maciej.reply|twitter.sheldon.tweet|twitter.sheldon.retweet|twitter.sheldon.quote|twitter.sheldon.reply|twitter.narc.tweet|twitter.narc.retweet|twitter.narc.quote|twitter.narc.reply|twitter.helen.tweet|twitter.helen.retweet|twitter.helen.quote|twitter.helen.reply|twitter.tobiah.tweet|twitter.tobiah.retweet|twitter.tobiah.quote|twitter.tobiah.reply|twitter.wfdiscord.tweet|twitter.wfdiscord.retweet|twitter.wfdiscord.quote|twitter.wfdiscord.reply|updates|primeaccess|streams|cetus.day|cetus.night|earth.day|earth.night|syndicate.ostrons|syndicate.assassins|operations|fissures.t1.excavation|fissures.t1.sabotage|fissures.t1.mobiledefense|fissures.t1.assassination|fissures.t1.exterminate|fissures.t1.hive|fissures.t1.defense|fissures.t1.interception|fissures.t1.rathuum|fissures.t1.conclave|fissures.t1.rescue|fissures.t1.spy|fissures.t1.survival|fissures.t1.capture|fissures.t1.darksector|fissures.t1.hijack|fissures.t1.assault|fissures.t1.evacuation|fissures.t2.excavation|fissures.t2.sabotage|fissures.t2.mobiledefense|fissures.t2.assassination|fissures.t2.exterminate|fissures.t2.hive|fissures.t2.defense|fissures.t2.interception|fissures.t2.rathuum|fissures.t2.conclave|fissures.t2.rescue|fissures.t2.spy|fissures.t2.survival|fissures.t2.capture|fissures.t2.darksector|fissures.t2.hijack|fissures.t2.assault|fissures.t2.evacuation|fissures.t3.excavation|fissures.t3.sabotage|fissures.t3.mobiledefense|fissures.t3.assassination|fissures.t3.exterminate|fissures.t3.hive|fissures.t3.defense|fissures.t3.interception|fissures.t3.rathuum|fissures.t3.conclave|fissures.t3.rescue|fissures.t3.spy|fissures.t3.survival|fissures.t3.capture|fissures.t3.darksector|fissures.t3.hijack|fissures.t3.assault|fissures.t3.evacuation|fissures.t4.excavation|fissures.t4.sabotage|fissures.t4.mobiledefense|fissures.t4.assassination|fissures.t4.exterminate|fissures.t4.hive|fissures.t4.defense|fissures.t4.interception|fissures.t4.rathuum|fissures.t4.conclave|fissures.t4.rescue|fissures.t4.spy|fissures.t4.survival|fissures.t4.capture|fissures.t4.darksector|fissures.t4.hijack|fissures.t4.assault|fissures.t4.evacuation|vauban|vandal|wraith|skin|helmet|nitain|mutalist|weapon|fieldron|detonite|mutagen|aura|neuralSensors|orokinCell|alloyPlate|circuits|controlModule|ferrite|gallium|morphics|nanoSpores|oxium|rubedo|salvage|plastids|polymerBundle|argonCrystal|cryotic|tellurium|neurodes|nightmare|endo|reactor|catalyst|forma|synthula|exilus|riven|kavatGene|kubrowEgg|traces|other|credits|all|events|items|syndicates|conclave|clantech|deals|resources|fissures.t1|fissures.t2|fissures.t3|fissures.t4|fissures.excavation|fissures.sabotage|fissures.mobiledefense|fissures.assassination|fissures.exterminate|fissures.hive|fissures.defense|fissures.interception|fissures.rathuum|fissures.conclave|fissures.rescue|fissures.spy|fissures.survival|fissures.capture|fissures.darksector|fissures.hijack|fissures.assault|fissures.evacuation|fissures|cetus|earth|twitter)(.+)?)?"},"path":"Tracking/SetPing.js","usages":[{"description":"Set ping for an event or item","parameters":["event or reward","@role or user mention"]}],"blacklistable":true},{"id":"settings.start","call":"start","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^starts?$"},"path":"Tracking/Start.js","usages":[{"description":"Lols","parameters":[]}],"blacklistable":true},{"id":"settings.stop","call":"stop","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^stop\\s*(?:\\s+in\\s+)?((?:\\<\\#)?\\d+(?:\\>)?|here)?"},"path":"Tracking/Stop.js","usages":[{"description":"Untracks everything in a channel, effectively stopping tracking for the channel","parameters":[]}],"blacklistable":true},{"id":"settings.track","call":"track","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^track(?:\\s+(cetus\\.day\\.[0-1]?[0-9]?[0-9]|cetus\\.night\\.[0-1]?[0-9]?[0-9]|alerts|invasions|news|sorties|baro|darvo|deals.featured|deals.popular|enemies|enemies.departed|conclave.weeklies|conclave.dailies|syndicate.arbiters|syndicate.suda|syndicate.loka|syndicate.perrin|syndicate.veil|syndicate.meridian|twitter.warframe.tweet|twitter.warframe.retweet|twitter.warframe.quote|twitter.warframe.reply|twitter.digitalextremes.tweet|twitter.digitalextremes.quote|twitter.digitalextremes.reply|twitter.pablo.tweet|twitter.pablo.retweet|twitter.pablo.quote|twitter.pablo.reply|twitter.cameron.tweet|twitter.cameron.retweet|twitter.cameron.quote|twitter.cameron.reply|twitter.rebecca.tweet|twitter.rebecca.retweet|twitter.rebecca.quote|twitter.rebecca.reply|twitter.steve.tweet|twitter.steve.retweet|twitter.steve.quote|twitter.steve.reply|twitter.danielle.tweet|twitter.danielle.retweet|twitter.danielle.quote|twitter.danielle.reply|twitter.megan.tweet|twitter.megan.retweet|twitter.megan.quote|twitter.megan.reply|twitter.george.tweet|twitter.george.retweet|twitter.george.quote|twitter.george.reply|twitter.maciej.tweet|twitter.maciej.retweet|twitter.maciej.quote|twitter.maciej.reply|twitter.sheldon.tweet|twitter.sheldon.retweet|twitter.sheldon.quote|twitter.sheldon.reply|twitter.narc.tweet|twitter.narc.retweet|twitter.narc.quote|twitter.narc.reply|twitter.helen.tweet|twitter.helen.retweet|twitter.helen.quote|twitter.helen.reply|twitter.tobiah.tweet|twitter.tobiah.retweet|twitter.tobiah.quote|twitter.tobiah.reply|twitter.wfdiscord.tweet|twitter.wfdiscord.retweet|twitter.wfdiscord.quote|twitter.wfdiscord.reply|updates|primeaccess|streams|cetus.day|cetus.night|earth.day|earth.night|syndicate.ostrons|syndicate.assassins|operations|fissures.t1.excavation|fissures.t1.sabotage|fissures.t1.mobiledefense|fissures.t1.assassination|fissures.t1.exterminate|fissures.t1.hive|fissures.t1.defense|fissures.t1.interception|fissures.t1.rathuum|fissures.t1.conclave|fissures.t1.rescue|fissures.t1.spy|fissures.t1.survival|fissures.t1.capture|fissures.t1.darksector|fissures.t1.hijack|fissures.t1.assault|fissures.t1.evacuation|fissures.t2.excavation|fissures.t2.sabotage|fissures.t2.mobiledefense|fissures.t2.assassination|fissures.t2.exterminate|fissures.t2.hive|fissures.t2.defense|fissures.t2.interception|fissures.t2.rathuum|fissures.t2.conclave|fissures.t2.rescue|fissures.t2.spy|fissures.t2.survival|fissures.t2.capture|fissures.t2.darksector|fissures.t2.hijack|fissures.t2.assault|fissures.t2.evacuation|fissures.t3.excavation|fissures.t3.sabotage|fissures.t3.mobiledefense|fissures.t3.assassination|fissures.t3.exterminate|fissures.t3.hive|fissures.t3.defense|fissures.t3.interception|fissures.t3.rathuum|fissures.t3.conclave|fissures.t3.rescue|fissures.t3.spy|fissures.t3.survival|fissures.t3.capture|fissures.t3.darksector|fissures.t3.hijack|fissures.t3.assault|fissures.t3.evacuation|fissures.t4.excavation|fissures.t4.sabotage|fissures.t4.mobiledefense|fissures.t4.assassination|fissures.t4.exterminate|fissures.t4.hive|fissures.t4.defense|fissures.t4.interception|fissures.t4.rathuum|fissures.t4.conclave|fissures.t4.rescue|fissures.t4.spy|fissures.t4.survival|fissures.t4.capture|fissures.t4.darksector|fissures.t4.hijack|fissures.t4.assault|fissures.t4.evacuation|vauban|vandal|wraith|skin|helmet|nitain|mutalist|weapon|fieldron|detonite|mutagen|aura|neuralSensors|orokinCell|alloyPlate|circuits|controlModule|ferrite|gallium|morphics|nanoSpores|oxium|rubedo|salvage|plastids|polymerBundle|argonCrystal|cryotic|tellurium|neurodes|nightmare|endo|reactor|catalyst|forma|synthula|exilus|riven|kavatGene|kubrowEgg|traces|other|credits|all|events|items|syndicates|conclave|clantech|deals|resources|fissures.t1|fissures.t2|fissures.t3|fissures.t4|fissures.excavation|fissures.sabotage|fissures.mobiledefense|fissures.assassination|fissures.exterminate|fissures.hive|fissures.defense|fissures.interception|fissures.rathuum|fissures.conclave|fissures.rescue|fissures.spy|fissures.survival|fissures.capture|fissures.darksector|fissures.hijack|fissures.assault|fissures.evacuation|fissures|cetus|earth|twitter)*)?(?:\\s+in\\s+((?:\\<\\#)?\\d+(?:\\>)?|here))?"},"path":"Tracking/Track.js","usages":[{"description":"Show tracking command for tracking events","parameters":[]},{"description":"Track an event or events","parameters":["event(s) to track"]}],"blacklistable":true},{"id":"settings.untrack","call":"untrack","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^untrack\\s*(cetus\\.day\\.[0-1]?[0-9]?[0-9]?|cetus\\.night\\.[0-1]?[0-9]?[0-9]?|alerts|invasions|news|sorties|baro|darvo|deals.featured|deals.popular|enemies|enemies.departed|conclave.weeklies|conclave.dailies|syndicate.arbiters|syndicate.suda|syndicate.loka|syndicate.perrin|syndicate.veil|syndicate.meridian|twitter.warframe.tweet|twitter.warframe.retweet|twitter.warframe.quote|twitter.warframe.reply|twitter.digitalextremes.tweet|twitter.digitalextremes.quote|twitter.digitalextremes.reply|twitter.pablo.tweet|twitter.pablo.retweet|twitter.pablo.quote|twitter.pablo.reply|twitter.cameron.tweet|twitter.cameron.retweet|twitter.cameron.quote|twitter.cameron.reply|twitter.rebecca.tweet|twitter.rebecca.retweet|twitter.rebecca.quote|twitter.rebecca.reply|twitter.steve.tweet|twitter.steve.retweet|twitter.steve.quote|twitter.steve.reply|twitter.danielle.tweet|twitter.danielle.retweet|twitter.danielle.quote|twitter.danielle.reply|twitter.megan.tweet|twitter.megan.retweet|twitter.megan.quote|twitter.megan.reply|twitter.george.tweet|twitter.george.retweet|twitter.george.quote|twitter.george.reply|twitter.maciej.tweet|twitter.maciej.retweet|twitter.maciej.quote|twitter.maciej.reply|twitter.sheldon.tweet|twitter.sheldon.retweet|twitter.sheldon.quote|twitter.sheldon.reply|twitter.narc.tweet|twitter.narc.retweet|twitter.narc.quote|twitter.narc.reply|twitter.helen.tweet|twitter.helen.retweet|twitter.helen.quote|twitter.helen.reply|twitter.tobiah.tweet|twitter.tobiah.retweet|twitter.tobiah.quote|twitter.tobiah.reply|twitter.wfdiscord.tweet|twitter.wfdiscord.retweet|twitter.wfdiscord.quote|twitter.wfdiscord.reply|updates|primeaccess|streams|cetus.day|cetus.night|earth.day|earth.night|syndicate.ostrons|syndicate.assassins|operations|fissures.t1.excavation|fissures.t1.sabotage|fissures.t1.mobiledefense|fissures.t1.assassination|fissures.t1.exterminate|fissures.t1.hive|fissures.t1.defense|fissures.t1.interception|fissures.t1.rathuum|fissures.t1.conclave|fissures.t1.rescue|fissures.t1.spy|fissures.t1.survival|fissures.t1.capture|fissures.t1.darksector|fissures.t1.hijack|fissures.t1.assault|fissures.t1.evacuation|fissures.t2.excavation|fissures.t2.sabotage|fissures.t2.mobiledefense|fissures.t2.assassination|fissures.t2.exterminate|fissures.t2.hive|fissures.t2.defense|fissures.t2.interception|fissures.t2.rathuum|fissures.t2.conclave|fissures.t2.rescue|fissures.t2.spy|fissures.t2.survival|fissures.t2.capture|fissures.t2.darksector|fissures.t2.hijack|fissures.t2.assault|fissures.t2.evacuation|fissures.t3.excavation|fissures.t3.sabotage|fissures.t3.mobiledefense|fissures.t3.assassination|fissures.t3.exterminate|fissures.t3.hive|fissures.t3.defense|fissures.t3.interception|fissures.t3.rathuum|fissures.t3.conclave|fissures.t3.rescue|fissures.t3.spy|fissures.t3.survival|fissures.t3.capture|fissures.t3.darksector|fissures.t3.hijack|fissures.t3.assault|fissures.t3.evacuation|fissures.t4.excavation|fissures.t4.sabotage|fissures.t4.mobiledefense|fissures.t4.assassination|fissures.t4.exterminate|fissures.t4.hive|fissures.t4.defense|fissures.t4.interception|fissures.t4.rathuum|fissures.t4.conclave|fissures.t4.rescue|fissures.t4.spy|fissures.t4.survival|fissures.t4.capture|fissures.t4.darksector|fissures.t4.hijack|fissures.t4.assault|fissures.t4.evacuation|vauban|vandal|wraith|skin|helmet|nitain|mutalist|weapon|fieldron|detonite|mutagen|aura|neuralSensors|orokinCell|alloyPlate|circuits|controlModule|ferrite|gallium|morphics|nanoSpores|oxium|rubedo|salvage|plastids|polymerBundle|argonCrystal|cryotic|tellurium|neurodes|nightmare|endo|reactor|catalyst|forma|synthula|exilus|riven|kavatGene|kubrowEgg|traces|other|credits|all|events|items|syndicates|conclave|clantech|deals|resources|fissures.t1|fissures.t2|fissures.t3|fissures.t4|fissures.excavation|fissures.sabotage|fissures.mobiledefense|fissures.assassination|fissures.exterminate|fissures.hive|fissures.defense|fissures.interception|fissures.rathuum|fissures.conclave|fissures.rescue|fissures.spy|fissures.survival|fissures.capture|fissures.darksector|fissures.hijack|fissures.assault|fissures.evacuation|fissures|cetus|earth|twitter)*(?:\\s+in\\s+)?((?:\\<\\#)?\\d+(?:\\>)?|here)?"},"path":"Tracking/Untrack.js","usages":[{"description":"Show tracking command for untracking events","parameters":[]},{"description":"Untrack an event or events","parameters":["event(s) to untrack"]}],"blacklistable":true},{"id":"utilities.dump","call":"dump","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^dumps?$"},"path":"Utilities/Dump.js","usages":[{"description":"Dump a channel config to a channel","parameters":["JSON configuration file"]}],"blacklistable":true},{"id":"settings.getcommandids","call":"getcommandids","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":true,"regex":{"flags":"i","body":"^getcommandidss?$"},"path":"Utilities/GetCommandIds.js","usages":[{"description":"Get list of bot command ids available for you to view","parameters":[]}],"blacklistable":true},{"id":"inline.poll","call":"poll:","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":true,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"gi","body":"poll:.+"},"path":"Utilities/PollInline.js","usages":[{"description":"Create a simple poll","parameters":["poll statement"]}],"blacklistable":true},{"id":"inline.roll","call":"roll?","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":true,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"gi","body":"left or right[:\\?]"},"path":"Utilities/RollInline.js","usages":[{"description":"roll between rivens","parameters":["riven link to vote about rolling"]}],"blacklistable":true},{"id":"util.serverInfo","call":"serverinfo","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^serverinfos?$"},"path":"Utilities/ServerInfo.js","usages":[{"description":"Get info about current server","parameters":[]}],"blacklistable":true},{"id":"util.userinfo","call":"userinfo","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"","body":"^userinfo\\s*(?:(?:<@)(\\d+)(?:>))?"},"path":"Utilities/UserInfo.js","usages":[{"description":"Get info about a user","parameters":[]}],"blacklistable":true},{"id":"settings.clearwelcomemessage","call":"clear welcome message","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^clear welcome messages?$"},"path":"Welcoming/ClearWelcome.js","usages":[{"description":"Clears all messages (non-DM) for this guild.","parameters":[]}],"blacklistable":true},{"id":"settings.clearwelcomedm","call":"clear welcome dm","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^clear welcome dms?$"},"path":"Welcoming/ClearWelcomeDM.js","usages":[{"description":"Clears all welcome direct messages for the server.","parameters":[]}],"blacklistable":true},{"id":"settings.setwelcome","call":"set welcome message","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set welcome message\\s?((.+|\\n)+)?$"},"path":"Welcoming/SetWelcome.js","usages":[{"description":"Set welcome message for this server in this channel","parameters":["message"]}],"blacklistable":true},{"id":"settings.setwelcomedm","call":"set welcome dm","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":false,"requiresAuth":true,"regex":{"flags":"i","body":"^set welcome dm\\s?((.+|\\n)+)?$"},"path":"Welcoming/SetWelcomeDM.js","usages":[{"description":"Set welcome message for this server in this channel to send to a user in DM","parameters":["message"]}],"blacklistable":true},{"id":"warframe.worldstate.alerts","call":"alert","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^alerts?\\s?(?:(compact))?\\s?(?:on\\s+([pcsxb14]{2,3}))?"},"path":"Worldstate/Alerts.js","usages":[{"description":"Display the currently active alerts","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.baro","call":"baro","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^baro(?:\\s+on\\s+([pcsxb14]{2,3}))?"},"path":"Worldstate/Baro.js","usages":[{"description":"Display the current status of the Void Trader","parameters":[]}],"blacklistable":true},{"id":"inline.borko","call":"when borko","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":true,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"gi","body":"(?:where|when|whe|why|which).*(?:borko|baro|bimjo|bonko|bilbo|bermo|barmo|bruno|borso|borneo|bosnia|beerr?ow)"},"path":"Worldstate/BaroInline.js","usages":[{"description":"Display the current status of the Void Trader","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.conclaveChallenges","call":"conclave","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^conclave(?:\\s+(all|day|week))?(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/ConclaveChallenges.js","usages":[{"description":"Display conclave challenges for a challenge type.","parameters":["conclave category"]}],"blacklistable":true},{"id":"warframe.worldstate.construction","call":"construction","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^construction(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/Construction.js","usages":[{"description":"Display current construction progress.","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.darvo","call":"darvo","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^darvo(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/Darvo.js","usages":[{"description":"Displays today's Darvo deal","parameters":[]}],"blacklistable":true},{"id":"warframe.misc.cycle","call":"cycle","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^cycle\\s?(earth)?"},"path":"Worldstate/EarthCycle.js","usages":[{"description":"Display Cetus's current cycle progress","parameters":[]},{"description":"Display Earth's current cycle progress","parameters":["earth"]}],"blacklistable":true},{"id":"warframe.worldstate.acolytes","call":"acolyte","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^acolytes?(?:\\s+on\\s+([pcsxb14]{2,3}))?"},"path":"Worldstate/Enemies.js","usages":[{"description":"Display any currently active acolyte-style enemies.","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.events","call":"events","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^events(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/Event.js","usages":[{"description":"Display current events.","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.featureddeal","call":"featureddeal","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^featured\\s?deals?(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/FeaturedDeal.js","usages":[{"description":"Displays current featured deals","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.fissures","call":"fissure","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^fissures?(?:\\s?(compact))?(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/Fissures.js","usages":[{"description":"Get the current list of Void Fissure Missions","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.invasions","call":"invasion","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^invasions?(?:\\s?(compact))?(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/Invasions.js","usages":[{"description":"Display the currently active Invasions","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.news","call":"news","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^news(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/News.js","usages":[{"description":"Display the currently active news","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.populardeals","call":"populardeal","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^popular\\sdeals?(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/PopularSale.js","usages":[{"description":"Displays current featured deals","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.primeaccess","call":"primeaccess","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^prime\\s?access(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/PrimeAccess.js","usages":[{"description":"Display the currently active prime access news","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.simaris","call":"simaris","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"(^simaris(?:\\s+on\\s+([pcsxb14]{2,3}))?$)|(^simaris(?:\\s+target\\s+([\\sa-zA-Z0-9]+))?$)"},"path":"Worldstate/Simaris.js","usages":[{"description":"Display current Sanctuary status.","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.sorties","call":"sortie","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^sorties?(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/Sorties.js","usages":[{"description":"Display the currently active sorties","parameters":[]}],"blacklistable":true},{"id":"warframe.worldstate.syndicate","call":"syndicate","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^syndicate\\s?(?:(all|arbiters of hexis|perrin sequence|cephalon suda|steel meridian|new loka|red veil|ostrons|assassins))?(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/Syndicates.js","usages":[{"description":"Display syndicate nodes for a syndicate.","parameters":["syndicate"]}],"blacklistable":true},{"id":"warframe.worldstate.updates","call":"update","delimiters":{"begin":"<","end":">"},"isCustomCommand":false,"isInline":false,"ownerOnly":false,"allowDM":true,"requiresAuth":false,"regex":{"flags":"i","body":"^updates?(?:\\s+on\\s+([pcsxb14]{2,3}))?$"},"path":"Worldstate/Updates.js","usages":[{"description":"Display the currently active update news","parameters":[]}],"blacklistable":true}] \ No newline at end of file diff --git a/src/CommonFunctions.js b/src/CommonFunctions.js index 512d95566..7de803e36 100644 --- a/src/CommonFunctions.js +++ b/src/CommonFunctions.js @@ -10,6 +10,8 @@ const { } = require('./resources/trackables.json'); const apiBase = process.env.API_BASE_PATH || 'https://api.warframestat.us'; +const assetBase = process.env.ASSET_BASE_PATH || 'https://cdn.warframestat.us/genesis'; +const wikiBase = process.env.WIKIA_BASE_PATH || 'https://warframe.fandom.com/wiki/'; const isVulgarCheck = new RegExp('(n[i!1]gg[e3]r|n[i!1]gg[ua]|h[i!1]tl[e3]r|n[a@]z[i!1]|[©ck]un[t7]|fu[©c]k|[©ck]umm?|f[a@4]g|d[i!1]ck|c[o0]ck|boner|sperm|gay|gooch|jizz|pussy|penis|r[i!1]mjob|schlong|slut|wank|whore|sh[i!1]t|sex|fuk|heil|p[o0]rn|pronz|suck|rape|scrotum)', 'ig'); @@ -576,4 +578,6 @@ module.exports = { csvToCodes, determineTweetType, apiBase, + assetBase, + wikiBase, }; diff --git a/src/commands/Builds/AddBuild.js b/src/commands/Builds/AddBuild.js index 57fe7a8d7..7c54dd051 100644 --- a/src/commands/Builds/AddBuild.js +++ b/src/commands/Builds/AddBuild.js @@ -2,6 +2,9 @@ const Command = require('../../models/Command.js'); const BuildEmbed = require('../../embeds/BuildEmbed'); +const { assetBase } = require('../CommonFunctions'); + +const outageThumb = `${assetBase}/img/outage.png`; /** * Create temporary voice/text channels (can be expanded in the future) @@ -32,7 +35,7 @@ class AddBuild extends Command { // save params based on order const title = params[0] || 'My Build'; const body = params[1] || 'My Build Body'; - const image = params[2] || 'https://i.imgur.com/31xCos6.png'; + const image = params[2] || outageThumb; const build = await this.settings.addNewBuild(title, body, image, message.author); const embed = new BuildEmbed(this.bot, build); this.messageManager.embed(message, embed, true, true); diff --git a/src/commands/Info/ItemEmbeddedInline.js b/src/commands/Info/ItemEmbeddedInline.js index 37c70afed..c7daea880 100644 --- a/src/commands/Info/ItemEmbeddedInline.js +++ b/src/commands/Info/ItemEmbeddedInline.js @@ -7,11 +7,12 @@ const Command = require('../../models/InlineCommand.js'); const FrameEmbed = require('../../embeds/FrameEmbed.js'); const WeaponEmbed = require('../../embeds/WeaponEmbed.js'); const WikiEmbed = require('../../embeds/WikiEmbed.js'); -const { apiBase } = require('../../CommonFunctions'); - +const { apiBase, assetBase } = require('../../CommonFunctions'); const warframe = new Wikia('warframe'); +const ancientRetributionThumb = `${assetBase}/img/ancient-retribution.png`; + const checkFrames = async (prompt) => { const options = { uri: `${apiBase}/warframes/search/${prompt}`, @@ -59,7 +60,7 @@ const checkMods = async (prompt) => { const [{ id }] = searchJson.items; const detailsJson = await warframe.getArticleDetails({ ids: [id] }); let thumbUrl = detailsJson.items[`${id}`].thumbnail; - thumbUrl = thumbUrl ? thumbUrl.replace(/\/revision\/.*/, '') : 'https://i.imgur.com/11VCxbq.jpg'; + thumbUrl = thumbUrl ? thumbUrl.replace(/\/revision\/.*/, '') : ancientRetributionThumb; const list = await warframe.getArticlesList({ category: 'Mods', limit: 1000 }); let result; list.items.forEach((item) => { diff --git a/src/commands/Ondemand/Damage.js b/src/commands/Ondemand/Damage.js index a6c3067e8..ac18b5e5d 100644 --- a/src/commands/Ondemand/Damage.js +++ b/src/commands/Ondemand/Damage.js @@ -1,6 +1,9 @@ 'use strict'; const Command = require('../../models/Command.js'); +const { assetBase } = require('../CommonFunctions'); + +const damageChart = `${assetBase}/img/damage-chart.png`; /** * Displays the Damage 2.0 charts @@ -12,7 +15,6 @@ class Damage extends Command { */ constructor(bot) { super(bot, 'warframe.misc.damage', 'damage', 'Display Damage 2.0 chart'); - this.damageChart = 'http://i.imgur.com/EOzr440.png'; } /** @@ -25,7 +27,7 @@ class Damage extends Command { this.messageManager.embed(message, { title: 'Legend', image: { - url: 'http://i.imgur.com/EOzr440.png', + url: damageChart, }, fields: [ { name: 'Blast', value: '<:blast:363136256907149312>', inline: true }, diff --git a/src/commands/Ondemand/Efficiency.js b/src/commands/Ondemand/Efficiency.js index 38b22a970..e3eb6024b 100644 --- a/src/commands/Ondemand/Efficiency.js +++ b/src/commands/Ondemand/Efficiency.js @@ -1,6 +1,9 @@ 'use strict'; const Command = require('../../models/Command.js'); +const { assetBase } = require('../CommonFunctions'); + +const efficiencyChart = `${assetBase}/img/efficiency-chart.png`; /** * Displays the Warframe efficincy/duration Chart @@ -12,7 +15,6 @@ class Efficiency extends Command { */ constructor(bot) { super(bot, 'warframe.misc.efficiency', 'efficiency', 'Display Warframe Efficiency Chart'); - this.efficiencyChart = 'https://i.imgur.com/dT7lpW2.png'; } /** @@ -25,7 +27,7 @@ class Efficiency extends Command { this.messageManager.sendFile( message, `Operator ${message.author.toString()}, the efficiency table, at your request.`, - this.efficiencyChart, 'efficiency.png', true, + efficiencyChart, 'efficiency.png', true, ); return this.messageManager.statuses.SUCCESS; } diff --git a/src/embeds/AlertEmbed.js b/src/embeds/AlertEmbed.js index 72df0a09c..087e32f7d 100644 --- a/src/embeds/AlertEmbed.js +++ b/src/embeds/AlertEmbed.js @@ -1,6 +1,9 @@ 'use strict'; const BaseEmbed = require('./BaseEmbed.js'); +const { assetBase } = require('../CommonFunctions'); + +const alertThumb = `${assetBase}/img/alert.png`; /** * Generates alert embeds @@ -15,7 +18,7 @@ class AlertEmbed extends BaseEmbed { super(); this.thumbnail = { - url: 'http://i.imgur.com/KQ7f9l7.png', + url: alertThumb, }; this.color = 0xF1C40F; // compact diff --git a/src/embeds/ConclaveChallengeEmbed.js b/src/embeds/ConclaveChallengeEmbed.js index a9443027c..741473536 100644 --- a/src/embeds/ConclaveChallengeEmbed.js +++ b/src/embeds/ConclaveChallengeEmbed.js @@ -1,6 +1,9 @@ 'use strict'; const BaseEmbed = require('./BaseEmbed.js'); +const { assetBase } = require('../CommonFunctions'); + +const conclaveThumb = `${assetBase}/img/conclave-lg.png`; const values = ['all', 'day', 'week']; @@ -36,7 +39,7 @@ class ConclaveChallengeEmbed extends BaseEmbed { } this.title = `${platform ? `[${platform.toUpperCase()}] ` : ''}Current Challenges for category: ${category || 'none'}`; this.thumbnail = { - url: 'http://i.imgur.com/KDzKPYA.png', + url: conclaveThumb, }; } } diff --git a/src/embeds/DarvoEmbed.js b/src/embeds/DarvoEmbed.js index 882be4831..e61dcbc23 100644 --- a/src/embeds/DarvoEmbed.js +++ b/src/embeds/DarvoEmbed.js @@ -1,6 +1,9 @@ 'use strict'; const BaseEmbed = require('./BaseEmbed.js'); +const { assetBase } = require('../CommonFunctions'); + +const darvo = `${assetBase}/img/darvo-md.png`; /** * Generates daily deal embeds @@ -17,7 +20,7 @@ class DarvoEmbed extends BaseEmbed { this.color = 0x0000ff; this.title = `[${platform.toUpperCase()}] Darvo Deal`; this.thumbnail = { - url: 'http://i.imgur.com/UotylUm.png', + url: darvo, }; this.fields = [ { diff --git a/src/embeds/EarthCycleEmbed.js b/src/embeds/EarthCycleEmbed.js index 34ef7580b..3612456b7 100644 --- a/src/embeds/EarthCycleEmbed.js +++ b/src/embeds/EarthCycleEmbed.js @@ -2,7 +2,10 @@ const BaseEmbed = require('./BaseEmbed.js'); -const { timeDeltaToString, fromNow } = require('../CommonFunctions.js'); +const { timeDeltaToString, fromNow, assetBase } = require('../CommonFunctions.js'); + +const ostron = `${assetBase}/img/ostron-banner.png`; +const earth = `${assetBase}/img/earth-planet.png` /** * Generates Earth cycle embeds @@ -18,7 +21,7 @@ class EarthCycleEmbed extends BaseEmbed { this.title = `Worldstate - ${state.isCetus ? 'Plains of Eidolon' : 'Earth'} Cycle - ${state.isDay ? 'Day' : 'Night'}time`; this.color = state.isDay ? 0xB64624 : 0x000066; this.thumbnail = { - url: state.isCetus ? 'https://i.imgur.com/Ph337PR.png' : 'https://i.imgur.com/oR6Sskf.png', + url: state.isCetus ? ostron : earth, }; this.description = `Time remaining until ${state.isDay ? 'night' : 'day'}: ${timeDeltaToString(fromNow(new Date(state.expiry)))}` + `${state.bountyExpiry ? `\nBounties expire in ${timeDeltaToString(fromNow(new Date(state.bountyExpiry)))}` : ''}`; diff --git a/src/embeds/EnemyEmbed.js b/src/embeds/EnemyEmbed.js index f022fcbe7..e4160130a 100644 --- a/src/embeds/EnemyEmbed.js +++ b/src/embeds/EnemyEmbed.js @@ -1,6 +1,9 @@ 'use strict'; const BaseEmbed = require('./BaseEmbed.js'); +const { assetBase } = require('../CommonFunctions'); + +const acolyteThumb = `${assetBase}/img/acolyte.png`; /** * Generates enemy embeds @@ -15,7 +18,7 @@ class EnemyEmbed extends BaseEmbed { super(); this.thumbnail = { - url: 'http://i.imgur.com/pMRt2Cp.png', + url: acolyteThumb, }; this.title = `[${platform.toUpperCase()}] Acolytes`; if (enemies.length > 1) { diff --git a/src/embeds/EnhancementEmbed.js b/src/embeds/EnhancementEmbed.js index 79b3dba15..3f4d5a2ed 100644 --- a/src/embeds/EnhancementEmbed.js +++ b/src/embeds/EnhancementEmbed.js @@ -1,6 +1,9 @@ 'use strict'; const BaseEmbed = require('./BaseEmbed.js'); +const { assetBase } = require('../CommonFunctions'); + +const arcaneThumb = `${assetBase}/img/arcane.png`; const colors = { common: 0x443B25, @@ -21,7 +24,7 @@ class EnhancementEmbed extends BaseEmbed { super(); this.thumbnail = { - url: 'https://i.imgur.com/tIBB0ea.png', + url: arcaneThumb, }; if (enhancement && typeof enhancement !== 'undefined') { this.title = enhancement.name; diff --git a/src/embeds/FissureEmbed.js b/src/embeds/FissureEmbed.js index 7e44039bb..cbfbc94ce 100644 --- a/src/embeds/FissureEmbed.js +++ b/src/embeds/FissureEmbed.js @@ -1,6 +1,9 @@ 'use strict'; const BaseEmbed = require('./BaseEmbed.js'); +const { assetBase, wikiBase } = require('../CommonFunctions'); + +const fissureThumb = `${assetBase}img/fissure-sm.png`; /** * Generates fissure embeds @@ -17,9 +20,9 @@ class FissureEmbed extends BaseEmbed { if (fissures.length > 1) { this.title = `[${platform.toUpperCase()}] Worldstate - Void Fissures`; } - this.url = 'http://warframe.wikia.com/wiki/Void_Fissure'; + this.url = `${wikiBase}Void_Fissure`; this.thumbnail = { - url: 'http://i.imgur.com/EfIRu6v.png', + url: fissureThumb, }; if (fissures.length > 1) { fissures.sort((a, b) => a.tierNum - b.tierNum); @@ -39,7 +42,7 @@ class FissureEmbed extends BaseEmbed { this.description = `${f.node} against ${f.enemy}`; this.footer.text = `${f.eta} remaining • Ends at `; this.timestamp = new Date(f.expiry); - this.thumbnail.url = 'https://i.imgur.com/EfIRu6v.png'; + this.thumbnail.url = fissureThumb; } this.color = 0x4aa1b2; diff --git a/src/embeds/FrameEmbed.js b/src/embeds/FrameEmbed.js index 64365cf1f..9b1c81cb9 100644 --- a/src/embeds/FrameEmbed.js +++ b/src/embeds/FrameEmbed.js @@ -1,7 +1,7 @@ 'use strict'; const BaseEmbed = require('./BaseEmbed.js'); -const { emojify } = require('../CommonFunctions.js'); +const { emojify, assetBase } = require('../CommonFunctions'); /** * Generates enemy embeds @@ -16,7 +16,7 @@ class FrameEmbed extends BaseEmbed { super(); this.thumbnail = { - url: 'https://i.imgur.com/tIBB0ea.png', + url: `${assetBase}/img/arcane.png` }; if (frame && typeof frame !== 'undefined') { this.title = frame.name; diff --git a/src/embeds/InvasionEmbed.js b/src/embeds/InvasionEmbed.js index 8cb75e7f4..7bb829c9e 100644 --- a/src/embeds/InvasionEmbed.js +++ b/src/embeds/InvasionEmbed.js @@ -1,6 +1,9 @@ 'use strict'; const BaseEmbed = require('./BaseEmbed.js'); +const { assetBase, wikiBase } = require('../CommonFunctions'); + +const invasionThumb = `${assetBase}img/invasion.png`; /** * Generates invasion embeds @@ -15,7 +18,7 @@ class InvasionEmbed extends BaseEmbed { super(); this.color = 0x3498db; - this.url = 'http://warframe.wikia.com/wiki/Invasion'; + this.url = `${wikiBase}Invasion`; if (invasions.length > 1) { this.fields = invasions.map((i) => { let rewards = i.defenderReward.asString; @@ -46,7 +49,7 @@ class InvasionEmbed extends BaseEmbed { } this.thumbnail = { - url: 'http://i.imgur.com/QUPS0ql.png', + url: invasionThumb, }; } } diff --git a/src/embeds/PriceCheckEmbed.js b/src/embeds/PriceCheckEmbed.js index c6d6f472e..bdede1652 100644 --- a/src/embeds/PriceCheckEmbed.js +++ b/src/embeds/PriceCheckEmbed.js @@ -25,7 +25,7 @@ class PriceCheckEmbed extends BaseEmbed { }, ]; this.footer = { - icon_url: 'https://cdn.discordapp.com/icons/195582152849620992/4c1fbd47b3e6c8d49b6d2362c79a537b.jpg', + icon_url: 'https://staging.nexushub.co/img/brand/nexushub-logo-color.png', text: 'Pricechecks provided by Nexus Stats - https://nexus-stats.com', }; } else { diff --git a/src/embeds/SalesEmbed.js b/src/embeds/SalesEmbed.js index c59b5100d..3ec638c25 100644 --- a/src/embeds/SalesEmbed.js +++ b/src/embeds/SalesEmbed.js @@ -1,6 +1,9 @@ 'use strict'; const BaseEmbed = require('./BaseEmbed.js'); +const { assetBase } = require('../CommonFunctions'); + +const darvo = `${assetBase}/img/darvo-md.png`; /** * Generates daily deal embeds @@ -17,7 +20,7 @@ class SalesEmbed extends BaseEmbed { this.color = 0x0000ff; this.title = sales[0].isPopular ? `[${platform.toUpperCase()}] Popular Sales ` : `[${platform.toUpperCase()}] Featured Deal`; this.thumbnail = { - url: 'http://i.imgur.com/i9IXX7P.png', + url: darvo, }; this.fields = []; sales.forEach((sale) => { diff --git a/src/embeds/ShieldEmbed.js b/src/embeds/ShieldEmbed.js index 918d7970f..cc87f93b8 100644 --- a/src/embeds/ShieldEmbed.js +++ b/src/embeds/ShieldEmbed.js @@ -1,6 +1,9 @@ 'use strict'; const BaseEmbed = require('./BaseEmbed.js'); +const { assetBase } = require('../CommonFunctions'); + +const corpus = `${assetBase}/img/corpus.png`; function shieldCalc(baseShields, baseLevel, currentLevel) { return (parseFloat(baseShields) @@ -26,7 +29,7 @@ class ShieldEmbed extends BaseEmbed { this.title = 'Warframe - Shields'; this.url = 'https://warframe.com'; this.thumbnail = { - url: 'http://i.imgur.com/BVUXIjA.png', + url: corpus, }; this.fields = [ { diff --git a/src/embeds/SimarisEmbed.js b/src/embeds/SimarisEmbed.js index 3e0d74b68..08c35455e 100644 --- a/src/embeds/SimarisEmbed.js +++ b/src/embeds/SimarisEmbed.js @@ -1,6 +1,9 @@ 'use strict'; const BaseEmbed = require('./BaseEmbed.js'); +const { assetBase } = require('../CommonFunctions'); + +const simarisThumb = `${assetBase}/img/simaris.png`; /** * Generates simaris embeds @@ -15,7 +18,7 @@ class SimarisEmbed extends BaseEmbed { super(); this.thumbnail = { - url: 'http://i.imgur.com/mRKOHyv.png', + url: simarisThumb, }; this.title = `[${platform.toUpperCase()}] Worldstate - Sanctuary`; this.color = simaris.isTargetActive > 2 ? 0x00ff00 : 0xff0000; diff --git a/src/embeds/SortieEmbed.js b/src/embeds/SortieEmbed.js index 2dbe13d82..230718999 100644 --- a/src/embeds/SortieEmbed.js +++ b/src/embeds/SortieEmbed.js @@ -1,6 +1,9 @@ 'use strict'; const BaseEmbed = require('./BaseEmbed.js'); +const { assetBase } = require('../CommonFunctions'); + +const sortieThumb = `${assetBase}/img/sortie.png`; /** * Generates sortie embeds @@ -26,7 +29,7 @@ class SortieEmbed extends BaseEmbed { this.title = `[${platform.toUpperCase()}] Worldstate - Sortie`; this.thumbnail = { - url: 'http://i.imgur.com/wWBRhaB.png', + url: sortieThumb, }; } } diff --git a/src/embeds/SyndicateEmbed.js b/src/embeds/SyndicateEmbed.js index bacc5bcf6..338429bea 100644 --- a/src/embeds/SyndicateEmbed.js +++ b/src/embeds/SyndicateEmbed.js @@ -1,6 +1,9 @@ 'use strict'; const BaseEmbed = require('./BaseEmbed.js'); +const { assetBase, wikiBase } = require('../CommonFunctions'); + +const syndicateThumb = `${assetBase}/img/syndicate.png`; const values = ['all', 'Arbiters of Hexis', 'Perrin Sequence', 'Cephalon Suda', 'Steel Meridian', 'New Loka', 'Red Veil', 'Ostrons', 'Assassins', 'Quills']; @@ -59,9 +62,9 @@ class SyndicateEmbed extends BaseEmbed { name: 'No such Syndicate', value: `Valid values: ${values.join(', ')}`, }]; - this.url = 'https://warframe.com'; + this.url = `${wikiBase}/Syndicates` this.thumbnail = { - url: 'https://i.imgur.com/I8CjF9d.png', + url: syndicateThumb, }; const foundSyndicate = missions.length && values.find(v => syndicate diff --git a/src/embeds/SynthesisTargetEmbed.js b/src/embeds/SynthesisTargetEmbed.js index 378a32e76..75f065bdf 100644 --- a/src/embeds/SynthesisTargetEmbed.js +++ b/src/embeds/SynthesisTargetEmbed.js @@ -1,6 +1,9 @@ 'use strict'; const BaseEmbed = require('./BaseEmbed.js'); +const { assetBase } = require('../CommonFunctions'); + +const scannerThumb = `${assetBase}/img/synthesis-scanner.png`; /** * Generates synthesis target embeds @@ -15,7 +18,7 @@ class SynthesisTargetEmbed extends BaseEmbed { super(); this.thumbnail = { - url: 'https://i.imgur.com/4Awre4E.png', + url: scannerThumb, }; if (synthTargets.length === 1) { this.title = synthTargets[0].name; diff --git a/src/embeds/VoidTraderEmbed.js b/src/embeds/VoidTraderEmbed.js index 81695fc2b..81cdba61d 100644 --- a/src/embeds/VoidTraderEmbed.js +++ b/src/embeds/VoidTraderEmbed.js @@ -1,6 +1,9 @@ 'use strict'; const BaseEmbed = require('./BaseEmbed.js'); +const { assetBase } = require('../CommonFunctions'); + +const baroThumb = `${assetBase}/img/baro.png`; /** * Generates void trader embeds @@ -31,7 +34,7 @@ class VoidTraderEmbed extends BaseEmbed { }); this.title = `[${platform.toUpperCase()}] Worldstate - Void Trader`; this.thumbnail = { - url: 'http://i.imgur.com/z0wU29P.png', + url: baroThumb, }; } }