Docstrings up to helpset pagecharlimit

This commit is contained in:
bobloy
2020-12-11 17:56:38 -05:00
parent 7655cefdcd
commit ca04ac4778

View File

@@ -2085,6 +2085,8 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
async def _game(self, ctx: commands.Context, *, game: str = None): async def _game(self, ctx: commands.Context, *, game: str = None):
"""Sets [botname]'s playing status. """Sets [botname]'s playing status.
This will appear as `Playing <game>` or `PLAYING A GAME: <game>` depending on the context.
Maximum length for a playing status is 128 characters. Maximum length for a playing status is 128 characters.
Examples: Examples:
@@ -2093,7 +2095,7 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
**Arguments:** **Arguments:**
- `[game]` The text to follow `playing`. Leave blank to clear the current activity status. - `[game]` The text to follow `Playing`. Leave blank to clear the current activity status.
""" """
if game: if game:
@@ -2116,15 +2118,17 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
async def _listening(self, ctx: commands.Context, *, listening: str = None): async def _listening(self, ctx: commands.Context, *, listening: str = None):
"""Sets [botname]'s listening status. """Sets [botname]'s listening status.
This will appear as `Listening to <listening>`.
Maximum length for a listening status is 128 characters. Maximum length for a listening status is 128 characters.
Examples: Examples:
- `[p]set playing` - Clears the activity status. - `[p]set listening` - Clears the activity status.
- `[p]set playing the keyboard` - `[p]set listening jams`
**Arguments:** **Arguments:**
- `[game]` The text to follow `playing`. Leave blank to clear the current activity status.""" - `[listening]` The text to follow `Listening to`. Leave blank to clear the current activity status."""
status = ctx.bot.guilds[0].me.status if len(ctx.bot.guilds) > 0 else discord.Status.online status = ctx.bot.guilds[0].me.status if len(ctx.bot.guilds) > 0 else discord.Status.online
if listening: if listening:
@@ -2143,7 +2147,19 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
@checks.bot_in_a_guild() @checks.bot_in_a_guild()
@checks.is_owner() @checks.is_owner()
async def _watching(self, ctx: commands.Context, *, watching: str = None): async def _watching(self, ctx: commands.Context, *, watching: str = None):
"""Sets [botname]'s watching status.""" """Sets [botname]'s watching status.
This will appear as `Watching <watching>`.
Maximum length for a watching status is 128 characters.
Examples:
- `[p]set watching` - Clears the activity status.
- `[p]set watching [p]help`
**Arguments:**
- `[watching]` The text to follow `Watching`. Leave blank to clear the current activity status."""
status = ctx.bot.guilds[0].me.status if len(ctx.bot.guilds) > 0 else discord.Status.online status = ctx.bot.guilds[0].me.status if len(ctx.bot.guilds) > 0 else discord.Status.online
if watching: if watching:
@@ -2160,7 +2176,19 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
@checks.bot_in_a_guild() @checks.bot_in_a_guild()
@checks.is_owner() @checks.is_owner()
async def _competing(self, ctx: commands.Context, *, competing: str = None): async def _competing(self, ctx: commands.Context, *, competing: str = None):
"""Sets [botname]'s competing status.""" """Sets [botname]'s competing status.
This will appear as `Competing in <competing>`.
Maximum length for a competing status is 128 characters.
Examples:
- `[p]set competing` - Clears the activity status.
- `[p]set competing London 2012 Olympic Games`
**Arguments:**
- `[competing]` The text to follow `Competing in`. Leave blank to clear the current activity status."""
status = ctx.bot.guilds[0].me.status if len(ctx.bot.guilds) > 0 else discord.Status.online status = ctx.bot.guilds[0].me.status if len(ctx.bot.guilds) > 0 else discord.Status.online
if competing: if competing:
@@ -2182,10 +2210,18 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
"""Sets [botname]'s status. """Sets [botname]'s status.
Available statuses: Available statuses:
online - `online`
idle - `idle`
dnd - `dnd`
invisible - `invisible`
Examples:
- `[p]set status online` - Clears the activity status.
- `[p]set status invisible`
**Arguments:**
- `<status>` One of the available statuses.
""" """
statuses = { statuses = {
@@ -2210,7 +2246,21 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
async def stream(self, ctx: commands.Context, streamer=None, *, stream_title=None): async def stream(self, ctx: commands.Context, streamer=None, *, stream_title=None):
"""Sets [botname]'s streaming status. """Sets [botname]'s streaming status.
Leaving both streamer and stream_title empty will clear it.""" This will appear as `Streaming <stream_title>` or `LIVE ON TWITCH` depending on the context.
It will also include a `Watch` button with a twitch.tv url for the provided streamer.
Maximum length for a stream title is 128 characters.
Leaving both streamer and stream_title empty will clear it.
Examples:
- `[p]set competing` - Clears the activity status.
- `[p]set competing London 2012 Olympic Games`
**Arguments:**
- `[streamer]` The twitch streamer to provide a link to. This can be their twitch name or the entire URL.
- `[stream_title]` The text to follow `Streaming` in the status."""
status = ctx.bot.guilds[0].me.status if len(ctx.bot.guilds) > 0 else None status = ctx.bot.guilds[0].me.status if len(ctx.bot.guilds) > 0 else None
@@ -2230,7 +2280,20 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
@_set.command(name="username", aliases=["name"]) @_set.command(name="username", aliases=["name"])
@checks.is_owner() @checks.is_owner()
async def _username(self, ctx: commands.Context, *, username: str): async def _username(self, ctx: commands.Context, *, username: str):
"""Sets [botname]'s username.""" """Sets [botname]'s username.
Maximum length for a username is 32 characters.
Note: The username of a verified bot cannot be manually changed.
Please contact Discord support to change it.
Example:
- `[p]set username BaguetteBot`
**Arguments:**
- `<username>` The username to give the bot.
"""
try: try:
if self.bot.user.public_flags.verified_bot: if self.bot.user.public_flags.verified_bot:
await ctx.send( await ctx.send(
@@ -2275,7 +2338,17 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
@checks.admin_or_permissions(manage_nicknames=True) @checks.admin_or_permissions(manage_nicknames=True)
@commands.guild_only() @commands.guild_only()
async def _nickname(self, ctx: commands.Context, *, nickname: str = None): async def _nickname(self, ctx: commands.Context, *, nickname: str = None):
"""Sets [botname]'s nickname.""" """Sets [botname]'s nickname for the current server.
Maximum length for a nickname is 32 characters.
Example:
- `[p]set username 🎃 SpookyBot 🎃`
**Arguments:**
- `[nickname]` The nickname to give the bot. Leave blank to clear the current nickname.
"""
try: try:
if nickname and len(nickname) > 32: if nickname and len(nickname) > 32:
await ctx.send(_("Failed to change nickname. Must be 32 characters or fewer.")) await ctx.send(_("Failed to change nickname. Must be 32 characters or fewer."))
@@ -2289,7 +2362,19 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
@_set.command(aliases=["prefixes"]) @_set.command(aliases=["prefixes"])
@checks.is_owner() @checks.is_owner()
async def prefix(self, ctx: commands.Context, *prefixes: str): async def prefix(self, ctx: commands.Context, *prefixes: str):
"""Sets [botname]'s global prefix(es).""" """Sets [botname]'s global prefix(es).
Warning: This is not additive. It will replace all current prefixes.
Examples:
- `[p]set prefix !`
- `[p]set prefix "@[botname] "` - Quotes are needed to use spaces. This uses a mention as the prefix.
- `[p]set prefix ! ? .` - Sets multiple prefixes.
**Arguments:**
- `[prefixes...]` The prefixes the bot will respond to globally.
"""
if not prefixes: if not prefixes:
await ctx.send_help() await ctx.send_help()
return return
@@ -2300,7 +2385,19 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
@checks.admin_or_permissions(manage_guild=True) @checks.admin_or_permissions(manage_guild=True)
@commands.guild_only() @commands.guild_only()
async def serverprefix(self, ctx: commands.Context, *prefixes: str): async def serverprefix(self, ctx: commands.Context, *prefixes: str):
"""Sets [botname]'s server prefix(es).""" """Sets [botname]'s server prefix(es).
Warning: This will override global prefixes, the bot will not respond to any global prefixes in this server.
This is not additive. It will replace all current server prefixes.
Examples:
- `[p]set serverprefix !`
- `[p]set serverprefix "@[botname] "` - Quotes are needed to use spaces. This uses a mention as the prefix.
- `[p]set serverprefix ! ? .` - Sets multiple prefixes.
**Arguments:**
- `[prefixes...]` The prefixes the bot will respond to on this server. Leave blank to clear server prefixes"""
if not prefixes: if not prefixes:
await ctx.bot.set_prefixes(guild=ctx.guild, prefixes=[]) await ctx.bot.set_prefixes(guild=ctx.guild, prefixes=[])
await ctx.send(_("Guild prefixes have been reset.")) await ctx.send(_("Guild prefixes have been reset."))
@@ -2314,15 +2411,22 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
async def globallocale(self, ctx: commands.Context, language_code: str): async def globallocale(self, ctx: commands.Context, language_code: str):
""" """
Changes the bot's default locale. Changes the bot's default locale.
This will be used when a server has not set a locale, or in DMs. This will be used when a server has not set a locale, or in DMs.
`<language_code>` can be any language code with country code included, Go to [Red's Crowdin page](https://translate.discord.red) to see locales that are available with translations.
e.g. `en-US`, `de-DE`, `fr-FR`, `pl-PL`, etc.
Go to Red's Crowdin page to see locales that are available with translations:
https://translate.discord.red
To reset to English, use "en-US". To reset to English, use "en-US".
Examples:
- `[p]set locale en-US`
- `[p]set locale de-DE`
- `[p]set locale fr-FR`
- `[p]set locale pl-PL`
**Arguments:**
- `<language_code>` The default locale to use for the bot. This can be any language code with country code included.
""" """
try: try:
locale = BabelLocale.parse(language_code, sep="-") locale = BabelLocale.parse(language_code, sep="-")
@@ -2347,14 +2451,21 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
""" """
Changes the bot's locale in this server. Changes the bot's locale in this server.
`<language_code>` can be any language code with country code included, Go to [Red's Crowdin page](https://translate.discord.red) to see locales that are available with translations.
e.g. `en-US`, `de-DE`, `fr-FR`, `pl-PL`, etc.
Go to Red's Crowdin page to see locales that are available with translations:
https://translate.discord.red
Use "default" to return to the bot's default set language. Use "default" to return to the bot's default set language.
To reset to English, use "en-US". To reset to English, use "en-US".
Examples:
- `[p]set locale en-US`
- `[p]set locale de-DE`
- `[p]set locale fr-FR`
- `[p]set locale pl-PL`
- `[p]set locale default` - Resets to the global default locale.
**Arguments:**
- `<language_code>` The default locale to use for the bot. This can be any language code with country code included.
""" """
if language_code.lower() == "default": if language_code.lower() == "default":
global_locale = await self.bot._config.locale() global_locale = await self.bot._config.locale()
@@ -2384,10 +2495,17 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
""" """
Changes bot's regional format. This is used for formatting date, time and numbers. Changes bot's regional format. This is used for formatting date, time and numbers.
`<language_code>` can be any language code with country code included, `language_code` can be any language code with country code included, e.g. `en-US`, `de-DE`, `fr-FR`, `pl-PL`, etc.
e.g. `en-US`, `de-DE`, `fr-FR`, `pl-PL`, etc. Leave `language_code` empty to base regional formatting on bot's locale.
Leave `<language_code>` empty to base regional formatting on bot's locale. Examples:
- `[p]set globalregionalformat en-US`
- `[p]set globalregion de-DE`
- `[p]set globalregionalformat` - Resets to the locale.
**Arguments:**
- `[language_code]` The default region format to use for the bot.
""" """
if language_code is None: if language_code is None:
i18n.set_regional_format(None) i18n.set_regional_format(None)
@@ -2420,10 +2538,17 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
""" """
Changes bot's regional format in this server. This is used for formatting date, time and numbers. Changes bot's regional format in this server. This is used for formatting date, time and numbers.
`<language_code>` can be any language code with country code included, `language_code` can be any language code with country code included, e.g. `en-US`, `de-DE`, `fr-FR`, `pl-PL`, etc.
e.g. `en-US`, `de-DE`, `fr-FR`, `pl-PL`, etc. Leave `language_code` empty to base regional formatting on bot's locale in this server.
Leave `<language_code>` empty to base regional formatting on bot's locale in this server. Examples:
- `[p]set regionalformat en-US`
- `[p]set region de-DE`
- `[p]set regionalformat` - Resets to the locale.
**Arguments:**
- `[language_code]` The region format to use for the bot in this server.
""" """
if language_code is None: if language_code is None:
i18n.set_contextual_regional_format(None) i18n.set_contextual_regional_format(None)
@@ -2459,8 +2584,19 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
The maximum amount of allowed characters is 1024. The maximum amount of allowed characters is 1024.
Supports markdown, links and "mentions". Supports markdown, links and "mentions".
Link example:
`[My link](https://example.com)` Link example: `[My link](https://example.com)`
Examples:
- `[p]set custominfo >>> I can use **markdown** like quotes
and ~~multiple~~ lines`
- `[p]set custominfo Join my [support server](discord.gg/discord)
Or send me 🍪`
- `[p]set custominfo` - Removes custom info text.
**Arguments:**
- `[text]` The custom info text.
""" """
if not text: if not text:
await ctx.bot._config.custom_info.clear() await ctx.bot._config.custom_info.clear()
@@ -2476,15 +2612,23 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
@_set.group(invoke_without_command=True) @_set.group(invoke_without_command=True)
@checks.is_owner() @checks.is_owner()
async def api(self, ctx: commands.Context, service: str, *, tokens: TokenConverter): async def api(self, ctx: commands.Context, service: str, *, tokens: TokenConverter):
"""Set, list or remove various external API tokens. """Commands to set, list or remove various external API tokens.
This setting will be asked for by some 3rd party cogs and some core cogs. This setting will be asked for by some 3rd party cogs and some core cogs.
To add the keys provide the service name and the tokens as a comma separated To add the keys provide the service name and the tokens as a comma separated
list of key,values as described by the cog requesting this command. list of key,values as described by the cog requesting this command.
Note: API tokens are sensitive and should only be used in a private channel Note: API tokens are sensitive and should only be used in a private channel or in DM with the bot.
or in DM with the bot.
Examples:
- `[p]set api Spotify redirect_uri localhost`
- `[p]set api github client_id,whoops client_secret,whoops`
**Arguments:**
- `<service>` The service you're adding tokens to.
- `<tokens>` Pairs of token keys and values. The key and value should be separated by one of ` `, `,`, or `;`.
""" """
if ctx.channel.permissions_for(ctx.me).manage_messages: if ctx.channel.permissions_for(ctx.me).manage_messages:
await ctx.message.delete() await ctx.message.delete()
@@ -2514,7 +2658,15 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
@api.command(name="remove") @api.command(name="remove")
async def api_remove(self, ctx: commands.Context, *services: str): async def api_remove(self, ctx: commands.Context, *services: str):
"""Remove the given services with all their keys and tokens.""" """Remove the given services with all their keys and tokens.
Examples:
- `[p]set api remove Spotify`
- `[p]set api remove github audiodb`
**Arguments:**
- `[services...]` The services to remove."""
bot_services = (await ctx.bot.get_shared_api_tokens()).keys() bot_services = (await ctx.bot.get_shared_api_tokens()).keys()
services = [s for s in services if s in bot_services] services = [s for s in services if s in bot_services]
@@ -2535,12 +2687,15 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
@commands.group() @commands.group()
@checks.is_owner() @checks.is_owner()
async def helpset(self, ctx: commands.Context): async def helpset(self, ctx: commands.Context):
"""Manage settings for the help command.""" """Commands to manage settings for the help command."""
pass pass
@helpset.command(name="showsettings") @helpset.command(name="showsettings")
async def helpset_showsettings(self, ctx: commands.Context): async def helpset_showsettings(self, ctx: commands.Context):
""" Show the current help settings. """ """Show the current help settings.
Warning: These setting may not be accurate if the default formatter is not in use.
"""
help_settings = await commands.help.HelpSettings.from_context(ctx) help_settings = await commands.help.HelpSettings.from_context(ctx)
@@ -2557,7 +2712,7 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
@helpset.command(name="resetformatter") @helpset.command(name="resetformatter")
async def helpset_resetformatter(self, ctx: commands.Context): async def helpset_resetformatter(self, ctx: commands.Context):
""" This resets [botname]'s help formatter to the default formatter. """ """This resets [botname]'s help formatter to the default formatter."""
ctx.bot.reset_help_formatter() ctx.bot.reset_help_formatter()
await ctx.send( await ctx.send(
@@ -2589,8 +2744,18 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
Allows the help command to be sent as a paginated menu instead of separate Allows the help command to be sent as a paginated menu instead of separate
messages. messages.
When enabled, `[p]help` will only show one page at a time and use reactions to navigate to other pages.
This defaults to False. This defaults to False.
Using this without a setting will toggle. Using this without a setting will toggle.
Examples:
- `[p]helpset usemenues False` - Disables using menus on this server.
- `[p]helpset usemenues` - Toggles the value.
**Arguments:**
- `[use_menus]` Whether to use menus on this server. Leave blank to toggle.
""" """
if use_menus is None: if use_menus is None:
use_menus = not await ctx.bot._config.help.use_menus() use_menus = not await ctx.bot._config.help.use_menus()
@@ -2607,6 +2772,14 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
This defaults to False. This defaults to False.
Using this without a setting will toggle. Using this without a setting will toggle.
Examples:
- `[p]helpset showhidden False` - Disables embeds on this server.
- `[p]helpset showhidden` - Toggles the value.
**Arguments:**
- `[show_hidden]` Whether to use embeds on this server. Leave blank to toggle.
""" """
if show_hidden is None: if show_hidden is None:
show_hidden = not await ctx.bot._config.help.show_hidden() show_hidden = not await ctx.bot._config.help.show_hidden()
@@ -2623,6 +2796,16 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
Defaults to False. Defaults to False.
Using this without a setting will toggle. Using this without a setting will toggle.
Note: This is only used when the bot is not using menus.
Examples:
- `[p]helpset usetick False` - Disables ticking in DMs.
- `[p]helpset usetick` - Toggles the value.
**Arguments:**
- `[use_tick]` Whether to tick the help command in DMs. Leave blank to toggle.
""" """
if use_tick is None: if use_tick is None:
use_tick = not await ctx.bot._config.help.use_tick() use_tick = not await ctx.bot._config.help.use_tick()
@@ -2635,11 +2818,18 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
@helpset.command(name="verifychecks") @helpset.command(name="verifychecks")
async def helpset_permfilter(self, ctx: commands.Context, verify: bool = None): async def helpset_permfilter(self, ctx: commands.Context, verify: bool = None):
""" """
Sets if commands which can't be run in the current context should be Sets if commands which can't be run in the current context should be filtered from help.
filtered from help.
Defaults to True. Defaults to True.
Using this without a setting will toggle. Using this without a setting will toggle.
Examples:
- `[p]helpset verifychecks False` - Enables showing unusable commands.
- `[p]helpset verifychecks` - Toggles the value.
**Arguments:**
- `[verify]` Whether to hide unusable commands in help. Leave blank to toggle.
""" """
if verify is None: if verify is None:
verify = not await ctx.bot._config.help.verify_checks() verify = not await ctx.bot._config.help.verify_checks()
@@ -2652,13 +2842,20 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
@helpset.command(name="verifyexists") @helpset.command(name="verifyexists")
async def helpset_verifyexists(self, ctx: commands.Context, verify: bool = None): async def helpset_verifyexists(self, ctx: commands.Context, verify: bool = None):
""" """
This allows the bot to respond indicating the existence of a specific This allows the bot to respond indicating the existence of a specific help topic even if the user can't use it.
help topic even if the user can't use it.
Note: This setting on it's own does not fully prevent command enumeration. Note: This setting on it's own does not fully prevent command enumeration.
Defaults to False. Defaults to False.
Using this without a setting will toggle. Using this without a setting will toggle.
Examples:
- `[p]helpset verifyexists False` - Enables showing unusable commands.
- `[p]helpset verifyexists` - Toggles the value.
**Arguments:**
- `[verify]` Whether to hide unusable commands in help. Leave blank to toggle.
""" """
if verify is None: if verify is None:
verify = not await ctx.bot._config.help.verify_exists() verify = not await ctx.bot._config.help.verify_exists()
@@ -2677,13 +2874,20 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
async def helpset_pagecharlimt(self, ctx: commands.Context, limit: int): async def helpset_pagecharlimt(self, ctx: commands.Context, limit: int):
"""Set the character limit for each page in the help message. """Set the character limit for each page in the help message.
This setting only applies to embedded help. Note: This setting only applies to embedded help.
The default value is 1000 characters. The minimum value is 500. The default value is 1000 characters. The minimum value is 500.
The maximum is based on the lower of what you provide and what discord allows. The maximum is based on the lower of what you provide and what discord allows.
Please note that setting a relatively small character limit may Please note that setting a relatively small character limit may
mean some pages will exceed this limit. mean some pages will exceed this limit.
Example:
- `[p]helpset pagecharlimit 1500`
**Arguments:**
- `<limit>` The max amount of characters to show per page in the help message.
""" """
if limit < 500: if limit < 500:
await ctx.send(_("You must give a value of at least 500 characters.")) await ctx.send(_("You must give a value of at least 500 characters."))
@@ -2696,7 +2900,7 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
async def helpset_maxpages(self, ctx: commands.Context, pages: int): async def helpset_maxpages(self, ctx: commands.Context, pages: int):
"""Set the maximum number of help pages sent in a server channel. """Set the maximum number of help pages sent in a server channel.
This setting does not apply to menu help. Note: This setting does not apply to menu help.
If a help message contains more pages than this value, the help message will If a help message contains more pages than this value, the help message will
be sent to the command author via DM. This is to help reduce spam in server be sent to the command author via DM. This is to help reduce spam in server