* Revert "Wait for two 'Started Launcher' lines before connecting to managed LL (#5751)"
This reverts commit cf85a6470f.
* Use the new ready line from LL dev build 1352+
* [Core] Add `--unload-cogs` cli.
* Fixed error + Reformat.
* At @Jack1142's request, the `packages` local variable is no longer a list, but a dictionary with `None` values, to avoid duplication.
* Update redbot/core/bot.py
Co-authored-by: Jakub Kuczys <6032823+jack1142@users.noreply.github.com>
* Update redbot/core/bot.py
Co-authored-by: Jakub Kuczys <6032823+jack1142@users.noreply.github.com>
* Update bot.py
* Update bot.py
Co-authored-by: Jakub Kuczys <6032823+jack1142@users.noreply.github.com>
* Initial commit
* Necessary amendments/changes
* style changes (i knew id have to do this...)
* Use inline()
Co-authored-by: Jakub Kuczys <6032823+jack1142@users.noreply.github.com>
Multiple bugfixes
* Fixed unbound channel_value
* Fixed lack of new lines for listcases
* Fixed response text for case. It can only be used in the current server.
* rhel->rhel8 rename of the include file for install guides
* Add RHEL 9
* Add Alma, Oracle, and Rocky Linux 9 pre-emptively
* Add Alma Linux 9 EOL date
* Add support for set api Modals
Co-authored-by: TrustyJAID <TrustyJAID@gmail.com>
* Blaacckkkk!
* Swap locations of interaction and button.
* Clarified template tokens
* Update docs and some string
* More docs
* Rework the client
Co-authored-by: TrustyJAID <TrustyJAID@gmail.com>
* Goddamned black!
* Missed a few arguments
* Black... Again
* Update redbot/core/utils/views.py
Co-authored-by: TrustyJAID <TrustyJAID@gmail.com>
* Update redbot/core/core_commands.py
Co-authored-by: TrustyJAID <TrustyJAID@gmail.com>
Co-authored-by: TrustyJAID <TrustyJAID@gmail.com>
There's no need to update RepoManager's code as:
- regex for parsing output about ambiguous refs properly treats the date
as part of description regardless of ref type
- code for checking if module exists doesn't use the contents of the error message;
the test only really checks for it to make sure that it triggers the error case
we're actually testing for. We could instead just remove it too.
* Make `controls` in `menu()` optional
You might wonder, shouldn't we pass `None` to functions from controls?
No, we shouldn't because when `None` is passed, only DEFAULT_CONTROLS
can be used and that means that the length of pages list won't change.
* Update usage in core and core cogs
* Add missing docstrings to `redbot.core.utils.menus` module
* Streamalert list shows each platform the channels were added on
* Added argument to specify the discord channel where stream alerts appear
* Fixed styling
* Changed discord_channel type to discord.TextChannel
* Changed join to humanize_list to display the streams list, split the message concatenation into two lines for better readability
* Allow specifying discord channel for picarto and hitbox, fix style for youtube and twitch
* Since token_name from streamtypes can be None on Picarto and Hitbox, I added an attribute to the Stream class to hold the platform name
* Message now tells the user that the stream alert was disabled only for the specified channel.
* Address review
* fix style
* Consistency! Sort of...
Co-authored-by: douglas-cpp <douglasc.dev@gmail.com>
Co-authored-by: Douglas <douglas.carvalho@edu.unipar.br>
* Make sure that the repository we check is in the location we expect
* Merge `redbot._version` into `redbot`
* Generate VersionInfo in _get_version()
This way, if VersionInfo.from_str() generates exception due to invalid
version, we catch it.
* Temporarily set d.py to use latest git revision
* Remove `bot` param to Client.start
* Switch to aware datetimes
A lot of this is removing `.replace(...)` which while not technically
needed, simplifies the code base. There's only a few changes that are
actually necessary here.
* Update to work with new Asset design
* [threads] Update core ModLog API to support threads
- Added proper support for passing `Thread` to `channel`
when creating/editing case
- Added `parent_channel_id` attribute to Modlog API's Case
- Added `parent_channel` property that tries to get parent channel
- Updated case's content to show both thread and parent information
* [threads] Disallow usage of threads in some of the commands
- announceset channel
- filter channel clear
- filter channel add
- filter channel remove
- GlobalUniqueObjectFinder converter
- permissions addglobalrule
- permissions removeglobalrule
- permissions removeserverrule
- Permissions cog does not perform any validation for IDs
when setting through YAML so that has not been touched
- streamalert twitch/youtube/picarto
- embedset channel
- set ownernotifications adddestination
* [threads] Handle threads in Red's permissions system (Requires)
- Made permissions system apply rules of (only) parent in threads
* [threads] Update embed_requested to support threads
- Threads don't have their own embed settings and inherit from parent
* [threads] Update Red.message_eligible_as_command to support threads
* [threads] Properly handle invocation of [p](un)mutechannel in threads
Usage of a (un)mutechannel will mute/unmute user in the parent channel
if it's invoked in a thread.
* [threads] Update Filter cog to properly handle threads
- `[p]filter channel list` in a threads sends list for parent channel
- Checking for filter hits for a message in a thread checks its parent
channel's word list. There's no separate word list for threads.
* [threads] Support threads in Audio cog
- Handle threads being notify channels
- Update type hint for `is_query_allowed()`
* [threads] Update type hints and documentation to reflect thread support
- Documented that `{channel}` in CCs might be a thread
- Allowed (documented) usage of threads with `Config.channel()`
- Separate thread scope is still in the picture though
if it were to be done, it's going to be in separate in PR
- GuildContext.channel might be Thread
* Use less costy channel check in customcom's on_message_without_command
This isn't needed for d.py 2.0 but whatever...
* Update for in-place edits
* Embed's bool changed behavior, I'm hoping it doesn't affect us
* Address User.permissions_in() removal
* Swap VerificationLevel.extreme with VerificationLevel.highest
* Change to keyword-only parameters
* Change of `Guild.vanity_invite()` return type
* avatar -> display_avatar
* Fix metaclass shenanigans with Converter
* Update Red.add_cog() to be inline with `dpy_commands.Bot.add_cog()`
This means adding `override` keyword-only parameter and causing
small breakage by swapping RuntimeError with discord.ClientException.
* Address all DEP-WARNs
* Remove Context.clean_prefix and use upstream implementation instead
* Remove commands.Literal and use upstream implementation instead
Honestly, this was a rather bad implementation anyway...
Breaking but actually not really - it was provisional.
* Update Command.callback's setter
Support for functools.partial is now built into d.py
* Add new perms in HUMANIZED_PERM mapping (some from d.py 1.7 it seems)
BTW, that should really be in core instead of what we have now...
* Remove the part of do_conversion that has not worked for a long while
* Stop wrapping BadArgument in ConversionFailure
This is breaking but it's best to resolve it like this.
The functionality of ConversionFailure can be replicated with
Context.current_parameter and Context.current_argument.
* Add custom errors for int and float converters
* Remove Command.__call__ as it's now implemented in d.py
* Get rid of _dpy_reimplements
These were reimplemented for the purpose of typing
so it is no longer needed now that d.py is type hinted.
* Add return to Red.remove_cog
* Ensure we don't delete messages that differ only by used sticker
* discord.InvalidArgument->ValueError
* Move from raw <t:...> syntax to discord.utils.format_dt()
* Address AsyncIter removal
* Swap to pos-only for params that are pos-only in upstream
* Update for changes to Command.params
* [threads] Support threads in ignore checks and allow ignoring them
- Updated `[p](un)ignore channel` to accept threads
- Updated `[p]ignore list` to list ignored threads
- Updated logic in `Red.ignored_channel_or_guild()`
Ignores for guild channels now work as follows (only changes for threads):
- if channel is not a thread:
- check if user has manage channels perm in channel
and allow command usage if so
- check if channel is ignored and disallow command usage if so
- allow command usage if none of the conditions above happened
- if channel is a thread:
- check if user has manage channels perm in parent channel
and allow command usage if so
- check if parent channel is ignored and disallow command usage
if so
- check if user has manage thread perm in parent channel
and allow command usage if so
- check if thread is ignored and disallow command usage if so
- allow command usage if none of the conditions above happened
* [partial] Raise TypeError when channel is of PartialMessageable type
- Red.embed_requested
- Red.ignored_channel_or_guild
* [partial] Discard command messages when channel is PartialMessageable
* [threads] Add utilities for checking appropriate perms in both channels & threads
* [threads] Update code to use can_react_in() and @bot_can_react()
* [threads] Update code to use can_send_messages_in
* [threads] Add send_messages_in_threads perm to mute role and overrides
* [threads] Update code to use (bot/user)_can_manage_channel
* [threads] Update [p]diagnoseissues to work with threads
* Type hint fix
* [threads] Patch vendored discord.ext.menus to check proper perms in threads
I guess we've reached time when we have to patch the lib we vendor...
* Make docs generation work with non-final d.py releases
* Update discord.utils.oauth_url() usage
* Swap usage of discord.Embed.Empty/discord.embeds.EmptyEmbed to None
* Update usage of Guild.member_count to work with `None`
* Switch from Guild.vanity_invite() to Guild.vanity_url
* Update startup process to work with d.py's new asynchronous startup
* Use setup_hook() for pre-connect actions
* Update core's add_cog, remove_cog, and load_extension methods
* Update all setup functions to async and add awaits to bot.add_cog calls
* Modernize cogs by using async cog_load and cog_unload
* Address StoreChannel removal
* [partial] Disallow passing PartialMessageable to Case.channel
* [partial] Update cogs and utils to work better with PartialMessageable
- Ignore messages with PartialMessageable channel in CustomCommands cog
- In Filter cog, don't pass channel to modlog.create_case()
if it's PartialMessageable
- In Trivia cog, only compare channel IDs
- Make `.utils.menus.menu()` work for messages
with PartialMessageable channel
- Make checks in `.utils.tunnel.Tunnel.communicate()` more rigid
* Add few missing DEP-WARNs
* Squash tested commits
* remove the code jack is concerned about
* Apply suggestions from code review
* more log lines
* more log lines
* format
* formatting
* style(Rename Xms and Xmx mentions): Rename Xms and Xmx to more use friendly names
- Change Xms to "Initial Heapsize"
- Change Xmx to "Max Heapsize"
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* Fix embed requested in DM's
* Add documentation
* black
* Address comments
* Unnecessary added line
* Use correct channel on context
* use correct var name
* More review stuff
* Switch from low-level loop.create_task and asyncio.ensure_future
* Patch vendored discord.ext.menus to use modern APIs as well
That ext is no longer maintained by Danny anyway so...
* black
* Support all Messageables in bot.embed_requested
* Update usage in core
* Simplify [p]contact
This couldn't be done before this change.
I have also simplified getting embed color.
* Make `True` the new default for `check_permissions` kwarg
* update RC dep
* welp 100% tested
* fix import
* 120% tested
* Call _early_init even earlier
Not really in scope of this PR but the original was merged
before I could share any feedback.
* explicitly import getLogger
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* add different logging level callbacks for task exception logging
* Add callback to tasks which didn't have them
* The boring stuff - (apply .trace() and .verbose() to audio, stop using debug_exc_log, delete audio_logging.py)
* Unsured import cleanup
* use new lavalink method
* return so it doesn't log this twice.
* improve logging on main event handler
* Fix formatting breaking with nested formatters.
* Remove useless f-strings
* Revert formatting to the one before PR #5435
* One more small formatting revert
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Use proper syntax for inline formatting in core_commands
* use proper formating utils in core and core cogs wherever reasonable
* tests are awesome
* ensure "(continued)" is translated in help.py
* add colons to translatable strings for easier context comprehension by translators
* Thx flame :)
Co-authored-by: Flame442 <34169552+Flame442@users.noreply.github.com>
* good point
Co-authored-by: Dav <dav@mail.stopdavabuse.de>
Co-authored-by: Flame442 <34169552+Flame442@users.noreply.github.com>
* Simplify `redbot-setup backup` thanks to Click 8.0
* Add some of the missing type hints
* Fix unnecessary new lines in `redbot-setup` and `redbot-setup delete`
* Add default value for storage backend
* Add non-interactive mode to `redbot-setup`
* Ensure Nitro users can't make CCs that are too long
Co-authored-by: TrustyJAID <TrustyJAID@gmail.com>
* Tox formatting
* Update to account for edits and better handling of randoms
Co-authored-by: TrustyJAID <TrustyJAID@gmail.com>
* Prevent unexpected matches by asserting whitespace or eof at the end of matches
* Use a positive lookahead instead of a capturing group to support 1d6h syntax
* Use fullmatch instead of modifying regex strings
This was removed long ago from the Windows guide (#4119) but it seems like we never got around to removing it from Unix install guides as well.
This note is rather inaccurate and the source of truth for updating Red is available in the Updating Red document.
* Drop Fedora 33
By the time we release, it's going to reach EOL.
* Drop Raspberry Pi OS 10, add support for 11
* Bring RPi OS 10 back
* Add Alma Linux 8
* Fix-up RHEL EOL dates
* Add '(Legacy)' to Raspberry Pi OS 10
* Drop CentOS 8
* catch and handle FileNotFoundError when using --no-instance when config.json does not already exist
* move load_existing_config to data_manager.py
* use load_existing_config in create_temp_config
* Fix import in redbot-launcher
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Update links to installation guides
* Update Windows link
This one redirects correctly but updated it anyways
* Update all red-discordbot.readthedocs.io links to docs.discord.red
* Reorganised Set command group
* Moved custominfo
* Tox styling
* Make `set locale®ionalformat` groups work same as server subcommands
* Use consistent method names for commands in `[p]set` group
* Update command names in docstrings
* Remove some weird rst formatting that bugs out my syntax highlighting
* Add checks to some command groups
* Update docs
* oops
* Minor fixes
* Move `[p]set api` group and its subcommands to other command groups
* Move `[p]set ownernotifications` group to other command groups
* black reformat
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Move bankset and modlogset to core commands
* Move prune over too
* Finish moving prune
* Move [p]economyset registeramount to [p]bankset registeramount
* style fix
* Fix circular import issue with another breaking change
* Apparently I missed a conflict and git still let me commit...
* Really git?
* Rename RawUserIds -> RawUserIdConverter, improve documentation
* Improve documentation of `is_owner_if_bank_global()`
* MENTION_REGEX -> USER_MENTION_REGEX
* Add 'bank.' prefix
* Fix command examples in docstrings
* Missing docstring change from `bankset prune`
* Missing changes for commands in modlogset
* Update docs
* Remove duplicated info in `economyset showsettings`
* Fix toctree in index.rst
* Add command group prefixes to names of functions for bankset/modlogset
* Remaining string updates due to command name changes
* Ensure that the bank folder is actually gone
Co-authored-by: palmtree5 <palmtree5+3577255@users.noreply.github.com>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Add instructions on how to add pyenv to load path
* Support zsh in pyenv load path instructions
* Make instructions for Mac work when shell-specific profile file exists
* Includes are weird...
* .
* Fix my misunderstanding of what files zsh sources
* Operator precedence, or something like that
The new pip 21.3 (released 2021-10-11) uses in-tree builds when `pip install .` is used (see [release notes](https://pip.pypa.io/en/stable/news/#v21-3) and [implementation PR](https://github.com/pypa/pip/pull/10495)). This means CodeQL will see all files twice (once in the real location that is part of this repository, and one in the copy in the `build/` dir), which trips up the analysis.
When an editable install is used instead with `pip install -e .`, there is no `build/` dir, so the analysis will work again.
* Update Java URL
* Update choco package as well
* Use Windows-specific URL for Python downloads
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Fix wording in redbot/cogs/mod/kickban.py to match with the command example
* Made changes as requested in PR Review #770078179
* Added changes to docs/cog_guides/mod.rst as requested in PR Review #70784066
* Fixed kick wording
* Fix kick wording
* Update some link texts for accessibility
* Fix stuff nearby while we're here
* Reword links to DigitalOcean
* Use better link text for `[p]triviaset custom`
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Fix#5312
* Update setup.py
* put db actions under one if statement
* check backend type and improve displayed message
* accept format fix
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* fix whitespace
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* separate datapath delete from data delete
* Fix indentation
* Call `driver_cls.initialize()` outside try-finally
* Backup requires db server to run too + some simplifications
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Exclude include files from being built
* Split install guides into multiple documents (one per OS/version combo)
* Update references
* Unify anchor names
* Update pyenv requirements in CentOS 7 guide
* Update install guides for RHEL derivatives to not use pyenv
* Add guide for Rocky Linux 8
* 8.4+ -> 8.4-8.x
* Add 'the'
* add commands, cog converter
* properly use type_checking
* make core commands use command converter
* update commands to use cogconverter
* fix undefined variable name, style
* Update redbot/core/commands/converter.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Update redbot/core/commands/converter.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Update redbot/core/core_commands.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Update redbot/core/core_commands.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Update redbot/core/core_commands.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Update redbot/core/core_commands.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Update redbot/core/core_commands.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* update cog argument names
* update documentation arg names
* update more docs
* This new Sphinx is annoying about this...
* I'm questioning my skills
* Fix name error in `[p]embedset showsettings` when command is not given
* Do not use the new cog converter in `[p]command enablecog`
This is needed so that a cog that isn't loaded but was disabled
can be enabled back.
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Clarify Debian 10 as "Buster"
* Add Debian 11 Install
* This typo would of bugged my OCD...
* Clarify Debian 10 as "Buster"
* Add Debian 11 Install
* This typo would of bugged my OCD...
* Add apt upgrade line to doc
* Removing dupe for Debian 11
I'm not sure how that happened, but oh well...
* Update deps + allow Python 3.9
* Add in updates from Jack's branch
* Fix multiple target for cross-reference warnings
* Update a few more Python 3.8 occurrences
* Bump further
* Don't install tox in CodeQL environment
* Bump Python version in docs to 3.9.7
* more bumps
* Add missing pin
* Stop using the deprecated distro.linux_distribution()
* Suppress deprecation warning
* Fix OpenSUSE Leap instructions
* Drop Fedora 32
* Add Python 3.10-dev to CI
* meh
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* [Core] Blacklist api
* [Core] Use to_add, remove star from other method calls
* various touch ups
* style
* fix doc style
* [Core] Remove iterable import
* [Core] Update commands to use the blacklist/whitelist api
* Change signatures to not use `*args`
* Update all usage of private cache to the new public APIs
* Update the docstrings
* Update the usage in diagnoser
Co-authored-by: Kreusada <67752638+Kreusada@users.noreply.github.com>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Added years and months to parse_timedelta
* Added new parse_datetimedelta along with classes for relative dates
* Switched datetime as dt to just datetime for clarity
* Changed to returning relativedelta instead of datetime
* Fixed single char typo
* After some digging, removed min and max from relative delta b/c of https://github.com/dateutil/dateutil/issues/350
* Add dateutil to intersphinx mapping
* Change uppercase D in RelativeDeltaConverter to a lowercase D
* Fix cross-references in docstrings
* Add new class and methods to __all__
* Remove get_relativedelta_converter()
* style
* Fix name of parse_relativedelta test
* more style
* Re-export new class and function in `redbot.core.commands`
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Split `Requires._transition_state` into reusable methods for Diagnoser
* (style) Fix line length
* Add missing .format()
* Add handling for user permissions, privilege level, Permissions rules
* Add missing awaits, use correct method in user perms check, add 'the'
* Fix .format() fields
* Add comment
* Add new file to labeler's configuration
* Add the command to the documentation
* All the work from DiagnoserCog
You can find the commit history of it here:
https://github.com/jack1142/DiagnoserCog
* Fix circular import
* Make channel argument optional
* Add a tip about channels from different servers
* [Trivia] Handle potential Discord errors in session.
* Hm why did I put HTTPException in there
* Revert "Hm why did I put HTTPException in there"
This reverts commit dc5cb990cb.
* Revert "[Trivia] Handle potential Discord errors in session."
This reverts commit d90e45f9e0.
* Handle Discord errors in _error_handler.
* [Streams] Check non-existent streams more than once
- For YouTube streams, it seems like the RSS feed may sometimes return
an HTTP 404 for a channel, even though the channel exists.
- If this happens more than a few times, then we should declare the
stream as non-existent, and purge it from the list of streams we
check.
* [Streams] Move retry_count reset for YouTubeStream
- Reset after the RSS check, since that is the only place where we raise
StreamNotFound in that function.
* [Streams] Increase retry to 20
* [Streams] Reduce retry count to 10
* [Alias] Added alias edit and alias global edit
* Comment and whitespace only changes
* Docstring fix
* Remove more whitespace
* Add `the` before some English purists make a PR for this...
Co-authored-by: npc203 <npc203@users.noreply.github.com>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* added hierarchy check for rename
added hierarchy check for rename from utils
* format and self check
changed formats and added statement if me != member
* black format
apply black formatting and fix typo
* tox style
tox i guess
* tox again
:<
* Update redbot/cogs/mod/names.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Fix styling
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* [Mod] Send ban reason on Temp Bans
* If none
* Locale friendly
* Fixes for black style
* Use double line break to distinguish between reason header
* Check settings
* Black
* Reduce the number of config calls
* remove additional config call
* fixes
* style
* We're already in `if reason` so this is always True
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Add test for presence of upper and lower bound on Python version
* [part 1/3] Test that this works, DO NOT MERGE
* [part 2/3] Test that this works, DO NOT MERGE
* [part 3/3] Revert unwanted changes, NOW YOU CAN MERGE!
* Initial commit
* update docs
* remove usage kwargs
* style
* Type hint with SelfRole and not discord.Role
* fix docstring
* Various improvements, fixes
* i need to wake up
* more improvements
* AAAA
* add back check
* Improve converter error
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Initial support for Discord timestamping
* Fix timezones
* Fix userinfo for users with member.joined_at equal to None
* Simplify
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Add custom trivia list schema validation and test
* Address review
* Improve error formatting in trivia list test
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Oh my gosh Kowlin is finishing work!?
* fix style
* use f-strings
* moar f-strings actually
* Fix style...
* I did a poor job of find-replacing things
* Improve code readability per previous Kowlin's style
* And reformat it in such a way that get jack through the day
* Okay maybe some whitespace
* Update core_commands.py
* Update core_commands.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Force-disable Audio's Global API functionality
* Remove owner message about global API
* Two more comments
* Update CODEOWNERS
* Bring back the owner notification, modified to not mention global DB
* Remove the global api group fully, remove the mentions of it
* Since i have these uncommitted locally sharing...
* clean up
* clean up
* noone can figure out how my pycharm got into this state .. but hey ho.
* aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
* We don't need this comment, we already include these in gitgnore anyway
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* [Modlog] Confirmation for resetting modlog cases
* We need to return there
* Update modlog.py
* style
* Update redbot/cogs/modlog/modlog.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* version bump
* - bump RLL
- logging changes
- player.channel.guild->player.guild
- small cleanup around logging changes
* missed one
* here this one too
* Apply suggestions from code review
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* add one missing player log
* missed one
* Format with Black
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Initial commit
* Add some args
* bool prolog
* index
* Add more arguments
* more arguments, style fixes
* improve naming of arguments
* Fix up backlog
* Run black
* extra corrections from backlog
* Update tempban arg names
* backlog
* change prolog type
* Change kick argument prolog to member instead of user
* Update argument names
* missed a colon
* Update prolog to be friendly with non-positional args
* Edit through the decorator instead
* Add back docstring spacing
* black
* usage in decorator for name commands
* Fix command signature
* fixup docstring spacing
* style fixes
* Add spacing inside unban docstring
* Rename args instead of using usage
* black - simple
* Add labeler glob
* unify style
* rename variables instead of usage
* Update docstrings correspondingly
* run black
* update description in usage
* ehh this isn't necessary...
* fix up tags
* fix grammar and accuracy issues
* fix docstring too
* This PR depends on Part 2 due to new store value
- cleanup of [p]volume
- a fix for infinite retrying
* update `[p]volume` help
* Update controller.py
* Update redbot/cogs/audio/core/commands/controller.py
meh still hardcoded in RLL .. will be removed in 0.9
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Update redbot/cogs/audio/core/commands/controller.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* [Docs] add `sudo systemctl disable` to Linux auto-restart docs
* [Docs] fix typo in Linux auto-restart docs
* [Docs] update Mac auto-restart docs
* [Docs] implement suggestions for Linux auto-restart docs
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* [Docs] update wording on Mac auto-restart docs
* [Docs] fix grammar in Linux auto-restart docs
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Core guide initial commit
* Mydata docstrings
* Regenerated docs
* Lots more docstrings
* Add document link
* Up to load docstrings
* Black formatting
* docstring semantics
* "cog packages" for loads
* Refix line lengths
* Regenerate docs
* Remove link
* Regenerate docs with new code
* Some small docstrings
* Regenerate docs with new .. warning code
* More docstrings into the `set` command
* Bullet lists need blank lines.
* Regenerate docs
* Regenerate docs (fix bullet lists)
* set activity statuses docstrings
* Docstrings up to helpset pagecharlimit
* Regenerate docs
* Core guide initial commit
* Mydata docstrings
* Regenerated docs
* Lots more docstrings
* Add document link
* Up to load docstrings
* Black formatting
* docstring semantics
* "cog packages" for loads
* Refix line lengths
* Regenerate docs
* Remove link
* Regenerate docs with new code
* Some small docstrings
* Regenerate docs with new .. warning code
* More docstrings into the `set` command
* Bullet lists need blank lines.
* Regenerate docs
* Regenerate docs (fix bullet lists)
* set activity statuses docstrings
* Docstrings up to helpset pagecharlimit
* Regenerate docs
* Maxpages and delete delay docstrings
* spagetthi ctrl+v
* tagline and contact
* A little more contact
* Up to allowlist
* Up to command defaultdisablecog
* Regenerate docs
* Redo custominfo to not be terrible
* Up to default enabled cog
* More docs
* Up to command disabledmsg
* Disabled message stuff was missed
* Finish the rest of the docstrings
* Regenerate docs
* Longer description of the cog
* Regenerate Docs
* Fix some of the suggestions
* Apply additional suggests and some small rewording.
* Regenerate docs.
* Apply suggestions and make additional fixes
* Regenerate docs
* Clarifies it's only loaded.
* Regenerate docs.
* New formatting, more examples, some fixes
* Regenerate docs
* Adds consistant use of dashes to arguments
* More consistant punctuation
* Regenerate docs
* Add labeler detection
* Fix example and use clearing language for helpset verifyexists docstring
* Regenerate docs
* Add leave example and arguments
* Regenerate docs
* Regenerate docs
* Make embedset more readable
(933aefd3ee was the sphinx compatible update)
* Regenerate docs
* Black formatting
* Regenerate docs
* Adds docstring examples and arguments for multiple `embedset` subcommands
* Regenerate docs
* Use partial messages in Streams cog to avoid leakage
* Stop trying to save bot object to Config...
* Put guild id as part of message data
* Fix AttributeError
* Pass bot object to stream classes in commands
* ugh
* Another place we use this class in
* more...
* Bump discord.py, but to the git version for now
* Import GuildConverter from d.py and deprecate our implementation
* Import PartialMessageConverter in our commands extension
* Use newly added `Cog.has_error_handler()` rather than private method
* Update snowflake regex to use 20 as max length
See Rapptz/discord.py#6501
* Use new supported way for custom cooldown buckets
* Include group args in command signature
* Update code to use `Client.close()` over `Client.logout()`
* Add StageChannelConverter and StoreChannelConverter
* Fix AttributeError in licenseinfo
* Prep for 0.7.2
* So What di i do here? I done Magic, magic only found in the tales of old.
* turns out formatting is something important
* fixes
* improved Error handling when Global API is enabled
* further improve resuming logic
* more of dat dark voodoo blood magic
* major tweaks to auto restore when auto play is enabled 👀
* fix duplicated "Auto play stated." message + Auto play restart :feelsgoodman:
* missed these
* fix the new duplicated fucking message bitch.
* Let discord handle player reconnects
* eh
* `Requires force install`, utilize new Exponential Backoff object on player and safer reconnect logic, emulating d.py and WL.
* hmmmmm gotta monitor
* mother fucking brackets
* Why didnt i consider this the first time?????????????
* new error code to handle?
* soooooooooooooooo these are import so why arent we ensuring they are set.
* improved logging
* improved logging
* aaaaaaaaaaaaaaa
* We need our own error and special handling to not conflict with dpy
* (Last Known Bug) Fix the infinite loop of 4006 that sometimes could happen as an edge case after a successful resume.
* This will require a force reinstall to install `RLL 0.8.0`, this properly fixes the bug mentioned on the previous commit.
* address "Localtrack names/paths need to be escaped." comment
* address Fixators crash mentioned in #AT
* style
* fix preda's crash mentioned in PR
* add a thing here add a thing there add a thing everywhere
* style
* fixes here, fixes there, and backbone for curated playlist.
* bypass aiohttp and githubs and cloudflare and yo mammas cache
* I propose the new style is no style.
* allow curated playlist to be updated it `[p]playlist update` and show the diff
* fix `[p]summon` not resuming playback until next track.
* Hopefully handle predas rate limits.
* what else did i break now
* Update Lavalink.jar build
* lets try this
* reset the queue
* Bring Edge commits over fix a bunch of shiz again
* Bring Edge commits over fix a bunch of shiz again
* Handle 4014 OPs, Change `skip_votes` key to be an int rather than guild object
* aaaaaaaaaaaaaaa im dumb
* ...
* Simplify some shiz + use a set instead of a list for votes.
Co-authored-by: aikaterna <20862007+aikaterna@users.noreply.github.com>
* Better user feedback during slow backend migrations
This uses a tqdm progress bar to keep the user updated on the progress of the migrations.
I didn't realise this was necessary until I did a migration from Mongo to Postgres on CASE, and it took quite a long time to complete, I started to doubt that it was actually making progress.
Also includes a utility to help with tqdm in slow asynchronous for-loops.
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Make `async_tqdm` support async-for loops
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Reformat
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Remove unused method
* Remove quotes for the return type annotation
* Few style improvements
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Add per-command embed settings
* Update `[p]embedset showsettings`
* Use command.qualified_name in `[p]embedset` commands
* Fix the call to subcommand and simplify it
* And I oversimplified this
* Update end user messages to use 'guild' rather than 'server'
* meh
* This should be a named field
* Add check for Embed Links perm to confuse users a bit less
* Wrap this string in _()
* Let's use a different exception then...
* Let's clear the setting when we can in whole `[p]embedset`
* Add the order of checking to help of `[p]embedset`
* Add note about full evaluation order to subcommands
* [Cleanup] Handle missing message_id and reply
* Fix a new situation where we could end up with unwanted `None`
* I suck at this (style fix)
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* [Mutes] Add a note about conversion to schema_version 1
* Only start the conversion if all_channels
* Actually do what the previous commit said
* okay this time is the right time
* Update mutes.py
* Move conversion to its own method
* Update mutes.py
* ctx.invoke -> bot.invoke
ctx.message.guild -> ctx.guild
* remove the invoke stuff
* remove invoke stuff
* use id attrib instead of entire guild
* change type hinting too
* change second typehint
* [Mod] No longer loop through all guilds on check_tempban_expirations.
* Address Jack's review.
* I don't think this comment actually served any purpose
* Split this into more methods
* Small optimization for cases where the guild tempbans weren't updated
* Blackify
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Use sphinx-prompt extension
* Update PM2 guide
* Use an actual proper way to run Red with PM2
* Fix pm2 docs
Co-authored-by: Kowlin <Kowlin@users.noreply.github.com>
* add ✨ color ✨
* add color on line 315, fix line 340
* Black style
* fix color on line 341
* thanks jojo >_>
* dont need i18n here
* Black style again :D
* start
* Get user inside blocklist/allowlist lists
* Changes to cover unknown or deleted users
* Use square brackets for clarity
* Implement the above commit for all four versions
* Much improved UI, removed `[]` to fit new format
* updates to support roles in local version
* add /role to unknown str
* Improve variable names
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* [Mutes] Add guild ID to mutes data.
* Actually make the whole thing works.
* config version as integer, and init task no longer in setup
* oops
* Fix cog_disabled_in_guild check.
* Add Trusty's requested changes.
* [Docs] Use explicit name of the python packages for openSUSE Tumbleweed
* Add warning for Arch Linux instructions
Co-authored-by: Kowlin <Kowlin@users.noreply.github.com>
* Remove the unneeded pytest options from pyproject.toml
* Clean up setup.py from old readthedocs.org workaround
* Removes unused folder
* Simplify list of excluded files in black's configuration
* Fix returned exit codes in `make.ps1`
* Add Sublime's project files to `.gitignore`
* Update the link to Black in README and contributing guidelines
* [Docs] Images Cog Guide
* [Docs] Image Cog Guide
* Fixes for directory inside the index
* The cog is cakked IMAGE not IMAGES
* Potential fixes for failing checks
* Grammar fixes
* Some formatting updates
* Fix merge conflicts from 3.4.7
* Re-format for requested changes
* Add missing command to `make.bat`'s help
* Add `activateenv` and `deactivateenv` commands to `make.bat`
* Add help to `Makefile`
* Add `make.ps1` cmdlet
* Make workflow name use TitleCase
* Indicate in the PR description that it's a multi-part workflow
* Auto-put PRs from Prepare Release workflow in the proper milestone
* Rename "Publish the release" workflow to "Publish Release"
* Auto-put PR from Publish Release workflow in the proper milestone
* Clarify that the owner is a team.
* This should do.
* Style check... for a comma, in your dreams Tox...
* Annndddd for the insane people who don't use embeds
* [Mutes] Wrong error message when muting fails
* This applies to both mute and unmuting of members.
Co-authored-by: Kowlin <Kowlin@users.noreply.github.com>
* Alternative way of doing Crowdin...
* Limit the upload translations workflow to V3/develop
* Make the workflow close and reopen the PR automatically while I'm at it
* Add a workflow for preparing PRs for release
* Make the crowdin env vars local to the step requiring them
* Move dev bump to Publish Release workflow
* Add default settings for name tracking
* Add configuration command for name tracking
* Check the track names settings before tracking
* *grumble*
* Fix permissions levels
* Update settings.py
* Use clean_prefix in inline, and don't use f-strings in `_()`
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Merge selfrole and remove into one command
replacement pr
* docs
add to the docs
* Update admin.py
remove register name
* Update admin.rst
* Fixes
* Fix the duplicated command decorators
* Minimize the diff
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* add a time converter, as well as not allowing negative integers
* timedeltaconverter
* styling and unused imports
* update docstrings
* update param name to "duration" instead of seconds
* make timedelta default_unit seconds
* better descriptions & docstrings
* docs for updated paydaytime & slottime
* Fix style
* Few minor fixes
* Cast `total_seconds()` return type to `int`
* Fix one of my own issues
* Make the duration argument catch-rest for convenience
* One more fix for the docs
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
Current/up to date answers regarding some hero's health and abilities
Added more options for "What does Tracer say when using her ultimate?"
Competitive point changes for Season 6+ on August 29, 2017 patch
Mercy's major rework on September 19, 2017 patch
Hanzo's major rework on May 3, 2018 patch
Symmetra's major rework on June 6, 2018 patch
"Offense" and "Defense" categories have been merged into "Damage" on June 26, 2018 patch
McCree's roll cooldown decreased on October 9, 2018 patch
Torbjorn's health changed on March 19, 2019 patch
Sombra's translocator cooldown increased on October 15, 2019 patch
Orisa's fortify cooldown decreased on December 10, 2019 patch
Ana's sleep dart duration decreased on April 29, 2020 patch
Orisa's health changed on September 24, 2020 patch
McCree and Widowmaker's health changed on October 29, 2020 patch
Reinhardt's health changed on December 10, 2020 patch
Removed "What was the name of the Lunar New Year themed event in Overwatch?:" since this changes every year.
* [Utils] Additional chat formatting functions
* [Utils] Updated docstrings to unify with other docstrings
* [Utils] Spoiler feature for chat_formatting
* Fixes for black style
Co-authored-by: kreusada <67752638+kreus7@users.noreply.github.com>
* Use Rich's default console object instead of making one
* Bump Rich to version 9.8.2
* Disable indent guides in tracebacks
* Skip empty lines between stack levels in traceback rendering
* Use full width of the terminal when printing tracebacks
* Disabling syntax highlighting on the log messages
* Make logger name bold
* Make logger level bold
* Make URLs in console bold
* Change `bright_blue` and `blue` colors in syntax theme (NEEDS CHANGING)
* Show only one line per stack level in tracebacks
* Shuffle things in `redbot.logging` a bit
* Change logging handler while redirecting stdout in Dev cog
* Revert last two commits...
This reverts commit cf563bd06a6ae398da12713ceef3db9cc903d902.
This reverts commit 6dddf300726ddf89b8924441eed59b67b58faca0.
* Change Rich console to always print to sys.stdout (therefore ignoring stdout redirects)
* Pass cli_flags to init_logging()
* Add a flag to set the amount of extra lines in rich tracebacks
* First take on the syntax theme colors
* Use the Windows trick
* ARE YOU SERIOUS!?
* Remove dead code
* Use Monokai when Terminal application supports truecolor
* Syntax theme update
* Change logger name color
* This is not needed
* Adjust logging level colors
* Add a flag for showing local variables in Rich tracebacks
* change imports a bit
* Remove usage of blue color fully
* Stop highlighting in Red-DiscordBot splash
* Fix unreadable paths in tracebacks
* Make CRITICAL logging level more readable
* Make time in logs more readable
* Fix the first row being bolded in tables
* Update rich to 9.9.0
* Oh boy! more issue templates!
* Add some descriptions to command_bug.yml
* Update enhancements.yml to refer to "components" since one might want to request API enhancement
* Update feature_request.yml
* Update command_bug.yml
* typo
* I don't think this would cause any issue but I would rather not need another PR
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Revert "Cut the list in half (#4781)"
This reverts commit 9737c1b5eb.
* Story likes to repeat itself
Yet again, Kowlin makes a small mistake that ends up with us making shitton of commits
* Lets try this new fancy thing
* Rename command_bug.md to command_bug.yml
* Update command_bug.yml
* Cog name before command name, thank you
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Bump d.py, aiohttp, Red-Lavalink
* Remove deprecation warnings that are no longer relevant
* Max concurrency things in `Command.prepare()`
* Two random things that date back to times older than d.py 1.1...
* [Core] Fix commands using plural with the same user
Some plural checking have also been added to the local blocklist/allowlist and the wording has been revised.
* AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
* BLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACK
* the
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Docs: added brackets escape note for Linux/macOS installation
* Corrected punctuation for bracket escaping note
* Use quotes - those work on cmd, bash, zsh, and probably other shells
* Minimize the diff
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* better explain on how to use.
* i.... dont know why i removed that dot.
* don't think that was meant to
* Update kickban.py
* smh
* style????
* hm?
* last try to fix style......
i dont even know how to do this :/
* failing style is fun, trynna learn.
* .....
* not the best way but lets try?
* yep, didnt work dropping softban.
* Update kickban.py
* grammar fix
* Add non-generic message when loading a cog with command name that is already registered
* Use regex instead and add i18n support
* This requires d.py 1.4
* handle manual mutes/unmutes
Doing this in the Web-Editor is painful. Let's switch to VSC.
* embed version
* non embed
* config stuff
* testing done
* wow black
* Few things before I start local testing
* Fix new lines
* Make messages not depend on modlog
* Yay voicemutes
* black+import
* what is your ducking problem vscode
* adress review
* this is driving me mad
* Check the config in `_send_dm_notification` to avoid code repetition
* Fix incorrect type hints
* Remove no longer needed line changes
* Remove unused function
* Update the type hints from commit 946299 in the MixinMeta too
* Fixed wrong variable being passed to the method and ensure DMs aren't sent when we couldn't get the member object
* They call me dumb for a reason
* Stop overriding variable with duration + various formatting tweaks
* :(
* We need to differ between voice and text in two places, interesting...
* Show info about no reason provided in embed
* Apparently, the `reason` can also be an empty string :|
* Update redbot/cogs/mutes/mutes.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Make the dev env flexible
* Fix rst format in docstrings
* Reproduce current behaviour for _ in repl
* Prevent adding existing or reserved names
* Fix typo with environment
* Docstring changes
Apply suggestions from code review
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Get env before loop
* Hey I'm not the only one doing typos
* Keep new messages in env
* Clear exception of stack frames
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Include the `channel` variable in the reserved names
* And we're also missing `discord` :)
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Update help.py
* Create 3040.enhance.rst
* remove towncrier entry
* Make it i18n friendly.
* That was uneeded to change this actually.
* ...
* ..
* .
* Add a setting for aliases.
* DOTS
* Update redbot/core/core_commands.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Address requested changes maybe
* New format + changes requested.
* okay we'll get there someday
* honk
* aaaaaaaaaaaaaaa
* Black
* Fix missing humanize_timedelta import.
* style
* Two things from my very old pending review, see commit desc
```py
valid_alias_list = [
af
for a in aliases
if (af := f"{a}")
and len(af) < 500
and ((a_counter + len(af)) < 500)
and (a_counter := a_counter + len(af))
]
```
^ This can be simplified:
```suggestion
valid_alias_list = [
alias
for alias in aliases
if (a_counter := a_counter + len(alias)) < 500
]
```
Although I think it would be somewhat clearer to use a `for` loop rather than a list comprehension (+ we can just `break` when there's not gonna be another alias that could fit in the list since it's sorted):
```suggestion
valid_alias_list = []
for alias in aliases:
if (a_counter := a_counter + len(alias)) < 500:
valid_alias_list.append(alias)
else:
break
```
* style *again*
* use qualified name of the parent command
* meh
* another meh
* Revert the last commit...
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
Co-authored-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* [Streams] Remove the blank suppression of errors
* Okay, maybe do gracefully handle it a little bit...
* Update redbot/cogs/streams/streams.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* update image
* MAXIMISE THE QUALITY
* add storage driver as JSON (#3935)
* fk
* REEEE
how am i faling to use git so much
* rich!
* make image width 696 pixels so it doesn't scale
* Pop stash
* add rich to setup
* Added forceful enabling of rich logging
* revert some unintended pushed
* Fix possible unbound var
Fix possible 0 members w/out members intent
* One day I won't forget to do style passes
* So this is a thing apperently...
* Bump rich to 9.5.1
* Lock secondary deps
* Different stuff, see the full commit description for more info
- Change few things from print to log.info
- put the log handlers on the root logger instead of individual loggers
- capture warnings to a logger
* Modify log handler to show logger name
* Add a Triboolian to force disable rich
* Style checks
* shortened time, added logger name... again.
* aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
* Style & linking
* Be or not to be? Whatever man, it's 4:30 in the morning, goto sleep >.<
* Reintroduce outdated message.
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Update CodeQL to resolve warnings.
* Make CodeQL analyze our Python dependencies
* `fetch-depth` should be no longer needed
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* [Mod] Check for reason length & remove unused vars
This PR also remove unused variable.
* Blame me
* Apply Kowlin order.
Text will get truncate in audit logs in case we're going over 512 characters.
* This is already handled by ban_user()
* Use `get_audit_reason()` in `[p]tempban`
* Add a new kwarg to `get_audit_reason()` instead
* Include `[p]voiceban` and `[p]voiceunban`
* Include Mutes cog
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Make command usage in help for required arguments consistent
* Bob 3
* Bob 1
* Docstring updates
* Address Flame's review
* Update cog guides in docs
* Properly handle slotmin/slotmax rules
* Use a variable to reduce config calls. No reason to process differently half way through a command anyways.
* Update redbot/cogs/economy/economy.py
* Add positive int converter for slotmin/slotmax
* Option to allow bad mins and maxes.
* Update economy.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Resolve bug with [p]streamalert youtube
The command didn't handle channels that were not provided as IDs
* Provide a different message if the scheduled date has passed
* Ignore streams scheduled for more than an hour
* General geography category :D
* Fixes
* Fixed typo
* Added some more questions
* Made some changes, and accuracy fixes, corrections
* *state, not actual river
* Started docstrings
* Add to index
* First generated guide
* Indented examples, some more docstrings
* Aliases are now `in ticks and fully qualified`
* More economy docstrings
* Started docstrings
* Add to index
* First generated guide
* Indented examples, some more docstrings
* Aliases are now `in ticks and fully qualified`
* More economy docstrings
* Regenerate docs
* Much more docstrings and regenerate docs
* Better explaination of `bank set` and grammar changes
* Regenerate docs
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Catch scheduled livestreams
* Announce scheduled streams and starts
* Add setting, fix bugs
* Add new dependency
* Black reformat
* Fix the duplicated messages bug
* Do not send messages for schedules
* Format embed
* Getting started guide
* Remove DigitalOcean referral link
* Fix typos and mispells, thanks to @Flame442
* Remove cogs.red hyperlink until it is finished
* Add towncrier entry
* Add prolog.txt
This is not necessary for this PR but all of the other cog guides rely on this file.
The cog guides are individual branches based on this one, which is why I'm adding this file right now.
* Add changelog entry
* Add CogManagerUI guide
* Remove towncrier
* CogManagerUI update
* Apply suggestions from code review
Co-authored-by: Vexed <sebdazeley@gmail.com>
* Apply suggestions from code review
Co-authored-by: Flame442 <34169552+Flame442@users.noreply.github.com>
* Add section for downloader
Co-authored-by: Toby Harradine <Tobotimus@users.noreply.github.com>
Co-authored-by: Vexed <sebdazeley@gmail.com>
Co-authored-by: Flame442 <34169552+Flame442@users.noreply.github.com>
* Add to index, url matching links, and add link to customcommands.rst
* Some docstring rewriting
* Adding arguments and more details.
* Handle aliases, rest of arguments and examples.
* Black formatting
* Switch to alphabetical
* Apparently forgot to regenerate this.
* Update redbot/cogs/customcom/customcom.py
Co-authored-by: Flame442 <34169552+Flame442@users.noreply.github.com>
* Update docs/cog_guides/customcommands.rst
Co-authored-by: Flame442 <34169552+Flame442@users.noreply.github.com>
Co-authored-by: Flame442 <34169552+Flame442@users.noreply.github.com>
* [Streams] Remove the `__del__`
* Add a teardown function to call Streams.cog_unload()
* Apparently I forgot cog_unload is called automatically (Thanks @rapptz
lol)
Co-authored-by: palmtree5 <3577255+palmtree5@users.noreply.github.com>
* Autogenerated doc and index spot
* Update command descriptions
* Use qualified name in titles and new command descriptions
* Add arguments to descriptions and cleanup self examples.
* Examples are bulleted and indented.
* Handle aliases (none), examples are bulleted and indented
* Switch to alphabetical
* Fix X typo
* add 2 get_or_fetch methods
* style
* local tox didnt scream and blow up
* ewh extra space is ugly
* Jack meant this
* I think jack wanted this.
* Nope Jack desired this
* aaaaaaaaaaaaa Jack just say you are reviewing it come on
* add get_or_fetch_member
* Update redbot/core/bot.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Wubba Lubba Dub Dub
* woa!! this one was really HARD! (sweats)
* fiiiiire
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* New stuff from RLL 0.7.0
* discard here
* formatting
* do this properly
* make it more unique
* bump RLL
* nuke `[p]llset restport`, only `[p]llset wsport` matters
* Update setup.cfg
* properly deprecate Rest port and Ensure Nodes are properly closed upon running LLSET commands
* restore player on a attempt reconnect
* restore player as a task
* ensure we send the signal only if not playing.
* register events a little earlier
* hmmm
* ffs
* update application.yml
* fix permissions edge case
* Remove use of asyncio.gather
* black
* typo
* lol 1 character difference
* Let's try this instead
* another typo, it's too early to read
* Add max concurrency on makerole command and prevent multiple roles being added created
* Add Hockey Trivia
* Add more questions and address review
* cleanup authors for now
* Add missing authors
* address vexed's review
* new trivia
* Add New Jersey Devils Trivia
* Add Vancouver Canucks Trivia
* Address Flame's grammar review
do commit messages require proper grammar?
* revert the revert the revert git is hard...
* and remove old mutes
* make voicemutes less yelly
* fix error when no args present in mute commands
* update docstrings
* address review
* black
* oops
* fix voicemutes
* remove mutes.py file
* Remove _voice_perm_check from mod since it's now in mutes cog
* remove naive datetimes
prevent muting the bot
prevent muting yourself
fix error message when lots of channels are present
* change alias for channelunmute
Be more verbose for creating default mute role
* add `[p]activemutes` to show current mutes in the server and time remaining on the mutes
* improve resolution of unmute time
* black
* Show indefinite mutes in activemutes and only show the current servers mutes in activemutes
* replace message.created_at with timezone aware timezone
* remove "server" from activemutes to clean up look since channelmutes will show channel
* better cache management, add tracking for manual muted role removal in the cache and modlog cases
* Fix keyerror in mutes command when unsuccessful mutes
* add typing indicator and improve config settings
* flake8 issue
* add one time message when attempting to mute without a role set, consume rate limits across channels for overwrite mutes
* Don't clear the whole guilds settings when a mute is finished. Optimize server mutes to better handle migration to API method later. Fix typehints.
* Utilize usage to make converter make more sense
* remove decorator permission checks and fix doc strings
* handle role changes better
* More sanely handle channel mutes return and improve failed mutes dialogue. Re-enable task cleaner. Reduce wait time to improve resolution of mute time.
* Handle re-mute on leave properly
* fix unbound error in overwrites mute
* revert the revert the revert git is hard...
* and remove old mutes
* make voicemutes less yelly
* fix error when no args present in mute commands
* update docstrings
* address review
* black
* oops
* fix voicemutes
* Remove _voice_perm_check from mod since it's now in mutes cog
* remove naive datetimes
prevent muting the bot
prevent muting yourself
fix error message when lots of channels are present
* change alias for channelunmute
Be more verbose for creating default mute role
* add `[p]activemutes` to show current mutes in the server and time remaining on the mutes
* improve resolution of unmute time
* black
* Show indefinite mutes in activemutes and only show the current servers mutes in activemutes
* replace message.created_at with timezone aware timezone
* remove "server" from activemutes to clean up look since channelmutes will show channel
* better cache management, add tracking for manual muted role removal in the cache and modlog cases
* Fix keyerror in mutes command when unsuccessful mutes
* add typing indicator and improve config settings
* flake8 issue
* add one time message when attempting to mute without a role set, consume rate limits across channels for overwrite mutes
* Don't clear the whole guilds settings when a mute is finished. Optimize server mutes to better handle migration to API method later. Fix typehints.
* Utilize usage to make converter make more sense
* remove decorator permission checks and fix doc strings
* handle role changes better
* More sanely handle channel mutes return and improve failed mutes dialogue. Re-enable task cleaner. Reduce wait time to improve resolution of mute time.
* Handle re-mute on leave properly
* fix unbound error in overwrites mute
* remove mutes.pt
* remove reliance on mods is_allowed_by_hierarchy since we don't have a setting to control that anyways inside this.
* black
* fix hierarchy check
* wtf
* Cache mute roles for large bots
* fix lint
* fix this error
* Address review 1
* lint
* fix string i18n issue
* remove unused typing.Coroutine import and fix i18n again
* missed this docstring
* Put voiceban and voiceunban back in mod where it's more appropriate
* Address review 2 electric boogaloo
* Make voicemutes use same methods as channel mute
* black
* handle humanize_list doesn't accept generators
* update voicemutes docstrings
* make voiceperm check consistent with rest of error handling
* bleh
* fix modlog case spam when overrides are in place
* <a:pandaexplode:639975629793787922>
* bleck
* use total_seconds() instead of a dict, sorry everyone already using this lmao
* <:excited:474074780887285776> This should be everything
* black
* fix the things
* bleh
* more cleanup
* lmao hang on
* fix voice mutes thingy
* Title Case Permissions
* oh I see
* I'm running out of funny one-liners for commit messages
* oof
* ugh
* let's try this
* voicemutes manage_permissions
* Cleanup mutes if they expire when member is not present
* black
* linters go brr
Co-authored-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* handles #4491
* add typing indicators to audio playlists commands like discussed with aika.
* recheck perms upon change of token to avoid needing a reload.
* Ensure the player lock is always released... on rewrite to this as a callback to the task.
* ffs
* resolves#4495
* missed one
* aaaaaaaaa
* fix https://canary.discord.com/channels/133049272517001216/387398816317440000/766711707921678396
* some tweaks
* Clear errors to users around YouTube Quota
* Fix cleanup self not working in private.
This fix#4408.
* Apply Jack's logic.
* Obviously Black fault.
AGAIN!
* Apply Jack's trick.
* This is not a converter so let's move this to a different file
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* handle verified bots, and more specific errors
* stuff
* fuck, I forgot
* Improve errors by splitting into few different messages
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* ban revamp
* black & converters fix
* discord.object
* Update redbot/cogs/admin/admin.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* remove discord.user converter
* black
* .
* Update redbot/cogs/mod/kickban.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Update redbot/cogs/mod/kickban.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Update redbot/cogs/mod/kickban.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Update redbot/cogs/mod/kickban.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* incomplete
* massban support
* black
* Use 2-tuple to separate result and the message in `ban_user()`
This also fixes the issue with `True` being equal to `1` which caused a problem with previously returned types
* Whoops...
* trailing whitespace...
* I missed this one
* Update kickban.py
* Update kickban.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* First commit - Bring everything from dev cog minus NSFW support
* Add a toggle for auto deafen
* Add a one off Send to Owners
* aaaaaaa
* Update this to ensure `get_perms` is not called if the API is disabled
* Apply suggestions from code review
Co-authored-by: Vuks <51289041+Vuks69@users.noreply.github.com>
* silence any errors here (in case API is down so it doesnt affect audio)
* update the message to tell the mto join the Official Red server.
* remove useless sutff, and change dj check order to ensure bot doesnt join VC for non DJ's
* ffs
* Update redbot/cogs/audio/core/tasks/startup.py
Co-authored-by: Twentysix <Twentysix26@users.noreply.github.com>
* Aikas Review
* Add #3995 in here
* update
* *sigh*
* lock behind owner
* to help with debugging
* Revert "to help with debugging"
This reverts commit 8cbf17be
* resolve last review
Co-authored-by: Vuks <51289041+Vuks69@users.noreply.github.com>
Co-authored-by: Twentysix <Twentysix26@users.noreply.github.com>
* [Core] Pagify cog unload output properly
When you unload a large amount of cogs (close to message limit on characters), the character count is easily pushed over 2k characters on the command response with the cog names each being wrapped in 2x backticks. The current implementation breaks in the middle of cog names or wherever else it feels like it. 1600 might have been a safe value for splitting but at 1500 I don't see how multiple short cog names could make it break at least.
* Address review
* add an `[all]` extras_requires
* can go here
* add a [dev] which includes [all] + development extras (style, test, docs)
* special case all and dev in update message
* Optimize by changing the place of the check for "special" extras
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* add get_shared_api_keys
* add set listapi command
* fix typo
* refactor `[p]set listapi` into `[p]set api list`
* remove unnecessary check
* fix decorators
* corrected wording
* add remove_shared_api_services
* add `set api remove`
* further typo sniping
* bugsniping
* minor typo
* aaaaaaaaa
* Apply suggestions from code review
Co-authored-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* update api docstring to reflect new subcommands
* Apply suggestions from code review
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* update framework_apikeys.rst with new methods
* Update redbot/core/bot.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* rewrite get_shared_api_services into a special case of
get_shared_api_tokens
* rewrite api_list to include keys and tokens in response
* don't show secrets
* better api_remove response
* black
* remove nonexistent method
* remove unnecessary import
* fix wording
* Improve docstrings and type hints
- added overloads to help out developers a bit more
* this wasn't necessary, but development tools work better
with this information
- fixed type hint to use Union as now
its return type depends on whether `service_name` is passed
- updated docstrings to contain information about the added behavior
* Use `humanize_list()` rather than `str.join()`
This is done for consistency within Red
and it makes the list have the last element joined
with `and` (or its equivalent in chosen locale)
* Use `.format()` after translation is applied
If `.format()` is used before `_()`, the search for translation is done
with the string that already has the dynamic text added,
which results in no matches.
* Add plural support
* Improve error message
Updated message to be more specific
(used phrases: "None of the services" and "had any keys set")
and a bit more nice to the user (judging word "anyway" removed)
* Improve readability of `[p]set api list`
It's a lot clearer when the sublists are indented,
especially on mobile where code blocks aren't colored at all.
New look:
https://user-images.githubusercontent.com/6032823/94614944-3bbd7c80-02a7-11eb-89e4-64bdf06c650b.png
Co-authored-by: Draper <27962761+Drapersniper@users.noreply.github.com>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Account for duplicated mentions
* Spelling fix + Wording change
* Requested changes *hopefully*
* forgot to formattttttttttttttttttttttt
* Improve the consistency with existing commands in inconsistent `[p]modset` group
* What was the point of defining `guild` if you didn't end up using it, Jack!?
* I hate you, web editor ಠ益ಠ
* You could have just copy-pasted this Jack, seriously...
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* [Modlog] Fix typehints for create_case
* Simplify Logic after review
* discord.abc.User to catch both member and user objects and other potential discord.Object's being sent
* fix typehints and Case.edit()
* fix docstrings in create_case
* Add note about last_known_username
* fix the weird thing that scared me
* URL encode user input in the general cog
Adds URL encoding to `[p]lmgtfy` via `urllib2.parse.quote_plus()`
and to `[p]urban` via `aiohttp.ClientSession.get`'s `params` argument
* Black reformatting
* Update CODEOWNERS
* Prepend with backslash, add downloader fixtures
* Update CODEOWNERS
* Schemas are closely related to Downloader...
...so I should know about the changes to those.
* Would be nice to add my name (thanks Draper)
* JSON schemas for cogs and repos
* newline at the end
* capitalization
* Remove *.json from .gitignore
* Remove empty line
* resolve requested changes
* resolve requested changes, again
Co-authored-by: Fixator10 <fixator10@users.noreply.github.com>
* [ctx] Suppress all mentions in maybe_send_embed
Whether this method should mention shouldn't be tied to an unrelated setting.
* black
* Update changelog_3_4_0.rst
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Getting started guide
* Remove DigitalOcean referral link
* Fix typos and mispells, thanks to @Flame442
* Remove cogs.red hyperlink until it is finished
* Add towncrier entry
* Add prolog.txt
This is not necessary for this PR but all of the other cog guides rely on this file.
The cog guides are individual branches based on this one, which is why I'm adding this file right now.
* Add changelog entry
* Add alias cog guide
* QA changes
* More QA changes
considering -> assuming
red is a girl, not non-binary
* Fix some mistakes
* Fix references
* More and better examples, with arguments
* A first quick fix for review
* An attempt to fix the review by @Flame442
* Delete 1734.docs.3.rst
Co-authored-by: Toby Harradine <Tobotimus@users.noreply.github.com>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Only send a message telling the user the file will be send via DM if the original message didn't come from a DM
* Remove unused import for AsyncIter
* Changed channel instance comparison to discord.DMChannel
Co-authored-by: douglas-cpp <douglasc.dev@gmail.com>
* [streams]allowed_mentions on stream announcement
Allows role mentions for discord.py 1.4+
# Type
[x] Bugfix
[ ] Enhancement
[ ] New feature
Description of the changes
Referencing line 747. Gives permissions to mention role on stream announcement.
* Update streams.py
* Add `mention_everyone` defaults
Lines for reference:
- [751-753]:
```py
if can_mention_everyone:
await self.save_streams()
return # if bot can mention everyone already, let's stop here```
- [722-774]:
```py
if can_mention_everyone:
mentions.append(role.mention)
return # if bot can mention everyone already, let's stop here (part two)```
Hopefully, this is what you had in mind? Humbly admit I may not have a business in biting this piece but looking forward to feedback on the best methodology for the wanted outcome.
Thanks!
* *sweats*
* imagine variable naming
Should complete all passes.
* misplaced unindent on return
* Update redbot/cogs/streams/streams.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Update redbot/cogs/streams/streams.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Update redbot/cogs/streams/streams.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* You're a beast jack
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* this would cover all channels in guild (think)
* give this a reeeeee
* Update streams.py
* adds channel argument
https://github.com/Cog-Creators/Red-DiscordBot/pull/4182#pullrequestreview-468012281
* image style checking, self
* imagine
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Getting started guide
* Remove DigitalOcean referral link
* Fix typos and mispells, thanks to @Flame442
* Remove cogs.red hyperlink until it is finished
* Add towncrier entry
* Admin guide
* Add prolog.txt
* Use substitutions for arguments
* Some grammar fixes
* Add prolog.txt
This is not necessary for this PR but all of the other cog guides rely on this file.
The cog guides are individual branches based on this one, which is why I'm adding this file right now.
* Add changelog entry
* Add serverlock
* Apply suggestions from code review
Co-Authored-By: Vexed <51716387+Vexed01@users.noreply.github.com>
* Suggestions from vexed
* Update to new admin commands
* Delete 1734.docs.2.rst
* Apply the changes requested by reviewers
Plus add a small tuto on how to make a bot private
* Fix arguments inconsistency
* Remove ctx from argments
* Update docs/cog_guides/admin.rst
Co-authored-by: Flame442 <34169552+Flame442@users.noreply.github.com>
* Quotes aaaaaa
Co-authored-by: Toby Harradine <Tobotimus@users.noreply.github.com>
Co-authored-by: Vexed <51716387+Vexed01@users.noreply.github.com>
Co-authored-by: Flame442 <34169552+Flame442@users.noreply.github.com>
* Use aware objects instead of naive ones
* Use aware objects when storing and reading UTC timestamps
* Remove unneeded parentheses
* Fixed naive and aware objects unable to be compared here
* Address feedback
* Fix the newly added `modlog.create_case()` calls
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Mention spam addition
Adjust code to allow for warning and kicking in mention spam automoderation.
Added new subcommand group, mentionspam. Which will display settings of warn, kick, ban, mentionspam when called.
Adjust config to account for this.
* Condense config + removal of comments
Condense config into one variable to make one call.
Removed unneeded comments I left.
* Add warning casetype
Copied over from warnings cog
* Update strings + change function names
* Changed prints and logs. Account for showsettings, removed blocking.
If this style breaks, blame draper...
* Black format...still blaming draper.
* Adding period at end of description
Co-authored-by: Flame442 <34169552+Flame442@users.noreply.github.com>
* config migration
* Fix TypeError, add default information.
* Max_mention wording change
Thanks to @zephyrkul for suggesting the word changes.
* Require argument for max_mention
* Fix warn modlog case creation
* Fix casetype conflict
maaaaaaaaaagicccccccccc timeeeeeeeeeeeeeeeeeeeeeeeee
Co-authored-by: Draper <27962761+Drapersniper@users.noreply.github.com>
Co-authored-by: Flame442 <34169552+Flame442@users.noreply.github.com>
In line 60 I removed the word also as it implies that the bot can is already being hosted by someone but you can host it too. I also removed the word installation from line 65 and changed it to installing as that makes more sense or you would have to change the word updating.
* Getting started guide
* Remove DigitalOcean referral link
* Fix typos and mispells, thanks to @Flame442
* Remove cogs.red hyperlink until it is finished
* Add towncrier entry
* Add prolog.txt
This is not necessary for this PR but all of the other cog guides rely on this file.
The cog guides are individual branches based on this one, which is why I'm adding this file right now.
* Add Bank cog guide
* Add changelog entry
* Bank guide
* Nope get out from here potato
* Remove reference to the payday command
* reword + drop a character
Co-authored-by: Toby Harradine <Tobotimus@users.noreply.github.com>
Co-authored-by: palmtree5 <3577255+palmtree5@users.noreply.github.com>
* [Streams] Change hitbox to smashcast.
as hitbox is now smashcast.
* Add files via upload
* reee
* :thonk:
* oof
* Add missing new lines at end of file
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Removes `MAX_BALANCE` from bank, user `bank.get_max_balance()` now
`[p]bankset maxbal` can be used to set the maximum bank balance
Signed-off-by: Guy <guyreis96@gmail.com>
* Migrates ``humanize_list`` over to babel, and uses the existing `get_babel_locale` function to get a valid locale based on bot locale.
Signed-off-by: guyre <27962761+drapersniper@users.noreply.github.com>
* Migrates ``humanize_list`` over to babel, and uses the existing `get_babel_locale` function to get a valid locale based on bot locale.
Signed-off-by: guyre <27962761+drapersniper@users.noreply.github.com>
* Fixes docs
Signed-off-by: guyre <27962761+drapersniper@users.noreply.github.com>
* Add reference to Babel's `format_list`
* Add Babel to intersphinx
* remove towncrier entry
* Migrates ``humanize_list`` over to babel, and uses the existing `get_babel_locale` function to get a valid locale based on bot locale.
Signed-off-by: guyre <27962761+drapersniper@users.noreply.github.com>
* Fixes docs
Signed-off-by: guyre <27962761+drapersniper@users.noreply.github.com>
* Add reference to Babel's `format_list`
* Fix order, make the parameters keyword-only
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
[Core] Data Deletion And Disclosure APIs
- Adds a Data Deletion API
- Deletion comes in a few forms based on who is requesting
- Deletion must be handled by 3rd party
- Adds a Data Collection Disclosure Command
- Provides a dynamically generated statement from 3rd party
extensions
- Modifies the always available commands to be cog compatible
- Also prevents them from being unloaded accidentally
* [RPC] Fix for non-rpc users
- RPC probably needs rewriting.
- Also, I noticed some extremely sharp edges
and a potential crash point (unrelated to the fixed issue)
on windows that the side effects from have been mitigated here
partially.
* sysexit on initialization failure
* Prevent LicenseInfo command from being a source of user command spam
* add dep-warn explaining whats needed for this
* name issues
* Tests...
* An empty commit unbroke some of it, but still style issues
* Bump deps
* use html5 writer
* appdirs<1.4.4 compatibility fix
* more bumping
* Revert "appdirs<1.4.4 compatibility fix" (Jack did a dumb)
This reverts commit cc5299d987.
* And another ~~one~~ bump!
I'm gonna blame Neuro for being nice and contributing to aiohttp-json-rpc.
* just one more and pls merge this Kowlin
* Kowlin, pls merge
* create cog disbale base
* Because defaults...
* lol
* announcer needs to respect this
* defaultdict mishap
* Allow None as guild
- Mostly for interop with with ctx.guild
* a whitespace issue
* Apparently, I broke this too
* Apply suggestions from code review
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* This can probably be more optimized later, but since this is a cached value, it's not a large issue
* Report tunnel closing
* mod too
* whitespace issue
* Fix Artifact of prior method naming
* these 3 places should have the check if i understood it correctly
* Announce the closed tunnels
* tunnel oversight
* Make the player stop at next track
* added where draper said to put it
* Apply suggestions from code review
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
Co-authored-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* [Core] Add `Red.message_eligible_as_command`
- This is a small utility function which makes it easy for cog
creators to treat non-command messages as commands correctly.
- This also modifies `Red.ignored_channel_or_guild`'s signature to
explicitly add support for passing a message object (the only needed
attributes are entirely shared with context)
* Update redbot/core/bot.py
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* address review
* Rename
* remove webhhok check, the issue wasn't possible under normal operation
* Ah yes, ctx.bot in a method of the bot...
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
@@ -42,7 +42,7 @@ Unsure of how to get started contributing to Red? Please take a look at the Issu
* beginner - issues that can normally be fixed in just a few lines of code and maybe a test or two.
* help-wanted - issues that are currently unassigned to anyone and may be a bit more involved/complex than issues tagged with beginner.
**Working on your first Pull Request?** You can learn how from this *free* series [How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github)
**Working on your first Pull Request?** You can learn how from this *free* series [How to Contribute to an Open Source Project on GitHub](https://app.egghead.io/playlists/how-to-contribute-to-an-open-source-project-on-github)
At this point you're ready to start making changes. Feel free to ask for help; everyone was a beginner at some point!
@@ -83,7 +83,7 @@ We're using [tox](https://github.com/tox-dev/tox) to run all of our tests. It's
Currently, tox does the following, creating its own virtual environments for each stage:
- Runs all of our unit tests with [pytest](https://github.com/pytest-dev/pytest) on python 3.8 (test environment `py38`)
- Ensures documentation builds without warnings, and all hyperlinks have a valid destination (test environment `docs`)
- Ensures that the code meets our style guide with [black](https://github.com/ambv/black) (test environment `style`)
- Ensures that the code meets our style guide with [black](https://github.com/psf/black) (test environment `style`)
To run all of these tests, just run the command `tox` in the project directory.
@@ -92,9 +92,9 @@ To run a subset of these tests, use the command `tox -e <env>`, where `<env>` is
Your PR will not be merged until all of these tests pass.
### 4.3 Style
Our style checker of choice, [black](https://github.com/ambv/black), actually happens to be an auto-formatter. The checking functionality simply detects whether or not it would try to reformat something in your code, should you run the formatter on it. For this reason, we recommend using this tool as a formatter, regardless of any disagreements you might have with the style it enforces.
Our style checker of choice, [black](https://github.com/psf/black), actually happens to be an auto-formatter. The checking functionality simply detects whether or not it would try to reformat something in your code, should you run the formatter on it. For this reason, we recommend using this tool as a formatter, regardless of any disagreements you might have with the style it enforces.
Use the command `black --help` to see how to use this tool. The full style guide is explained in detail on [black's GitHub repository](https://github.com/ambv/black). **There is one exception to this**, however, which is that we set the line length to 99, instead of black's default 88. This is already set in `pyproject.toml` configuration file in the repo so you can simply format code with Black like so: `black <src>`.
Use the command `black --help` to see how to use this tool. The full style guide is explained in detail on [black's GitHub repository](https://github.com/psf/black). **There is one exception to this**, however, which is that we set the line length to 99, instead of black's default 88. This is already set in `pyproject.toml` configuration file in the repo so you can simply format code with Black like so: `black <src>`.
### 4.4 Make
You may have noticed we have a `Makefile` and a `make.bat` in the top-level directory. For now, you can do a few things with them:
- [Most major linux distributions](https://docs.discord.red/en/stable/install_guides/index.html)
If after reading the guide you are still experiencing issues, feel free to join the
[Official Discord Server](https://discord.gg/red) and ask in the **#support** channel for help.
@@ -104,15 +107,15 @@ plugins directly from Discord! A few examples are:
- AniList
- And much, much more!
Feel free to take a [peek](https://cogboard.red/t/approved-repositories/210) at a list of
Feel free to take a [peek](https://index.discord.red) at a list of
available 3rd party cogs!
# Join the community!
**Red** is in continuous development, and it’s supported by an active community which produces new
content (cogs/plugins) for everyone to enjoy. New features are constantly added. If you can’t
[find](https://cogboard.red/t/approved-repositories/210) the cog you’re looking for,
consult our [guide](https://red-discordbot.readthedocs.io/en/stable/guide_cog_creation.html) on
[find](https://index.discord.red) the cog you’re looking for,
consult our [guide](https://docs.discord.red/en/stable/guide_cog_creation.html) on
building your own cogs!
Join us on our [Official Discord Server](https://discord.gg/red)!
@@ -128,4 +131,4 @@ Artwork created by [Sinlaire](https://sinlaire.deviantart.com/) on Deviant Art f
Bot Project.
This project vendors [discord.ext.menus](https://github.com/Rapptz/discord-ext-menus) package made by Danny Y. (Rapptz) which is distributed under MIT License.
Copy of this license can be found in [discord-ext-menus.LICENSE](redbot/vendored/discord-ext-menus.LICENSE) file in [redbot/vendored](redbot/vendored) folder of this repository.
A copy of this license can be found in the [discord-ext-menus.LICENSE](redbot/vendored/discord-ext-menus.LICENSE) file in the [redbot/vendored](redbot/vendored) folder of this repository.
..note:: This guide is for setting up PM2 on a Linux environment. This guide assumes that you already have a working Red instance.
--------------
Installing PM2
--------------
Start by installing Node.JS and NPM via your favorite package distributor. From there run the following command:
:code:`npm install pm2 -g`
After PM2 is installed, run the following command to enable your Red instance to be managed by PM2. Replace the brackets with the required information.
You can add additional Red based arguments after the instance, such as :code:`--dev`.
..code-block::none
pm2 start redbot --name "<Insert a name here>" --interpreter "<Location to your Python Interpreter>" --interpreter-args "-O" -- <Red Instance> --no-prompt
..code-block::none
Arguments to replace.
<Insert a name here>
A name to identify the bot within pm2, this is not your Red instance.
<Location to your Python Interpreter>
The location of your Python interpreter, to find out where that is use the following command inside activated venv:
which python
<Red Instance>
The name of your Red instance.
------------------------------
Ensuring that PM2 stays online
------------------------------
To make sure that PM2 stays online and persistence between machine restarts, run the following commands:
Paste the following in the file, and replace all instances of :code:`username` with the Linux username you retrieved above, and :code:`path` with the python path you retrieved above.
..code-block:: none
:emphasize-lines:8-10
[Unit]
Description=%I redbot
@@ -47,9 +48,10 @@ Paste the following in the file, and replace all instances of :code:`username` w
User=username
Group=username
Type=idle
Restart=always
Restart=on-abnormal
RestartSec=15
RestartPreventExitStatus=0
RestartForceExitStatus=1
RestartForceExitStatus=26
TimeoutStopSec=10
[Install]
@@ -65,20 +67,34 @@ Starting and enabling the service
To start the bot, run the service and add the instance name after the **@**:
:code:`sudo systemctl start red@instancename`
..prompt:: bash
sudo systemctl start red@instancename
To set the bot to start on boot, you must enable the service, again adding the instance name after the **@**:
:code:`sudo systemctl enable red@instancename`
..prompt:: bash
sudo systemctl enable red@instancename
If you need to shutdown the bot, you can use the ``[p]shutdown`` command or
type the following command in the terminal, still by adding the instance name after the **@**:
:code:`sudo systemctl stop red@instancename`
..prompt:: bash
sudo systemctl stop red@instancename
..warning:: If the service doesn't stop in the next 10 seconds, the process is killed.
Check your logs to know the cause of the error that prevents the shutdown.
To view Red’s log, you can acccess through journalctl:
To set the bot to not start on boot anymore, you must disable the service by running the following command, adding the instance name after the **@**:
..note:: This guide assumes that you already have a working Red instance.
-----------------------
Creating the batch file
-----------------------
Create a new text document anywhere you want to. This file will be used to launch the bot, so you may want to put it somewhere convenient, like Documents or Desktop.
Open that document in Notepad, and paste the following text in it:
..code-block::batch
@ECHO OFF
:RED
CALL"%userprofile%\redenv\Scripts\activate.bat"
python -O -m redbot <your instance name>
IF%ERRORLEVEL%== 1 GOTORESTART_RED
IF%ERRORLEVEL%== 26 GOTORESTART_RED
EXIT /B %ERRORLEVEL%
:RESTART_RED
ECHO Restarting Red...
GOTORED
Replace ``<your instance name>`` with the instance name of your bot.
If you created your VENV at a location other than the recommended one, replace ``%userprofile%\redenv\Scripts\activate.bat`` with the path to your VENV.
Click "File", "Save as". Change the dropdown "Save as type" to "All Files (*.*)". Set the filename to ``start_redbot.bat``, and click save.
There should now be a new file in the location you created the text document in. You can delete that text document as it is no longer needed.
You can now use the ``start_redbot.bat`` batch file to launch Red by double clicking it.
This script will automatically restart red when the ``[p]restart`` command is used or when the bot shuts down abnormally.
-------------------------
Launch the bot on startup
-------------------------
Create a shortcut of your ``start_redbot.bat`` file.
Open the "Run" dialogue box using Windows Key + R.
Enter ``shell:startup`` if you want the bot to launch only when the current user logs in, or ``shell:common startup`` if you want the bot to launch when any user logs in.
Drag the shortcut into the folder that is opened. The bot will now launch on startup.
6. If you want others to be able to invite your bot tick the **Public Bot**. Keeping it unticked will prevent others from inviting your bot to their servers and only you will be able to add the bot to servers (provided that you have needed permissions in the server you want to add the bot to).
- Make sure **Require OAuth2 Code Grant** is unchecked.
Red bots with over 100 servers require `bot verification <https://support.discord.com/hc/en-us/articles/360040720412>`_ which is not covered in this guide.
Remember that :ref:`we do not support public bots <intents>`. We encourage you to read that page before scaling up your bot.
*Parts of this guide have been adapted from*`discord.py intro <https://discordpy.readthedocs.io/en/stable/discord.html#discord-intro>`_*and*`discord.py privileged intents <https://discordpy.readthedocs.io/en/stable/intents.html#privileged-intents>`_.
Due to the required changes of the Mongo driver for Config, all existing Mongo users will need to
complete the below instructions to continue to use Mongo after updating to 3.1.
This includes **all** users, regardless of any prior migration attempt to a development version of
3.1.
#. Upgrade to 3.1
#. Convert all existing Mongo instances to JSON using the new converters
#. Start each bot instance while using JSON and load any and all cogs you have in order to successfully preserve data.
#. Turn each instance off and convert back to Mongo.
**NOTE:** No data is wiped from your Mongo database when converting to JSON.
You may want to use a *new* database name when converting back to Mongo in order to not have duplicate data.
-------------
Setup Utility
-------------
New commands were introduced to simplify the conversion/editing/removal process both on our end and the users end.
Please use ``redbot-setup --help`` to learn how to use the new features.
..HINT::
Converting to JSON: ``redbot-setup convert <instance_name> json``
Converting to Mongo: ``redbot-setup convert <instance_name> mongo``
################
v3.1.0 Changelog
################
-----
Audio
-----
* Add Spotify support (`#2328`_)
* Play local folders via text command (`#2457`_)
* Change pause to a toggle (`#2461`_)
* Remove aliases (`#2462`_)
* Add track length restriction (`#2465`_)
* Seek command can now seek to position (`#2470`_)
* Add option for dc at queue end (`#2472`_)
* Emptydisconnect and status refactor (`#2473`_)
* Queue clean and queue clear addition (`#2476`_)
* Fix for audioset status (`#2481`_)
* Playlist download addition (`#2482`_)
* Add songs when search-queuing (`#2513`_)
* Match v2 behavior for channel change (`#2521`_)
* Bot will no longer complain about permissions when trying to connect to user-limited channel, if it has "Move Members" permission (`#2525`_)
* Fix issue on audiostats command when more than 20 servers to display (`#2533`_)
* Fix for prev command display (`#2556`_)
* Fix for localtrack playing (`#2557`_)
* Fix for playlist queue when not playing (`#2586`_)
* Track search and append fixes (`#2591`_)
* DJ role should ask for a role (`#2606`_)
----
Core
----
* Warn on usage of ``yaml.load`` (`#2326`_)
* New Event dispatch: ``on_message_without_command`` (`#2338`_)
* Improve output format of cooldown messages (`#2412`_)
* Delete cooldown messages when expired (`#2469`_)
* Fix local blacklist/whitelist management (`#2531`_)
*``[p]set locale`` now only accepts actual locales (`#2553`_)
*``[p]listlocales`` now displays ``en-US`` (`#2553`_)
*``redbot --version`` will now give you current version of Red (`#2567`_)
* Redesign help and related formatter (`#2628`_)
* Default locale changed from ``en`` to ``en-US`` (`#2642`_)
* New command ``[p]datapath`` that prints the bot's datapath (`#2652`_)
------
Config
------
* Updated Mongo driver to support large guilds (`#2536`_)
* Introduced ``init_custom`` method on Config objects (`#2545`_)
* We now record custom group primary key lengths in the core config object (`#2550`_)
* Migrated internal UUIDs to maintain cross platform consistency (`#2604`_)
-------------
DataConverter
-------------
* It's dead jim (Removal) (`#2554`_)
----------
discord.py
----------
* No longer vendoring discord.py (`#2587`_)
* Upgraded discord.py dependency to version 1.0.1 (`#2587`_)
----------
Downloader
----------
*``[p]cog install`` will now tell user that cog has to be loaded (`#2523`_)
* The message when libraries fail to install is now formatted (`#2576`_)
* Fixed bug, that caused Downloader to include submodules on cog list (`#2590`_)
*``[p]cog uninstall`` allows to uninstall multiple cogs now (`#2592`_)
*``[p]cog uninstall`` will now remove cog from installed cogs even if it can't find the cog in install path anymore (`#2595`_)
*``[p]cog install`` will not allow to install cogs which aren't suitable for installed version of Red anymore (`#2605`_)
* Cog Developers now have to use ``min_bot_version`` in form of version string instead of ``bot_version`` in info.json and they can also use ``max_bot_version`` to specify maximum version of Red, more in :ref:`info-json-format`. (`#2605`_)
------
Filter
------
* Filter performs significantly better on large servers. (`#2509`_)
--------
Launcher
--------
* Fixed extras in the launcher (`#2588`_)
---
Mod
---
* Admins can now decide how many times message has to be repeated before ``deleterepeats`` removes it (`#2437`_)
* Fix: make ``[p]ban [days]`` optional as per the doc (`#2602`_)
* Added the command ``voicekick`` to kick members from a voice channel with optional mod case. (`#2639`_)
-----------
Permissions
-----------
* Removed: ``p`` alias for ``permissions`` command (`#2467`_)
-------------
Setup Scripts
-------------
*``redbot-setup`` now uses the click CLI library (`#2579`_)
*``redbot-setup convert`` now used to convert between libraries (`#2579`_)
* Backup support for Mongo is currently broken (`#2579`_)
-------
Streams
-------
* Add support for custom stream alert messages per guild (`#2600`_)
* Add ability to exclude rerun Twitch streams, and note rerun streams in embed status (`#2620`_)
-----
Tests
-----
* Test for ``trivia`` cog uses explicitly utf-8 encoding for checking yaml files (`#2565`_)
------
Trivia
------
* Fix of dead image link for Sao Tome and Principe in ``worldflags`` trivia (`#2540`_)
*``Tunnel`` - Spelling correction of method name - changed ``files_from_attatch`` to ``files_from_attach`` (old name is left for backwards compatibility) (`#2496`_)
*``Tunnel`` - fixed behavior of ``react_close()``, now when tunnel closes message will be sent to other end (`#2507`_)
*``chat_formatting.humanize_list`` - Improved error handling of empty lists (`#2597`_)
- Reserved some command names for internal Red use. These are available programatically as ``redbot.core.commands.RESERVED_COMMAND_NAMES``. (`#2973 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2973>`_)
- Removed ``bot._counter``, Made a few more attrs private (``cog_mgr``, ``main_dir``). (`#2976 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2976>`_)
- Extension's ``setup()`` function should no longer assume that we are, or even will be connected to Discord.
This also means that cog creators should no longer use ``bot.wait_until_ready()`` inside it. (`#3073 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3073>`_)
- Removed the mongo driver. (`#3099 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3099>`_)
Bug Fixes
~~~~~~~~~
- Help now properly hides disabled commands. (`#2863 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2863>`_)
- Fixed ``bot.remove_command`` throwing an error when trying to remove a non-existent command. (`#2888 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2888>`_)
-``Command.can_see`` now works as intended for disabled commands. (`#2892 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2892>`_)
- Modlog entries now show up properly without the mod cog loaded. (`#2897 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2897>`_)
- Fixed an error in ``[p]reason`` when setting the reason for a case without a moderator. (`#2908 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2908>`_)
- Bank functions now check the recipient balance before transferring and stop the transfer if the recipient's balance will go above the maximum allowed balance. (`#2923 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2923>`_)
- Removed potential for additional bad API calls per ban/unban. (`#2945 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2945>`_)
- The ``[p]invite`` command no longer errors when a user has the bot blocked or DMs disabled in the server. (`#2948 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2948>`_)
- Stopped using the ``:`` character in backup's filename - Windows doesn't accept it. (`#2954 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2954>`_)
-``redbot-setup delete`` no longer errors with "unexpected keyword argument". (`#2955 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2955>`_)
-``redbot-setup delete`` no longer prompts about backup when the user passes the option ``--no-prompt``. (`#2956 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2956>`_)
- Cleaned up the ``[p]inviteset public`` and ``[p]inviteset perms`` help strings. (`#2963 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2963>`_)
-```[p]embedset user`` now only affects DM's. (`#2966 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2966>`_)
- Fixed an unfriendly error when the provided instance name doesn't exist. (`#2968 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2968>`_)
- Fixed the help text and response of ``[p]set usebotcolor`` to accurately reflect what the command is doing. (`#2974 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2974>`_)
- Red no longer types infinitely when a command with a cooldown is called within the last second of a cooldown. (`#2985 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2985>`_)
- Removed f-string usage in the launcher to prevent our error handling from causing an error. (`#3002 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3002>`_)
- Fixed ``MessagePredicate.greater`` and ``MessagePredicate.less`` allowing any valid int instead of only valid ints/floats that are greater/less than the given value. (`#3004 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3004>`_)
- Fixed an error in ``[p]uptime`` when the uptime is under a second. (`#3009 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3009>`_)
- Added quotation marks to the response of ``[p]helpset tagline`` so that two consecutive full stops do not appear. (`#3010 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3010>`_)
- Fixed an issue with clearing rules in permissions. (`#3014 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3014>`_)
- Lavalink will now be restarted after an unexpected shutdown. (`#3033 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3033>`_)
- Added a 3rd-party lib folder to ``sys.path`` before loading cogs. This prevents issues with 3rd-party cogs failing to load when Downloader is not loaded to install requirements. (`#3036 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3036>`_)
- Escaped track descriptions so that they do not break markdown. (`#3047 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3047>`_)
- Red will now properly send a message when the invoked command is guild-only. (`#3057 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3057>`_)
- Arguments ``--co-owner`` and ``--load-cogs`` now properly require at least one argument to be passed. (`#3060 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3060>`_)
- Now always appends the 3rd-party lib folder to the end of ``sys.path`` to avoid shadowing Red's dependencies. (`#3062 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3062>`_)
- Fixed ``is_automod_immune``'s handling of the guild check and added support for checking webhooks. (`#3100 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3100>`_)
- Fixed the generation of the ``repos.json`` file in the backup process. (`#3114 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3114>`_)
- Fixed an issue where calling audio commands when not in a voice channel could result in a crash. (`#3120 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3120>`_)
- Added handling for invalid folder names in the data path gracefully in ``redbot-setup`` and ``redbot --edit``. (`#3171 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3171>`_)
-``--owner`` and ``-p`` cli flags now work when added from launcher. (`#3174 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3174>`_)
- Red will now prevent users from locking themselves out with localblacklist. (`#3207 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3207>`_)
- Fixed help ending up a little too large for discord embed limits. (`#3208 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3208>`_)
- Fixed formatting issues in commands that list whitelisted/blacklisted users/roles when the list is empty. (`#3219 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3219>`_)
- Red will now prevent users from locking the guild owner out with localblacklist (unless the command caller is bot owner). (`#3221 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3221>`_)
- Guild owners are no longer affected by the local whitelist and blacklist. (`#3221 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3221>`_)
- Fixed an attribute error that can be raised in ``humanize_timedelta`` if ``seconds = 0``. (`#3231 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3231>`_)
- Fixed ``ctx.clean_prefix`` issues resulting from undocumented changes from discord. (`#3249 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3249>`_)
-``redbot.core.bot.Bot.owner_id`` is now set in the post connection startup. (`#3273 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3273>`_)
-``redbot.core.bot.Bot.send_to_owners()`` and ``redbot.core.bot.Bot.get_owner_notification_destinations()`` now wait until Red is done with post connection startup to ensure owner ID is available. (`#3273 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3273>`_)
Enhancements
~~~~~~~~~~~~
- Added the option to modify the RPC port with the ``--rpc-port`` flag. (`#2429 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2429>`_)
- Slots now has a 62.5% expected payout and will not inflate economy when spammed. (`#2875 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2875>`_)
- Allowed passing ``cls`` in the ``redbot.core.commands.group()`` decorator. (`#2881 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2881>`_)
- Red's Help Formatter is now considered to have a stable API. (`#2892 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2892>`_)
- Modlog no longer generates cases without being told to for actions the bot did. (`#2897 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2897>`_)
- Some generic modlog casetypes are now pre-registered for cog creator use. (`#2897 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2897>`_)
- ModLog is now much faster at creating cases, especially in large servers. (`#2908 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2908>`_)
- JSON config files are now stored without indentation, this is to reduce the file size and increase the performance of write operations. (`#2921 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2921>`_)
-``--[no-]backup``, ``--[no-]drop-db`` and ``--[no-]remove-datapath`` in the ``redbot-setup delete`` command are now on/off flags. (`#2958 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2958>`_)
- The confirmation prompts in ``redbot-setup`` now have default values for user convenience. (`#2958 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2958>`_)
-``redbot-setup delete`` now has the option to leave Red's data untouched on database backends. (`#2962 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2962>`_)
- Red now takes less time to fetch cases, unban members, and list warnings. (`#2964 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2964>`_)
- Red now handles more things prior to connecting to discord to reduce issues during the initial load. (`#3045 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3045>`_)
-``bot.send_filtered`` now returns the message that is sent. (`#3052 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3052>`_)
- Red will now send a message when the invoked command is DM-only. (`#3057 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3057>`_)
- All ``y/n`` confirmations in cli commands are now unified. (`#3060 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3060>`_)
- Changed ``[p]info`` to say "This bot is an..." instead of "This is an..." for clarity. (`#3121 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3121>`_)
-``redbot-setup`` will now use the instance name in default data paths to avoid creating a second instance with the same data path. (`#3171 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3171>`_)
- Instance names can now only include characters A-z, numbers, underscores, and hyphens. Old instances are unaffected by this change. (`#3171 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3171>`_)
- Clarified that ``[p]backup`` saves the **bot's** data in the help text. (`#3172 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3172>`_)
- Added ``redbot --debuginfo`` flag which shows useful information for debugging. (`#3183 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3183>`_)
- Added the Python executable field to ``[p]debuginfo``. (`#3184 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3184>`_)
- When Red prompts for a token, it will now print a link to the guide explaining how to obtain a token. (`#3204 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3204>`_)
-``redbot-setup`` will no longer log to disk. (`#3269 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3269>`_)
-``redbot.core.bot.Bot.send_to_owners()`` and ``redbot.core.bot.Bot.get_owner_notification_destinations()`` now log when they are not able to find the owner notification destination. (`#3273 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3273>`_)
- The lib folder is now cleared on minor Python version changes. ``[p]cog reinstallreqs`` in Downloader can be used to regenerate the lib folder for a new Python version. (`#3274 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3274>`_)
- If Red detects operating system or architecture change, it will now warn the owner about possible problems with the lib folder. (`#3274 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3274>`_)
-``[p]playlist download`` will now compress playlists larger than the server attachment limit and attempt to send that. (`#3279 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3279>`_)
New Features
~~~~~~~~~~~~
- Added functions to acquire locks on Config groups and values. These locks are acquired by default when calling a value as a context manager. See ``Value.get_lock`` for details. (`#2654 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2654>`_)
- Added a config driver for PostgreSQL. (`#2723 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2723>`_)
- Added methods to Config for accessing things by id without mocked objects
-``Config.guild_from_id``
-``Config.user_from_id``
-``Config.role_from_id``
-``Config.channel_from_id``
-``Config.member_from_ids``
- This one requires multiple ids, one for the guild, one for the user
- Consequence of discord's object model (`#2804 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2804>`_)
- New method ``humanize_number`` in ``redbot.core.utils.chat_formatting`` to convert numbers into text that respects the current locale. (`#2836 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2836>`_)
- Added new commands to Economy
-``[p]bank prune user`` - This will delete a user's bank account.
-``[p]bank prune local`` - This will prune the bank of accounts for users who are no longer in the server.
-``[p]bank prune global`` - This will prune the global bank of accounts for users who do not share any servers with the bot. (`#2845 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2845>`_)
- Red now uses towncrier for changelog generation. (`#2872 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2872>`_)
- Added ``redbot.core.modlog.get_latest_case`` to fetch the case object for the most recent ModLog case. (`#2908 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2908>`_)
- Added ``[p]bankset maxbal`` to set the maximum bank balance. (`#2926 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2926>`_)
- Added a few methods and classes replacing direct config access (which is no longer supported)
- Added the cli flag ``redbot --edit`` which is used to edit the instance name, token, owner, and datapath. (`#3060 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3060>`_)
- Ensured that people can migrate from MongoDB. (`#3108 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3108>`_)
- Added a command to list disabled commands globally or per guild. (`#3118 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3118>`_)
- New event ``on_red_api_tokens_update`` is now dispatched when shared api keys for a service are updated. (`#3134 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3134>`_)
- Added the method ``redbot.core.bot.Bot.wait_until_red_ready()`` that waits until Red's post connection startup is done. (`#3273 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3273>`_)
Removals
~~~~~~~~
-``[p]set owner`` and ``[p]set token`` have been removed in favor of managing server side. (`#2928 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2928>`_)
- Shared libraries are marked for removal in Red 3.4. (`#3106 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3106>`_)
- Removed ``[p]backup``. Use the cli command ``redbot-setup backup`` instead. (`#3235 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3235>`_)
- Removed the functions ``safe_delete``, ``fuzzy_command_search``, ``format_fuzzy_results`` and ``create_backup`` from ``redbot.core.utils``. (`#3240 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3240>`_)
- Removed a lot of the launcher's handled behavior. (`#3289 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3289>`_)
- Started the user guides covering cogs and the user interface of the bot. This includes, for now, a "Getting started" guide. (`#1734 <https://github.com/Cog-Creators/Red-DiscordBot/issues/1734>`_)
- Added documentation for PM2 support. (`#2105 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2105>`_)
- Updated linux install docs, adding sections for Fedora Linux, Debian/Raspbian Buster, and openSUSE. (`#2558 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2558>`_)
- Created documentation covering what we consider a developer facing breaking change and the guarantees regarding them. (`#2882 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2882>`_)
- Fixed the user parameter being labeled as ``discord.TextChannel`` instead of ``discord.abc.User`` in ``redbot.core.utils.predicates``. (`#2914 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2914>`_)
- Updated towncrier info in the contribution guidelines to explain how to create a changelog for a standalone PR. (`#2915 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2915>`_)
- Reworded the virtual environment guide to make it sound less scary. (`#2920 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2920>`_)
- Driver docs no longer show twice. (`#2972 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2972>`_)
- Added more information about ``redbot.core.utils.humanize_timedelta`` into the docs. (`#2986 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2986>`_)
- Added a direct link to the "Installing Red" section in "Installing using powershell and chocolatey". (`#2995 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2995>`_)
- Updated Git PATH install (Windows), capitalized some words, stopped mentioning the launcher. (`#2998 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2998>`_)
- Added autostart documentation for Red users who installed Red inside of a virtual environment. (`#3005 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3005>`_)
- Updated the Cog Creation guide with a note regarding the Develop version as well as the folder layout for local cogs. (`#3021 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3021>`_)
- Added links to the getting started guide at the end of installation guides. (`#3025 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3025>`_)
- Added proper docstrings to enums that show in drivers docs. (`#3035 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3035>`_)
- Discord.py doc links will now always use the docs for the currently used version of discord.py. (`#3053 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3053>`_)
- Added ``|DPY_VERSION|`` substitution that will automatically get replaced by the current discord.py version. (`#3053 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3053>`_)
- Added missing descriptions for function returns. (`#3054 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3054>`_)
- Stopped overwriting the ``docs/prolog.txt`` file in ``conf.py``. (`#3082 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3082>`_)
- Fixed some typos and wording, added MS Azure to the host list. (`#3083 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3083>`_)
- Updated the docs footer copyright to 2019. (`#3105 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3105>`_)
- Added a deprecation note about shared libraries in the Downloader Framework docs. (`#3106 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3106>`_)
- Updated the apikey framework documentation. Changed ``bot.get_shared_api_keys()`` to ``bot.get_shared_api_tokens()``. (`#3110 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3110>`_)
- Added information about ``info.json``'s ``min_python_version`` key in Downloader Framework docs. (`#3124 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3124>`_)
- Added an event reference for the ``on_red_api_tokens_update`` event in the Shared API Keys docs. (`#3134 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3134>`_)
- Added notes explaining the best practices with config. (`#3149 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3149>`_)
- Documented additional attributes in Context. (`#3151 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3151>`_)
- Updated Windows docs with up to date dependency instructions. (`#3188 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3188>`_)
- Added a "Publishing cogs for V3" document explaining how to make user's cogs work with Downloader. (`#3234 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3234>`_)
- Fixed broken docs for ``redbot.core.commands.Context.react_quietly``. (`#3257 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3257>`_)
- Updated copyright notices on License and RTD config to 2020. (`#3259 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3259>`_)
- Added a line about setuptools and wheel. (`#3262 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3262>`_)
- Ensured development builds are not advertised to the wrong audience. (`#3292 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3292>`_)
- Clarified the usage intent of some of the chat formatting functions. (`#3292 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3292>`_)
Admin
-----
Breaking Changes
~~~~~~~~~~~~~~~~
- Changed ``[p]announce ignore`` and ``[p]announce channel`` to ``[p]announceset ignore`` and ``[p]announceset channel``. (`#3250 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3250>`_)
- Changed ``[p]selfrole <role>`` to ``[p]selfrole add <role>``, changed ``[p]selfrole add`` to ``[p]selfroleset add`` , and changed ``[p]selfrole delete`` to ``[p]selfroleset remove``. (`#3250 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3250>`_)
Bug Fixes
~~~~~~~~~
- Fixed ``[p]announce`` failing after encountering an error attempting to message the bot owner. (`#3166 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3166>`_)
- Improved the clarity of user facing messages when the user is not allowed to do something due to Discord hierarchy rules. (`#3250 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3250>`_)
- Fixed some role managing commands not properly checking if Red had ``manage_roles`` perms before attempting to manage roles. (`#3250 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3250>`_)
- Fixed ``[p]editrole`` commands not checking if roles to be edited are higher than Red's highest role before trying to edit them. (`#3250 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3250>`_)
- Fixed ``[p]announce ignore`` and ``[p]announce channel`` not being able to be used by guild owners and administrators. (`#3250 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3250>`_)
Enhancements
~~~~~~~~~~~~
- Added custom issue messages for adding and removing roles, this makes it easier to create translations. (`#3016 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3016>`_)
Audio
-----
Bug Fixes
~~~~~~~~~
-``[p]playlist remove`` now removes the playlist url if the playlist was created through ``[p]playlist save``. (`#2861 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2861>`_)
- Users are no longer able to accidentally overwrite existing playlist if a new one with the same name is created/renamed. (`#2861 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2861>`_)
-``[p]audioset settings`` no longer shows lavalink JAR version. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
- Fixed a ``KeyError: loadType`` when trying to play tracks. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
-``[p]audioset settings`` now uses ``ctx.is_owner()`` to check if the context author is the bot owner. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
- Fixed track indexs being off by 1 in ``[p]search``. (`#2940 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2940>`_)
- Fixed an issue where updating your Spotify and YouTube Data API tokens did not refresh them. (`#3047 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3047>`_)
- Fixed an issue where the blacklist was not being applied correctly. (`#3047 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3047>`_)
- Fixed an issue in ``[p]audioset restrictions blacklist list`` where it would call the list a ``Whitelist``. (`#3047 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3047>`_)
- Red's status is now properly cleared on emptydisconnect. (`#3050 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3050>`_)
- Fixed a console spam caused sometimes when auto disconnect and auto pause are used. (`#3123 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3123>`_)
- Fixed an error that was thrown when running ``[p]audioset dj``. (`#3165 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3165>`_)
- Fixed a crash that could happen when the bot can't connect to the lavalink node. (`#3238 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3238>`_)
- Restricted the number of songs shown in the queue to first 500 to avoid heartbeats. (`#3279 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3279>`_)
- Added more cooldowns to playlist commands and restricted the queue and playlists to 10k songs to avoid bot errors. (`#3286 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3286>`_)
Enhancements
~~~~~~~~~~~~
-``[p]playlist upload`` will now load playlists generated via ``[p]playlist download`` much faster if the playlist uses the new scheme. (`#2861 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2861>`_)
-``[p]playlist`` commands now can be used by everyone regardless of DJ settings, however it will respect DJ settings when creating/modifying playlists in the server scope. (`#2861 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2861>`_)
- Spotify, Youtube Data, and Lavalink API calls can be cached to avoid repeated calls in the future, see ``[p]audioset cache``. (`#2890 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2890>`_)
- Playlists will now start playing as soon as first track is loaded. (`#2890 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2890>`_)
-``[p]audioset localpath`` can set a path anywhere in your machine now. Note: This path needs to be visible by ``Lavalink.jar``. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
-``[p]queue`` now works when there are no tracks in the queue, showing the track currently playing. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
-``[p]audioset settings`` now reports Red Lavalink version. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
- Adding and removing reactions in Audio is no longer a blocking action. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
- When shuffle is on, queue now shows the correct play order. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
-``[p]seek`` and ``[p]skip`` can be used by user if they are the song requester while DJ mode is enabled and votes are disabled. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
- Adding a playlist and an album to a saved playlist skips tracks already in the playlist. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
- DJ mode is now turned off if the DJ role is deleted. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
- When playing a localtrack, ``[p]play`` and ``[p]bumpplay`` no longer require the use of the prefix "localtracks\\".
Before: ``[p]bumpplay localtracks\\ENM\\501 - Inside The Machine.mp3``
Now: ``[p]bumpplay ENM\\501 - Inside The Machine.mp3``
Now nested folders: ``[p]bumpplay Parent Folder\\Nested Folder\\track.mp3`` (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
- Removed commas in explanations about how to set API keys. (`#2905 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2905>`_)
- Expanded local track support to all file formats (m3u, m4a, mp4, etc). (`#2940 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2940>`_)
- Cooldowns are now reset upon failure of commands that have a cooldown timer. (`#2940 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2940>`_)
- Improved the explanation in the help string for ``[p]audioset emptydisconnect``. (`#3051 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3051>`_)
- Added a typing indicator to playlist dedupe. (`#3058 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3058>`_)
- Exposed clearer errors to users in the play commands. (`#3085 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3085>`_)
- Better error handling when the player is unable to play multiple tracks in the sequence. (`#3165 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3165>`_)
New Features
~~~~~~~~~~~~
- Added support for nested folders in the localtrack folder. (`#270 <https://github.com/Cog-Creators/Red-DiscordBot/issues/270>`_)
- Now auto pauses the queue when the voice channel is empty. (`#721 <https://github.com/Cog-Creators/Red-DiscordBot/issues/721>`_)
- All Playlist commands now accept optional arguments, use ``[p]help playlist <subcommand>`` for more details. (`#2861 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2861>`_)
-``[p]playlist rename`` will now allow users to rename existing playlists. (`#2861 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2861>`_)
-``[p]playlist update`` will now allow users to update non-custom Playlists to the latest available tracks. (`#2861 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2861>`_)
- There are now 3 different scopes of playlist. To define them, use the ``--scope`` argument.
``Global Playlist``
- These playlists will be available in all servers the bot is in.
- These can be managed by the Bot Owner only.
``Server Playlist``
- These playlists will only be available in the server they were created in.
- These can be managed by the Bot Owner, Guild Owner, Mods, Admins, DJs, and the Creator (if the DJ role is disabled).
``User Playlist``
- These playlists will be available in all servers both the bot and the creator are in.
- These can be managed by the Bot Owner and Creator only. (`#2861 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2861>`_)
-``[p]audioset cache`` can be used to set the cache level. **It's off by default**. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
-``[p]genre`` can be used to play spotify playlists. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
-``[p]audioset cacheage`` can be used to set the maximum age of an entry in the cache. **Default is 365 days**. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
-``[p]audioset autoplay`` can be used to enable auto play once the queue runs out. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
-``[p]queue shuffle`` can be used to shuffle the queue manually. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
-``[p]queue clean self`` can be used to remove all songs you requested from the queue. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
-``[p]audioset restrictions`` can be used to add or remove keywords which songs must have or are not allowed to have. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
-``[p]playlist dedupe`` can be used to remove duplicated tracks from a playlist. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
-``[p]autoplay`` can be used to play a random song. (`#2904 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2904>`_)
-``[p]bumpplay`` can be used to add a song to the front of the queue. (`#2940 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2940>`_)
-``[p]shuffle`` has an additional argument to tell the bot whether it should shuffle bumped tracks. (`#2940 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2940>`_)
- Added global whitelist/blacklist commands. (`#3047 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3047>`_)
- Added self-managed daily playlists in the GUILD scope, these are called "Daily playlist - YYYY-MM-DD" and auto delete after 7 days. (`#3199 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3199>`_)
CustomCom
---------
Enhancements
~~~~~~~~~~~~
- The group command ``[p]cc create`` can now be used to create simple CCs without specifying "simple". (`#1767 <https://github.com/Cog-Creators/Red-DiscordBot/issues/1767>`_)
- Added a query option for CC typehints for URL-based CCs. (`#3228 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3228>`_)
- Now uses the ``humanize_list`` utility for iterable parameter results, e.g. ``{#:Role.members}``. (`#3277 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3277>`_)
Downloader
----------
Bug Fixes
~~~~~~~~~
- Made the regex for repo names use raw strings to stop causing a ``DeprecationWarning`` for invalid escape sequences. (`#2571 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2571>`_)
- Downloader will no longer attempt to install cogs that are already installed. (`#2571 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2571>`_)
- Repo names can now only contain the characters listed in the help text (A-Z, 0-9, underscores, and hyphens). (`#2827 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2827>`_)
-``[p]findcog`` no longer attempts to find a cog for commands without a cog. (`#2902 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2902>`_)
- Downloader will no longer attempt to install a cog with same name as another cog that is already installed. (`#2927 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2927>`_)
- Added error handling for when a remote repository or branch is deleted, now notifies the which repository failed and continues to update the others. (`#2936 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2936>`_)
-``[p]cog install`` will no longer error if a cog has an empty install message. (`#3024 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3024>`_)
- Made ``redbot.cogs.downloader.repo_manager.Repo.clean_url`` work with relative urls. This property is ``str`` type now. (`#3141 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3141>`_)
- Fixed an error on repo add from empty string values for the ``install_msg`` info.json field. (`#3153 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3153>`_)
- Disabled all git auth prompts when adding/updating a repo with Downloader. (`#3159 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3159>`_)
-``[p]findcog`` now properly works for cogs with less typical folder structure. (`#3177 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3177>`_)
-``[p]cog uninstall`` now fully unloads cog - the bot will not try to load it on next startup. (`#3179 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3179>`_)
Enhancements
~~~~~~~~~~~~
- Downloader will now check if the Python and bot versions match requirements in ``info.json`` during update. (`#1866 <https://github.com/Cog-Creators/Red-DiscordBot/issues/1866>`_)
-``[p]cog install`` now accepts multiple cog names. (`#2527 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2527>`_)
- When passing cogs to ``[p]cog update``, it will now only update those cogs, not all cogs from the repo those cogs are from. (`#2527 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2527>`_)
- Added error messages for failures when installing/reinstalling requirements and copying cogs and shared libraries. (`#2571 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2571>`_)
-``[p]repo info`` will now show the repo's url, branch, and authors. (`#3225 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3225>`_)
-``[p]cog info`` will now show cog authors. (`#3225 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3225>`_)
-``[p]findcog`` will now show the repo's branch. (`#3225 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3225>`_)
New Features
~~~~~~~~~~~~
- Added ``[p]repo update [repos]`` which updates repos without updating the cogs from them. (`#2527 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2527>`_)
- Added ``[p]cog installversion <repo_name> <revision> <cogs>`` which installs cogs from a specified revision (commit, tag) of the given repo. When using this command, the cog will automatically be pinned. (`#2527 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2527>`_)
- Added ``[p]cog pin <cogs>`` and ``[p]cog unpin <cogs>`` for pinning cogs. Cogs that are pinned will not be updated when using update commands. (`#2527 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2527>`_)
- Added ``[p]cog checkforupdates`` that lists which cogs can be updated (including pinned cog) without updating them. (`#2527 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2527>`_)
- Added ``[p]cog updateallfromrepos <repos>`` that updates all cogs from the given repos. (`#2527 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2527>`_)
- Added ``[p]cog updatetoversion <repo_name> <revision> [cogs]`` that updates all cogs or ones of user's choosing to chosen revision of the given repo. (`#2527 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2527>`_)
- Added ``[p]cog reinstallreqs`` that reinstalls cog requirements and shared libraries for all installed cogs. (`#3167 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3167>`_)
Documentation Changes
~~~~~~~~~~~~~~~~~~~~~
- Added ``redbot.cogs.downloader.installable.InstalledModule`` to Downloader's framework docs. (`#2527 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2527>`_)
- Removed API References for Downloader. (`#3234 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3234>`_)
Image
-----
Enhancements
~~~~~~~~~~~~
- Updated the giphycreds command to match the formatting of the other API commands. (`#2905 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2905>`_)
- Removed commas from explanations about how to set API keys. (`#2905 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2905>`_)
Mod
---
Bug Fixes
~~~~~~~~~
-``[p]userinfo`` no longer breaks when a user has an absurd numbers of roles. (`#2910 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2910>`_)
- Fixed Mod cog not recording username changes for ``[p]names`` and ``[p]userinfo`` commands. (`#2918 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2918>`_)
- Fixed an error when reloading Mod. (`#2932 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2932>`_)
Enhancements
~~~~~~~~~~~~
- Slowmode now accepts integer-only inputs as seconds. (`#2884 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2884>`_)
Permissions
-----------
Bug Fixes
~~~~~~~~~
- Defaults are now cleared properly when clearing all rules. (`#3037 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3037>`_)
Enhancements
~~~~~~~~~~~~
- Better explained the usage of commands with the ``<who_or_what>`` argument. (`#2991 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2991>`_)
Streams
-------
Bug Fixes
~~~~~~~~~
- Fixed a ``TypeError`` in the ``TwitchStream`` class when calling Twitch client_id from Red shared APIs tokens. (`#3042 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3042>`_)
- Changed the ``stream_alert`` function for Twitch alerts to make it work with how the ``TwitchStream`` class works now. (`#3042 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3042>`_)
Enhancements
~~~~~~~~~~~~
- Removed commas from explanations about how to set API keys. (`#2905 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2905>`_)
Trivia
------
Bug Fixes
~~~~~~~~~
- Fixed a typo in Ahsoka Tano's name in the Starwars trivia list. (`#2909 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2909>`_)
- Fixed a bug where ``[p]trivia leaderboard`` failed to run. (`#2911 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2911>`_)
- Fixed a typo in the Greek mythology trivia list regarding Hermes' staff. (`#2994 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2994>`_)
- Fixed a question in the Overwatch trivia list that accepted blank responses. (`#2996 <https://github.com/Cog-Creators/Red-DiscordBot/issues/2996>`_)
- Fixed questions and answers that were incorrect in the Clash Royale trivia list. (`#3236 <https://github.com/Cog-Creators/Red-DiscordBot/issues/3236>`_)
Enhancements
~~~~~~~~~~~~
- Added trivia lists for Prince and Michael Jackson lyrics. (`#12 <https://github.com/Cog-Creators/Red-DiscordBot/issues/12>`_)
- Added information about internally managed jar to ``[p]audioset info`` (:issue:`3915`)
- Updated to Lavaplayer 1.3.50
- Twitch playback and YouTube searching should be functioning again.
Core Bot
********
- Fixed delayed help when ``[p]set deletedelay`` is enabled (:issue:`3884`, :issue:`3883`)
- Bumped the Discord.py requirement from 1.3.3 to 1.3.4 (:issue:`4053`)
- Added settings view commands for nearly all cogs. (:issue:`4041`)
- Added more strings to be fully translatable by i18n. (:issue:`4044`)
Downloader
**********
- Added ``[p]cog listpinned`` subcommand to see currently pinned cogs (:issue:`3974`)
- Fixed unnecessary typing when running downloader commands (:issue:`3964`, :issue:`3948`)
- Added embed version of ``[p]findcog`` (:issue:`3965`, :issue:`3944`)
- Fixed ``[p]findcog`` not differentiating between core cogs and local cogs(:issue:`3969`, :issue:`3966`)
Filter
******
- Added ``[p]filter list`` to show filtered words, and removed DMs when no subcommand was passed (:issue:`3973`)
Image
*****
- Updated instructions for obtaining and setting the GIPHY API key (:issue:`3994`)
Mod
***
- Added option to delete messages within the passed amount of days with ``[p]tempban`` (:issue:`3958`)
- Added the ability to permanently ban a temporary banned user with ``[p]hackban`` (:issue:`4025`)
- Fixed the passed reason not being used when using ``[p]tempban`` (:issue:`3958`)
- Fixed invite being sent with ``[p]tempban`` even when no invite was set (:issue:`3991`)
- Prevented an issue whereby the author may lock him self out of using the bot via whitelists (:issue:`3903`)
- Reduced the number of API calls made to the storage APIs (:issue:`3910`)
Permissions
***********
- Uploaded YAML files now accept integer commands without quotes (:issue:`3987`, :issue:`3185`)
- Uploaded YAML files now accept command rules with empty dictionaries (:issue:`3987`, :issue:`3961`)
Streams
*******
- Fixed streams cog sending multiple owner notifications about twitch secret not set (:issue:`3901`, :issue:`3587`)
- Fixed old bearer tokens not being invalidated when the API key is updated (:issue:`3990`, :issue:`3917`)
Trivia Lists
************
- Fixed URLs in ``whosthatpokemon`` (:issue:`3975`, :issue:`3023`)
- Fixed trivia files ``leagueults`` and ``sports`` (:issue:`4026`)
- Updated ``greekmyth`` to include more answer variations (:issue:`3970`)
- Added new ``lotr`` trivia list (:issue:`3980`)
- Added new ``r6seige`` trivia list (:issue:`4026`)
Developer changelog
-------------------
- Added the utility functions ``map``, ``find``, and ``next`` to ``AsyncIter`` (:issue:`3921`, :issue:`3887`)
- Updated deprecation times for ``APIToken``, and loops being passed to various functions to the first minor release (represented by ``X`` in ``3.X.0``) after 2020-08-05 (:issue:`3608`)
- Updated deprecation warnings for shared libs to reflect that they have been moved for an undefined time (:issue:`3608`)
- Added new ``discord.com`` domain to ``INVITE_URL_RE`` common filter (:issue:`4012`)
- Fixed incorrect role mention regex in ``MessagePredicate`` (:issue:`4030`)
- Vendor the ``discord.ext.menus`` module (:issue:`4039`)
Documentation changes
---------------------
Miscellaneous
-------------
- Improved error responses for when Modlog and Autoban on mention spam were already disabled (:issue:`3951`, :issue:`3949`)
- Clarified that ``[p]embedset user`` only affects commands executed in DMs (:issue:`3972`, :issue:`3953`)
- Added link to Getting Started guide if the bot was not in any guilds (:issue:`3906`)
- Fixed exceptions being ignored or not sent to log files in special cases (:issue:`3895`)
- Added the option of using dots in the instance name when creating your instances (:issue:`3920`)
- Added a confirmation when using hyphens in instance names to discourage the use of them (:issue:`3920`)
- Fixed migration owner notifications being sent even when migration was not necessary (:issue:`3911`. :issue:`3909`)
- Fixed commands being translated where they should not be (:issue:`3938`, :issue:`3919`)
- Fixed grammar errors and added full stopts in ``core_commands.py`` (:issue:`4023`)
Redbot 3.3.9 (2020-06-12)
=========================
| Thanks to all these amazing people that contributed to this release:
| 1. Bot owners can no longer restrict access to some commands in Permissions cog using global permissions rules. Look at `Permissions changelog <important-339-2>` for full details.
| 2. There's been a change in behavior of warning messages. Look at `Warnings changelog <important-339-1>` for full details.
End-user changelog
------------------
Security
********
**NOTE**: If you can't update immediately, we recommend disabling the affected command until you can.
-**Mod** - ``[p]tempban`` now properly respects Discord's hierarchy rules (:issue:`3957`)
Core Bot
********
-``[p]info`` command can now be used when bot doesn't have Embed Links permission (:issue:`3907`, :issue:`3102`)
- Fixed ungraceful error that happened in ``[p]set custominfo`` when provided text was too long (:issue:`3923`)
- Red's start up message now shows storage type (:issue:`3935`)
Audio
*****
- Audio now properly ignores streams when max length is enabled (:issue:`3878`, :issue:`3877`)
- Commands that should work in DMs no longer error (:issue:`3880`)
Filter
******
- Fixed behavior of detecting quotes in commands for adding/removing filtered words (:issue:`3925`)
.._important-339-2:
Permissions
***********
-**Both global and server rules** can no longer prevent guild owners from accessing commands for changing server rules. Bot owners can still use ``[p]command disable`` if they wish to completely disable any command in Permissions cog (:issue:`3955`, :issue:`3107`)
Full list of affected commands:
- ``[p]permissions acl getserver``
-``[p]permissions acl setserver``
-``[p]permissions acl updateserver``
-``[p]permissions addserverrule``
-``[p]permissions removeserverrule``
-``[p]permissions setdefaultserverrule``
-``[p]permissions clearserverrules``
-``[p]permissions canrun``
-``[p]permissions explain``
.._important-339-1:
Warnings
********
- Warnings sent to users don't show the moderator who warned the user by default now. Newly added ``[p]warningset showmoderators`` command can be used to switch this behaviour (:issue:`3781`)
- Warn channel functionality has been fixed (:issue:`3781`)
Developer changelog
-------------------
Core Bot
********
- Added `bot.set_prefixes() <RedBase.set_prefixes()>` method that allows developers to set global/server prefixes (:issue:`3890`)
Documentation changes
---------------------
- Added Oracle Cloud to free hosting section in :ref:`host-list` (:issue:`3916`)
Miscellaneous
-------------
- Added missing help message for Downloader, Reports and Streams cogs (:issue:`3892`)
-**Core Bot** - cooldown in ``[p]contact`` no longer applies when it's used without any arguments (:issue:`3942`)
-**Core Bot** - improved instructions on obtaining user ID in help of ``[p]dm`` command (:issue:`3946`)
-**Alias** - ``[p]alias global`` group, ``[p]alias help``, and ``[p]alias show`` commands can now be used in DMs (:issue:`3941`, :issue:`3940`)
- Local folders with special characters should work properly now (:issue:`3528`, :issue:`3467`)
- Audio no longer fails to take the last spot in the voice channel with user limit (:issue:`3528`)
-``[p]local play`` no longer enqueues tracks from nested folders (:issue:`3528`)
- Fixed ``[p]playlist dedupe`` not removing tracks (:issue:`3518`)
-``[p]disconnect`` now allows to disconnect if both DJ mode and voteskip aren't enabled (:issue:`3502`, :issue:`3485`)
- Many UX improvements and fixes, including, among other things:
- Creating playlists without explicitly passing ``-scope`` no longer causes errors (:issue:`3500`)
-``[p]playlist list`` now shows all accessible playlists if ``--scope`` flag isn't used (:issue:`3518`)
-``[p]remove`` now also accepts a track URL in addition to queue index (:issue:`3201`)
-``[p]playlist upload`` now accepts a playlist file uploaded in the message with a command (:issue:`3251`)
- Commands now send friendly error messages for common errors like lost Lavalink connection or bot not connected to voice channel (:issue:`3503`, :issue:`3528`, :issue:`3353`, :issue:`3712`)
CustomCommands
**************
-``[p]customcom create`` no longer allows spaces in custom command names (:issue:`3816`)
Mod
***
-``[p]userinfo`` now shows default avatar when no avatar is set (:issue:`3819`)
Modlog
******
- Fixed (again) ``AttributeError`` for cases whose moderator doesn't share the server with the bot (:issue:`3805`, :issue:`3784`, :issue:`3778`)
Permissions
***********
- Commands for settings ACL using yaml files now properly works on PostgreSQL data backend (:issue:`3829`, :issue:`3796`)
Warnings
********
- Warnings cog no longer allows to warn bot users (:issue:`3855`, :issue:`3854`)
Developer changelog
-------------------
|**Important:**
| If you're using RPC, please see the full annoucement about current state of RPC in main Red server
`by clicking here <https://discord.com/channels/133049272517001216/411381123101491200/714560168465137694>`_.
Core Bot
********
- Red now inherits from `discord.ext.commands.AutoShardedBot` for better compatibility with code expecting d.py bot (:issue:`3822`)
- Libraries using ``pkg_resources`` (like ``humanize`` or ``google-api-python-client``) that were installed through Downloader should now work properly (:issue:`3843`)
- All bot owner IDs can now be found under ``bot.owner_ids`` attribute (:issue:`3793`)
- Note: If you want to use this on bot startup (e.g. in cog's initialisation), you need to await ``bot.wait_until_red_ready()`` first
Documentation changes
---------------------
- Added information about provisional status of RPC (:issue:`3862`)
- Revised install instructions (:issue:`3847`)
- Improved navigation in `document about updating Red <update_red>` (:issue:`3856`, :issue:`3849`)
Miscellaneous
-------------
- Few clarifications and typo fixes in few command help docstrings (:issue:`3817`, :issue:`3823`, :issue:`3837`, :issue:`3851`, :issue:`3861`)
-**Downloader** - Downloader no longer removes the repo when it fails to load it (:issue:`3867`)
Redbot 3.3.7 (2020-04-28)
=========================
This is a hotfix release fixing issue with generating messages for new cases in Modlog.
Redbot 3.3.6 (2020-04-27)
=========================
| Thanks to all these amazing people that contributed to this release:
- Converting from and to Postgres driver with ``redbot-setup convert`` have been fixed (:issue:`3714`, :issue:`3115`)
- Fixed big delays in commands that happened when the bot was owner-less (or if it only used co-owners feature) and command caller wasn't the owner (:issue:`3782`)
- Various optimizations
- Reduced calls to data backend when loading bot's commands (:issue:`3764`)
- Reduced calls to data backend when showing help for cogs/commands (:issue:`3766`)
- Improved performance for bots with big amount of guilds (:issue:`3767`)
- Mod cog no longer fetches guild's bans every 60 seconds when handling unbanning for tempbans (:issue:`3783`)
- Reduced the bot load for messages starting with a prefix when fuzzy search is disabled (:issue:`3718`)
- Aliases in Alias cog are now cached for better performance (:issue:`3788`)
Core Commands
*************
-``[p]set avatar`` now supports setting avatar using attachment (:issue:`3747`)
- Fixed list of ignored channels that is shown in ``[p]ignore``/``[p]unignore`` (:issue:`3746`)
Audio
*****
- Age-restricted tracks, live streams, and mix playlists from YouTube should work in Audio again (:issue:`3791`)
- Soundcloud's sets and playlists with more than 50 tracks should work in Audio again (:issue:`3791`)
CustomCommands
**************
- Added ``[p]cc raw`` command that gives you the raw response of a custom command for ease of copy pasting (:issue:`3795`)
Modlog
******
- Fixed ``AttributeError`` for cases whose moderator doesn't share the server with the bot (:issue:`3784`, :issue:`3778`)
Streams
*******
- Fixed incorrect stream URLs for Twitch channels that have localised display name (:issue:`3773`, :issue:`3772`)
Trivia
******
- Fixed the error in ``[p]trivia stop`` that happened when there was no ongoing trivia session in the channel (:issue:`3774`)
Trivia Lists
************
- Updated ``leagueoflegends`` list with new changes to League of Legends (`b8ac70e <https://github.com/Cog-Creators/Red-DiscordBot/commit/b8ac70e59aa1328f246784f14f992d6ffe00d778>`_)
Developer changelog
-------------------
Utility Functions
*****************
- Added `redbot.core.utils.AsyncIter` utility class which allows you to wrap regular iterable into async iterator yielding items and sleeping for ``delay`` seconds every ``steps`` items (:issue:`3767`, :issue:`3776`)
-`bold()`, `italics()`, `strikethrough()`, and `underline()` now accept ``escape_formatting`` argument that can be used to disable escaping of markdown formatting in passed text (:issue:`3742`)
Documentation changes
---------------------
- Added `document about updating Red <update_red>` (:issue:`3790`)
-``pyenv`` instructions will now update ``pyenv`` if it's already installed (:issue:`3740`)
- Updated Python version in ``pyenv`` instructions (:issue:`3740`)
- Updated install docs to include Ubuntu 20.04 (:issue:`3792`)
Miscellaneous
-------------
-**Config** - JSON driver will now properly have only one lock per cog name (:issue:`3780`)
-**Core Commands** - ``[p]debuginfo`` now shows used storage type (:issue:`3794`)
-**Trivia** - Corrected spelling of Compact Disc in ``games`` list (:issue:`3759`, :issue:`3758`)
Redbot 3.3.5 (2020-04-09)
=========================
| Thanks to all these amazing people that contributed to this release:
|:ghuser:`jack1142`, :ghuser:`Kowlin`
End-user changelog
------------------
Core Bot
********
- "Outdated" field no longer shows in ``[p]info`` when Red is up-to-date (:issue:`3730`)
Alias
*****
- Fixed regression in ``[p]alias add`` that caused it to reject commands containing arguments (:issue:`3734`)
Redbot 3.3.4 (2020-04-05)
=========================
| Thanks to all these amazing people that contributed to this release:
|:ghuser:`jack1142`, :ghuser:`kennnyshiwa`
End-user changelog
------------------
Core Bot
********
- Fixed checks related to bank's global state that were used in commands in Bank, Economy and Trivia cogs (:issue:`3707`)
Alias
*****
-``[p]alias add`` now sends an error when command user tries to alias doesn't exist (:issue:`3710`, :issue:`3545`)
Developer changelog
-------------------
Core Bot
********
- Bump dependencies, including update to discord.py 1.3.3 (:issue:`3723`)
Utility Functions
*****************
-`redbot.core.utils.common_filters.filter_invites` now filters ``discord.io/discord.li`` invites links (:issue:`3717`)
- Fixed false-positives in `redbot.core.utils.common_filters.filter_invites` (:issue:`3717`)
Documentation changes
---------------------
- Versions of pre-requirements are now included in Windows install guide (:issue:`3708`)
Redbot 3.3.3 (2020-03-28)
=========================
| Thanks to all these amazing people that contributed to this release:
- Delete delay for command messages has been moved from Mod cog to Core (:issue:`3638`, :issue:`3636`)
- Fixed various bugs with blacklist and whitelist (:issue:`3643`, :issue:`3642`)
- Added ``[p]set regionalformat`` command that allows users to set regional formatting that is different from bot's locale (:issue:`3677`, :issue:`3588`)
-``[p]set locale`` allows any valid locale now, not just locales for which Red has translations (:issue:`3676`, :issue:`3596`)
- Permissions for commands in Bank, Economy and Trivia cogs can now be overriden by Permissions cog (:issue:`3672`, :issue:`3233`)
- Outages of ``pypi.org`` no longer prevent the bot from starting (:issue:`3663`)
- Fixed formatting of help strings in fuzzy search results (:issue:`3673`, :issue:`3507`)
- Fixed few deprecation warnings related to menus and uvloop (:issue:`3644`, :issue:`3700`)
Core Commands
*************
-``[p]set game`` no longer errors when trying to clear the status (:issue:`3630`, :issue:`3628`)
- All owner notifcations in Core now use proper prefixes in messages (:issue:`3632`)
- Added ``[p]set playing`` and ``[p]set streaming`` aliases for respectively ``[p]set game`` and ``[p]set stream`` (:issue:`3646`, :issue:`3590`)
ModLog
******
- Modlog's cases now keep last known username to prevent losing that information from case's message on edit (:issue:`3674`, :issue:`3443`)
CustomCom
*********
- Added ``[p]cc search`` command that allows users to search through created custom commands (:issue:`2573`)
Cleanup
*******
- Added ``[p]cleanup spam`` command that deletes duplicate messages from the last X messages and keeps only one copy (:issue:`3688`)
- Removed regex support in ``[p]cleanup self`` (:issue:`3704`)
Downloader
**********
-``[p]cog checkforupdates`` now includes information about cogs that can't be installed due to Red/Python version requirements (:issue:`3678`, :issue:`3448`)
General
*******
- Added more detailed mode to ``[p]serverinfo`` command that can be accessed with ``[p]serverinfo 1`` (:issue:`2382`, :issue:`3659`)
Image
*****
- Users can now specify how many images should be returned in ``[p]imgur search`` and ``[p]imgur subreddit`` using ``[count]`` argument (:issue:`3667`, :issue:`3044`)
-``[p]imgur search`` and ``[p]imgur subreddit`` now return one image by default (:issue:`3667`, :issue:`3044`)
Mod
***
-``[p]userinfo`` now shows user's activities (:issue:`3669`)
-``[p]userinfo`` now shows status icon near the username (:issue:`3669`)
- Muting no longer fails if user leaves while applying overwrite (:issue:`3627`)
- Fixed error that happened when Mod cog was loaded for the first time during bot startup (:issue:`3632`, :issue:`3626`)
Permissions
***********
- Commands for setting default rules now error when user tries to deny access to command designated as being always available (:issue:`3504`, :issue:`3465`)
Streams
*******
- Fixed an error that happened when no game was set on Twitch stream (:issue:`3631`)
- Preview picture for YouTube stream alerts is now bigger (:issue:`3689`, :issue:`3685`)
- YouTube channels with a livestream that doesn't have any current viewer are now properly showing as streaming (:issue:`3690`)
- Failures in Twitch API authentication are now logged (:issue:`3657`)
Trivia
******
- Added ``[p]triviaset custom upload/delete/list`` commands for managing custom trivia lists from Discord (:issue:`3420`, :issue:`3307`)
- Trivia sessions no longer error on payout when winner's balance would exceed max balance (:issue:`3666`, :issue:`3584`)
Warnings
********
- Sending warnings to warned user can now be disabled with ``[p]warnset toggledm`` command (:issue:`2929`, :issue:`2800`)
- Added ``[p]warnset warnchannel`` command that allows to set a channel where warnings should be sent to instead of the channel command was called in (:issue:`2929`, :issue:`2800`)
- Added ``[p]warnset togglechannel`` command that allows to disable sending warn message in guild channel (:issue:`2929`, :issue:`2800`)
-``[p]warn`` now tells the moderator when bot wasn't able to send the warning to the user (:issue:`3653`, :issue:`3633`)
Developer changelog
-------------------
Core Bot
********
- Deprecation warnings issued by Red now use correct stack level so that the cog developers can find the cause of them (:issue:`3644`)
Dev Cog
*******
- Add ``__name__`` to environment's globals (:issue:`3649`, :issue:`3648`)
Documentation changes
---------------------
- Fixed install instructions for Mac in `install_linux_mac` (:issue:`3675`, :issue:`3436`)
- Windows install instructions now use ``choco upgrade`` commands instead of ``choco install`` to ensure up-to-date packages (:issue:`3684`)
Miscellaneous
-------------
-**Core Bot** - Command errors (i.e. command on cooldown, dm-only and guild-only commands, etc) can now be translated (:issue:`3665`, :issue:`2988`)
-**Core Bot** - ``redbot-setup`` now prints link to Getting started guide at the end of the setup (:issue:`3027`)
-**Core Bot** - Whitelist and blacklist commands now properly require passing at least one user (or role in case of local whitelist/blacklist) (:issue:`3652`, :issue:`3645`)
-**Downloader** - Fix misleading error appearing when repo name is already taken in ``[p]repo add`` (:issue:`3695`)
-**Downloader** - Improved error messages for unexpected errors in ``[p]repo add`` (:issue:`3656`)
-**Trivia** - Non-finite numbers can no longer be passed to ``[p]triviaset timelimit``, ``[p]triviaset stopafter`` and ``[p]triviaset payout`` (:issue:`3668`, :issue:`3583`)
-**Utility Functions** - `redbot.core.utils.menus.menu()` now checks permissions *before* trying to clear reactions (:issue:`3589`, :issue:`3145`)
Redbot 3.3.2 (2020-02-28)
=========================
| Thanks to all these amazing people that contributed to this release:
- Add clearer error when page is of a wrong type in `redbot.core.utils.menus.menu()` (:issue:`3571`)
Dev Cog
*******
- Allow for top-level `await`, `async for` and `async with` in ``[p]debug`` and ``[p]repl`` commands (:issue:`3508`)
Downloader
**********
- Downloader will now replace ``[p]`` with clean prefix same as it does in help command (:issue:`3592`)
- Add schema validation to ``info.json`` file processing - it should now be easier to notice any issues with those files (:issue:`3533`, :issue:`3442`)
Documentation changes
---------------------
- Add guidelines for Cog Creators in `guide_cog_creation` document (:issue:`3568`)
- Restructure virtual environment instructions to improve user experience (:issue:`3495`, :issue:`3411`, :issue:`3412`)
- Getting started guide now explain use of quotes for arguments with spaces (:issue:`3555`, :issue:`3111`)
-``latest`` version of docs now displays a warning about possible differences from current stable release (:issue:`3570`)
- Make systemd guide clearer on obtaining username and python path (:issue:`3537`, :issue:`3462`)
- Indicate instructions for different venv types in systemd guide better (:issue:`3538`)
- Service file in `autostart_systemd` now also waits for network connection to be ready (:issue:`3549`)
- Hide alias of ``randomize_colour`` in docs (:issue:`3491`)
- Add separate headers for each event predicate class for better navigation (:issue:`3595`, :issue:`3164`)
- Improve wording of explanation for ``required_cogs`` key in `guide_publish_cogs` (:issue:`3520`)
Miscellaneous
-------------
- Use more reliant way of checking if command is bot owner only in ``[p]warnaction`` (Warnings cog) (:issue:`3516`, :issue:`3515`)
- Update PyPI domain in ``[p]info`` and update checker (:issue:`3607`)
- Stop using deprecated code in core (:issue:`3610`)
Redbot 3.3.1 (2020-02-05)
=========================
Core Bot
--------
- Add a cli flag for setting a max size of message cache
- Allow to edit prefix from command line using ``redbot --edit``.
- Some functions have been changed to no longer use deprecated asyncio functions
Core Commands
-------------
- The short help text for dm has been made more useful
- dm no longer allows owners to have the bot attempt to DM itself
Utils
-----
- Passing the event loop explicitly in utils is deprecated (Removal in 3.4)
Mod Cog
-------
- Hackban now works properly without being provided a number of days
Documentation Changes
---------------------
- Add ``-e`` flag to ``journalctl`` command in systemd guide so that it takes the user to the end of logs automatically.
- Added section to install docs for CentOS 8
- Improve usage of apt update in docs
Redbot 3.3.0 (2020-01-26)
=========================
Core Bot
--------
- The bot's description is now configurable.
- We now use discord.py 1.3.1, this comes with added teams support.
- The commands module has been slightly restructured to provide more useful data to developers.
- Help is now self consistent in the extra formatting used.
Core Commands
-------------
- Slowmode should no longer error on nonsensical time quantities.
- Embed use can be configured per channel as well.
Documentation
-------------
- We've made some small fixes to inaccurate instructions about installing with pyenv.
- Notes about deprecating in 3.3 have been altered to 3.4 to match the intended timeframe.
Admin
-----
- Gives feedback when adding or removing a role doesn't make sense.
Audio
-----
- Playlist finding is more intuitive.
- disconnect and repeat commands no longer interfere with eachother.
CustomCom
---------
- No longer errors when exiting an interactive menu.
Cleanup
-------
- A rare edge case involving messages which are deleted during cleanup and are the only message was fixed.
Downloader
----------
- Some user facing messages were improved.
- Downloader's initialization can no longer time out at startup.
General
-------
- Roll command will no longer attempt to roll obscenely large amounts.
Mod
---
- You can set a default amount of days to clean up when banning.
- Ban and hackban now use that default.
- Users can now optionally be DMed their ban reason.
Permissions
-----------
- Now has stronger enforcement of prioritizing botwide settings.
You can set cooldowns for your custom commands. If a command is on cooldown, it will not be triggered.
You can set cooldowns per member or per channel, or set a cooldown guild-wide. You can also set multiple types of cooldown on a single custom command. All cooldowns must pass before the command will trigger.
You can set cooldowns per member or per thread/channel, or set a cooldown guild-wide. You can also set multiple types of cooldown on a single custom command. All cooldowns must pass before the command will trigger.
------------------
Context Parameters
@@ -26,19 +27,19 @@ Context Parameters
You can enhance your custom command's response by leaving spaces for the bot to substitute.
Set, edit, or view the cooldown for a custom command.
You may set cooldowns per member, thread/channel, or guild. Multiple
cooldowns may be set. All cooldowns must be cooled to call the
custom command.
Examples:
- ``[p]customcom cooldown pingrole``
- ``[p]customcom cooldown yourcommand 30``
- ``[p]cc cooldown mycommand 30 guild``
**Arguments:**
-``<command>`` The custom command to check or set the cooldown.
-``[cooldown]`` The number of seconds to wait before allowing the command to be invoked again. If omitted, will instead return the current cooldown settings.
-``[per]`` The group to apply the cooldown on. Defaults to per member. Valid choices are server / guild, user / member, and channel.
.._customcommands-command-customcom-create:
""""""""""""""""
customcom create
""""""""""""""""
..note:: |mod-lock|
**Syntax**
..code-block::none
[p]customcom create <command> <text>
..tip:: Alias: ``customcom add``
**Description**
Create custom commands.
If a type is not specified, a simple CC will be created.
This is the cog guide for the downloader cog. You will
find detailed docs about usage and commands.
``[p]`` is considered as your prefix.
..note:: To use this cog, load it by typing this::
[p]load downloader
.._downloader-usage:
-----
Usage
-----
Install community cogs made by Cog Creators.
Community cogs, also called third party cogs, are not included
in the default Red install.
Community cogs come in repositories. Repos are a group of cogs
you can install. You always need to add the creator's repository
using the ``[p]repo`` command before you can install one or more
cogs from the creator.
.._downloader-commands:
--------
Commands
--------
.._downloader-command-cog:
^^^
cog
^^^
..note:: |owner-lock|
**Syntax**
..code-block::none
[p]cog
**Description**
Base command for cog installation management commands.
.._downloader-command-cog-checkforupdates:
"""""""""""""""""""
cog checkforupdates
"""""""""""""""""""
**Syntax**
..code-block::none
[p]cog checkforupdates
**Description**
Check for available cog updates (including pinned cogs).
This command doesn't update cogs, it only checks for updates.
Use ``[p]cog update`` to update cogs.
.._downloader-command-cog-info:
""""""""
cog info
""""""""
**Syntax**
..code-block::none
[p]cog info <repo> <cog>
**Description**
List information about a single cog.
Example:
- ``[p]cog info 26-Cogs defender``
**Arguments**
-``<repo>`` The repo to get cog info from.
-``<cog>`` The cog to get info on.
.._downloader-command-cog-install:
"""""""""""
cog install
"""""""""""
**Syntax**
..code-block::none
[p]cog install <repo> <cogs...>
**Description**
Install a cog from the given repo.
Examples:
- ``[p]cog install 26-Cogs defender``
- ``[p]cog install Laggrons-Dumb-Cogs say roleinvite``
**Arguments**
-``<repo>`` The name of the repo to install cogs from.
-``<cogs...>`` The cog or cogs to install.
.._downloader-command-cog-installversion:
""""""""""""""""""
cog installversion
""""""""""""""""""
**Syntax**
..code-block::none
[p]cog installversion <repo> <revision> <cogs...>
**Description**
Install a cog from the specified revision of given repo.
Revisions are "commit ids" that point to the point in the code when a specific change was made.
The latest revision can be found in the URL bar for any GitHub repo by `pressing "y" on that repo <https://docs.github.com/en/free-pro-team@latest/github/managing-files-in-a-repository/getting-permanent-links-to-files#press-y-to-permalink-to-a-file-in-a-specific-commit>`_.
Older revisions can be found in the URL bar by `viewing the commit history of any repo <https://cdn.discordapp.com/attachments/133251234164375552/775760247787749406/unknown.png>`_
This is the cog guide for the filter cog. You will
find detailed docs about usage and commands.
``[p]`` is considered as your prefix.
..note:: To use this cog, load it by typing this::
[p]load filter
.._filter-usage:
-----
Usage
-----
This cog is designed for "filtering" unwanted words and phrases from a server.
It provides tools to manage a list of words or sentences, and to customize automatic actions to be taken against users who use those words in channels or in their name/nickname.
This can be used to prevent inappropriate language, off-topic discussions, invite links, and more.
.._filter-commands:
--------
Commands
--------
.._filter-command-filter:
^^^^^^
filter
^^^^^^
..note:: |mod-lock|
**Syntax**
..code-block::none
[p]filter
**Description**
Base command to add or remove words from the server filter.
Use double quotes to add or remove sentences.
.._filter-command-filter-add:
""""""""""
filter add
""""""""""
**Syntax**
..code-block::none
[p]filter add [words...]
**Description**
Add words to the filter.
Use double quotes to add sentences.
Examples:
- ``[p]filter add word1 word2 word3``
- ``[p]filter add "This is a sentence"``
**Arguments:**
-``[words...]`` The words or sentences to filter.
.._filter-command-filter-channel:
""""""""""""""
filter channel
""""""""""""""
**Syntax**
..code-block::none
[p]filter channel
**Description**
Base command to add or remove words from the channel filter.
..note:: To use this cog, load it by typing this::
[p]load mod
.._mod-usage:
-----
Usage
-----
A range of highly customizable moderation tools used to protect your
guild from users who cannot follow the rules.
.._mod-commands:
--------
Commands
--------
.._mod-command-ban:
^^^
ban
^^^
..note:: |admin-lock|
**Syntax**
..code-block::none
[p]ban <user> [days] [reason]
**Description**
Ban a user from this server and optionally delete days of messages.
``days`` is the amount of days of messages to cleanup on ban.
**Arguments**
*``<user>``: The user to ban. |user-input|
*``[days]``: The amount of days of messages to cleanup on ban. This parameter defaults to the defaultdays setting, or no days if this has not yet been configured.
*``[reason]``: The reason why the user was banned (optional).
**Example Usage**
*``[p]ban 428675506947227648 7 Continued to spam after told to stop.``
This will ban the user with ID 428675506947227648 and it will delete 7 days worth of messages.
*``[p]ban @Twentysix 7 Continued to spam after told to stop.``
This will ban Twentysix and it will delete 7 days worth of messages.
A user ID should be provided if the user is not a member of this server.
If days is not a number, it's treated as the first word of the reason.
Minimum 0 days, maximum 7. If not specified, the defaultdays setting will be used instead.
.._mod-command-kick:
^^^^
kick
^^^^
..note:: |admin-lock|
**Syntax**
..code-block::none
[p]kick <member> [reason]
**Description**
Kick a user.
**Arguments**
*``<member>``: The member to kick. |member-input|
*``[reason]``: The reason why the user was kicked (optional).
**Example Usage**
*``[p]kick 428675506947227648 wanted to be kicked.``
This will kick the user with ID 428675506947227648 from the server.
*``[p]kick @Twentysix wanted to be kicked.``
This will kick Twentysix from the server.
If a reason is specified, it will be the reason that shows up
in the audit log.
.._mod-command-massban:
^^^^^^^
massban
^^^^^^^
..note:: |admin-lock|
**Syntax**
..code-block::none
[p]massban <user_ids...> [days] [reason]
..tip:: Alias: ``hackban``
**Description**
Mass bans user(s) from the server.
**Arguments**
*``<user_ids...>``: The users to ban. This must be a list of user IDs separated by spaces.
*``[days]``: The amount of days of messages to cleanup on massban.
*``[reason]``: The reason why these users were banned.
**Example Usage**
*``[p]massban 345628097929936898 57287406247743488 7 they broke all rules.``
This will ban all the added userids and delete 7 days worth of their messages.
.._mod-command-modset:
^^^^^^
modset
^^^^^^
..note:: |guildowner-lock|
**Syntax**
..code-block::none
[p]modset
**Description**
Manage server administration settings.
.._mod-command-modset-defaultdays:
""""""""""""""""""
modset defaultdays
""""""""""""""""""
**Syntax**
..code-block::none
[p]modset defaultdays [days=0]
**Description**
Set the default number of days worth of messages to be deleted when a user is banned.
The number of days must be between 0 and 7.
**Arguments**
*``[days=0]``: The default number of days of messages to be deleted when a user is banned.
..note:: This value must be between 0 and 7.
.._mod-command-modset-defaultduration:
""""""""""""""""""""""
modset defaultduration
""""""""""""""""""""""
**Syntax**
..code-block::none
[p]modset defaultduration <duration>
**Description**
Set the default time to be used when a user is tempbanned.
Accepts: seconds, minutes, hours, days, weeks
**Arguments**
*``<duration>``: The default duration for when a user is temporarily banned. Accepts seconds, minutes, hours, days or weeks.
**Example Usage**
*``[p]modset defaultduration 7d12h10m``
*``[p]modset defaultduration 7 days 12 hours 10 minutes``
.._mod-command-modset-deletenames:
""""""""""""""""""
modset deletenames
""""""""""""""""""
..note:: |owner-lock|
**Syntax**
..code-block::none
[p]modset deletenames [confirmation=False]
**Description**
Delete all stored usernames, global display names, and server nicknames.
**Arguments**
-``<confirmation>``: Whether to delete all stored usernames, global display names, and server nicknames. |bool-input|
.._mod-command-modset-deleterepeats:
""""""""""""""""""""
modset deleterepeats
""""""""""""""""""""
**Syntax**
..code-block::none
[p]modset deleterepeats [repeats]
**Description**
Enable auto-deletion of repeated messages.
**Arguments**
*``[repeats]``: The number of repeated messages needed before further messages are deleted.
..note:: Must be between 2 and 20. Set to -1 to disable this feature.
.._mod-command-modset-dm:
"""""""""
modset dm
"""""""""
**Syntax**
..code-block::none
[p]modset dm [enabled]
**Description**
Toggle whether a message should be sent to a user when they are kicked/banned.
If this option is enabled, the bot will attempt to DM the user with the guild name
and reason as to why they were kicked/banned.
**Arguments**
*``[enabled]``: Whether a message should be sent to a user when they are kicked/banned. |bool-input|
.._mod-command-modset-requirereason:
""""""""""""""""""""
modset requirereason
""""""""""""""""""""
**Syntax**
..code-block::none
[p]modset requirereason [enabled]
**Description**
Toggle whether a reason is required for mod actions.
If this is enabled, the bot will require a reason to be provided for all mod actions.
**Arguments**
*``[enabled]``: Whether a reason should be required when performing mod actions. |bool-input|
.._mod-command-modset-hierarchy:
""""""""""""""""
modset hierarchy
""""""""""""""""
**Syntax**
..code-block::none
[p]modset hierarchy
**Description**
Toggle role hierarchy check for mods and admins.
..warning:: Disabling this setting will allow mods to take actions on users above them in the role hierarchy!
This is enabled by default.
.._mod-command-modset-mentionspam:
""""""""""""""""""
modset mentionspam
""""""""""""""""""
**Syntax**
..code-block::none
[p]modset mentionspam
**Description**
Manage the automoderation settings for mentionspam.
.._mod-command-modset-mentionspam-ban:
""""""""""""""""""""""
modset mentionspam ban
""""""""""""""""""""""
**Syntax**
..code-block::none
[p]modset mentionspam ban <max_mentions>
**Description**
Set the autoban conditions for mention spam.
Users will be banned if they send any message which contains more than
``<max_mentions>`` mentions.
**Arguments**
*``<max_mentions>``: Must be 0 or greater. Set to 0 to disable this feature.
.._mod-command-modset-mentionspam-kick:
"""""""""""""""""""""""
modset mentionspam kick
"""""""""""""""""""""""
**Syntax**
..code-block::none
[p]modset mentionspam kick <max_mentions>
**Description**
Set the autokick conditions for mention spam.
Users will be kicked if they send any message which contains more than
``<max_mentions>`` mentions.
**Arguments**
*``<max_mentions>``: Must be 0 or greater. Set to 0 to disable this feature.
.._mod-command-modset-mentionspam-strict:
"""""""""""""""""""""""""
modset mentionspam strict
"""""""""""""""""""""""""
**Syntax**
..code-block::none
[p]modset mentionspam strict [enabled]
**Description**
Setting to account for duplicate mentions.
If enabled all mentions will count including duplicated mentions.
If disabled only unique mentions will count.
Use this command without any parameter to see the current setting.
**Arguments**
*``[enabled]``: Whether all mentions will count, including duplicated mentions. |bool-input|
.._mod-command-modset-mentionspam-warn:
"""""""""""""""""""""""
modset mentionspam warn
"""""""""""""""""""""""
**Syntax**
..code-block::none
[p]modset mentionspam warn <max_mentions>
**Description**
Sets the autowarn conditions for mention spam.
Users will be warned if they send any messages which contain more than
``<max_mentions>`` mentions.
**Arguments**
*``<max_mentions>``: Must be 0 or greater. Set to 0 to disable this feature.
.._mod-command-modset-reinvite:
"""""""""""""""
modset reinvite
"""""""""""""""
**Syntax**
..code-block::none
[p]modset reinvite
**Description**
Toggle whether an invite will be sent to a user when unbanned.
If this is True, the bot will attempt to create and send a single-use invite
to the newly-unbanned user.
.._mod-command-modset-showsettings:
"""""""""""""""""""
modset showsettings
"""""""""""""""""""
**Syntax**
..code-block::none
[p]modset showsettings
**Description**
Show the current server administration settings.
.._mod-command-modset-trackallnames:
""""""""""""""""""""
modset trackallnames
""""""""""""""""""""
..note:: |owner-lock|
**Syntax**
..code-block::none
[p]modset trackallnames [enabled]
**Description**
Toggle whether all name changes should be tracked.
Toggling this off also overrides the tracknicknames setting.
**Arguments**
*``[enabled]``: Whether all name changes should be tracked. |bool-input|
.._mod-command-modset-tracknicknames:
"""""""""""""""""""""
modset tracknicknames
"""""""""""""""""""""
**Syntax**
..code-block::none
[p]modset tracknicknames [enabled]
**Description**
Toggle whether server nickname changes should be tracked.
This setting will be overridden if trackallnames is disabled.
**Arguments**
*``[enabled]``: Whether all nickname changes should be tracked. |bool-input|
.._mod-command-movedeletedelay:
^^^^^^^^^^^^^^^
movedeletedelay
^^^^^^^^^^^^^^^
..note:: |owner-lock|
**Syntax**
..code-block::none
[p]movedeletedelay
**Description**
Move deletedelay settings to core
.._mod-command-moveignoredchannels:
^^^^^^^^^^^^^^^^^^^
moveignoredchannels
^^^^^^^^^^^^^^^^^^^
..note:: |owner-lock|
**Syntax**
..code-block::none
[p]moveignoredchannels
**Description**
Move ignored channels and servers to core
.._mod-command-names:
^^^^^
names
^^^^^
**Syntax**
..code-block::none
[p]names <member>
**Description**
Show previous usernames, global display names, and server nicknames of a member.
**Arguments**
*``<member>``: |member-input|
.._mod-command-rename:
^^^^^^
rename
^^^^^^
..note:: |admin-lock|
**Syntax**
..code-block::none
[p]rename <member> [nickname]
**Description**
Change a member's server nickname.
Leaving the nickname argument empty will remove it.
**Arguments**
*``<member>``: |member-input|
*``[nickname]``: The new server nickname for the member.
.._mod-command-slowmode:
^^^^^^^^
slowmode
^^^^^^^^
..note:: |admin-lock|
**Syntax**
..code-block::none
[p]slowmode [interval=0:00:00]
**Description**
Changes thread's or channel's slowmode setting.
Interval can be anything from 0 seconds to 6 hours.
Use without parameters to disable.
**Arguments**
*``[interval=0:00:00]``: The time for the thread's/channel's slowmode settings.
..note::
Interval can be anything from 0 seconds to 6 hours.
Use without parameters to disable.
.._mod-command-softban:
^^^^^^^
softban
^^^^^^^
..note:: |admin-lock|
**Syntax**
..code-block::none
[p]softban <member> [reason]
**Description**
Kick a member and delete 1 day's worth of their messages.
**Arguments**
*``<member>``: The member to softban. |member-input-quotes|
*``[reason]``: Reason for the kick (optional).
.._mod-command-tempban:
^^^^^^^
tempban
^^^^^^^
..note:: |admin-lock|
**Syntax**
..code-block::none
[p]tempban <member> [duration] [days] [reason]
**Description**
Temporarily ban a user from this server.
**Arguments**
*``<member>``: The member to temporarily ban. |member-input-quotes|
*``[duration]``: The amount of time the user should be banned for.
*``[days]``: The amount of days of messages to cleanup on tempban.
*``[reason]``: The reason for the tempban (optional).
**Example Usage**
*``[p]tempban @Twentysix Because I say so``
This will ban Twentysix for the default amount of time set by an administrator.
..note:: To use this cog, load it by typing this::
[p]load mutes
.._mutes-usage:
-----
Usage
-----
Mute users temporarily or indefinitely.
.._mutes-commands:
--------
Commands
--------
.._mutes-command-activemutes:
^^^^^^^^^^^
activemutes
^^^^^^^^^^^
..note:: |mod-lock|
**Syntax**
..code-block::none
[p]activemutes
**Description**
Displays active mutes on this server.
.._mutes-command-mute:
^^^^
mute
^^^^
..note:: |mod-lock|
**Syntax**
..code-block::none
[p]mute <users...> [time_and_reason]
**Description**
Mute users.
Examples:
*``[p]mute @member1 @member2 spam 5 hours``
*``[p]mute @member1 3 days``
**Arguments**
*``<users...>``: A space separated list of usernames, ID's, or mentions.
*``[time_and_reason]``: The time and reason. If no time is provided, the mute will use the default set time or indefinite if this hasn't been configured.
.._mutes-command-mutechannel:
^^^^^^^^^^^
mutechannel
^^^^^^^^^^^
..note:: |mod-lock|
**Syntax**
..code-block::none
[p]mutechannel <users...> [time_and_reason]
..tip:: Alias: ``channelmute``
**Description**
Mute a user in the current text channel (or in the parent of the current thread).
*``<users...>``: A space separated list of usernames, ID's, or mentions.
*``[time_and_reason]``: The time and reason. If no time is provided, the mute will use the default set time or indefinite if this hasn't been configured.
.._mutes-command-muteset:
^^^^^^^
muteset
^^^^^^^
**Syntax**
..code-block::none
[p]muteset
**Description**
Mute settings.
.._mutes-command-muteset-defaulttime:
"""""""""""""""""""
muteset defaulttime
"""""""""""""""""""
..note:: |mod-lock|
**Syntax**
..code-block::none
[p]muteset defaulttime [time]
..tip:: Alias: ``muteset time``
**Description**
Set the default mute time for the mute command.
If no time interval is provided this will be cleared.
**Arguments**
*``[time]``: The length of time for a default mute.
.._mutes-command-muteset-makerole:
""""""""""""""""
muteset makerole
""""""""""""""""
..note:: |admin-lock|
**Syntax**
..code-block::none
[p]muteset makerole <name>
**Description**
Create a Muted role.
This will create a role and apply overwrites to all available channels
to more easily setup muting a user.
If you already have a muted role created on the server use
``[p]muteset role ROLE_NAME_HERE``
**Arguments**
*``<name>``: The name of the muted role to create.
.._mutes-command-muteset-notification:
""""""""""""""""""""
muteset notification
""""""""""""""""""""
..note:: |admin-lock|
**Syntax**
..code-block::none
[p]muteset notification [channel]
**Description**
Set the notification channel for automatic unmute issues.
If no channel is provided this will be cleared and notifications
about issues when unmuting users will not be sent anywhere.
**Arguments**
*``[channel]``: The channel to receive unmute issue updates. |channel-input|
.._mutes-command-muteset-role:
""""""""""""
muteset role
""""""""""""
..note:: |admin-lock|
**Syntax**
..code-block::none
[p]muteset role [role]
**Description**
Sets the role to be applied when muting a user.
If no role is setup the bot will attempt to mute a user
by utilizing server timeouts.
..Note::
If no role is setup a user may be able to leave the server
and rejoin no longer being muted.
**Arguments**
*``[role]``: The role for muted users to receive. |role-input|
.._mutes-command-muteset-senddm:
""""""""""""""
muteset senddm
""""""""""""""
..note:: |mod-lock|
**Syntax**
..code-block::none
[p]muteset senddm <true_or_false>
**Description**
Set whether mute notifications should be sent to users in DMs.
**Arguments**
*``<true_or_false>``: Whether to enable or disable this setting, must provide ``true`` or ``false``.
.._mutes-command-muteset-settings:
""""""""""""""""
muteset settings
""""""""""""""""
..note:: |mod-lock|
**Syntax**
..code-block::none
[p]muteset settings
..tip:: Alias: ``muteset showsettings``
**Description**
Shows the current mute settings for this guild.
.._mutes-command-muteset-showmoderator:
"""""""""""""""""""""
muteset showmoderator
"""""""""""""""""""""
..note:: |mod-lock|
**Syntax**
..code-block::none
[p]muteset showmoderator <true_or_false>
**Description**
Decide whether the name of the moderator muting a user should be included in the DM to that user.
**Arguments**
*``<true_or_false>``: Whether to enable or disable this setting, must provide ``true`` or ``false``.
.._mutes-command-unmute:
^^^^^^
unmute
^^^^^^
..note:: |mod-lock|
**Syntax**
..code-block::none
[p]unmute <users...> [reason]
**Description**
Unmute users.
**Arguments**
*``<users...>``: A space separated list of usernames, ID's, or mentions.
*``[reason]``: The reason for the unmute.
.._mutes-command-unmutechannel:
^^^^^^^^^^^^^
unmutechannel
^^^^^^^^^^^^^
..note:: |mod-lock|
**Syntax**
..code-block::none
[p]unmutechannel <users...> [reason]
..tip:: Alias: ``channelunmute``
**Description**
Unmute a user in this channel (or in the parent of this thread).
**Arguments**
*``<users...>``: A space separated list of usernames, ID's, or mentions.
*``[reason]``: The reason for the unmute.
.._mutes-command-timeout:
^^^^^^^
timeout
^^^^^^^
..note:: |mod-lock|
**Syntax**
..code-block::none
[p]timeout <users...> [time_and_reason]
**Description**
Timeout users.
Examples:
*``[p]timeout @member1 @member2 spam 5 hours``
*``[p]timeout @member1 3 days``
**Arguments**
*``<users...>``: A space separated list of usernames, ID's, or mentions.
*``[time_and_reason]``: The time and reason. If no time is provided, the mute will use the default set time or give an error if this hasn't been configured.
.._mutes-command-voicemute:
^^^^^^^^^
voicemute
^^^^^^^^^
**Syntax**
..code-block::none
[p]voicemute <users...> [time_and_reason]
**Description**
Mute a user in their current voice channel.
Examples:
*``[p]voicemute @member1 @member2 spam 5 hours``
*``[p]voicemute @member1 3 days``
**Arguments**
*``<users...>``: A space separated list of usernames, ID's, or mentions.
*``[time_and_reason]``: The time and reason. If no time is provided, the mute will use the default set time or indefinite if this hasn't been configured.
.._mutes-command-voiceunmute:
^^^^^^^^^^^
voiceunmute
^^^^^^^^^^^
**Syntax**
..code-block::none
[p]voiceunmute <users...> [reason]
**Description**
Unmute a user in their current voice channel.
**Arguments**
*``<users...>``: A space separated list of usernames, ID's, or mentions.
This is the cog guide for the permissions cog. You will
find detailed docs about usage and commands.
``[p]`` is considered as your prefix.
..note:: To use this cog, load it by typing this::
[p]load permissions
.._permissions-usage:
-----
Usage
-----
Customise permissions for commands and cogs.
This cog extends the default permission model of the bot. By default, many commands are restricted based on what the command can do.
This cog allows you to refine some of those restrictions. You can allow wider or narrower access to most commands using it. You cannot, however, change the restrictions on owner-only commands.
When additional rules are set using this cog, those rules will be checked prior to checking for the default restrictions of the command.
Global rules (set by the owner) are checked first, then rules set for servers. If multiple global or server rules apply to the case, the order they are checked in is:
1. Rules about a user.
2. Rules about the voice channel a user is in.
3. Rules about the text channel or a parent of the thread a command was issued in.
4. Rules about a role the user has (The highest role they have with a rule will be used).
5. Rules about the server a user is in (Global rules only).
.._permissions-commands:
--------
Commands
--------
.._permissions-command-permissions:
^^^^^^^^^^^
permissions
^^^^^^^^^^^
**Syntax**
..code-block::none
[p]permissions
**Description**
Command permission management tools.
.._permissions-command-permissions-acl:
"""""""""""""""
permissions acl
"""""""""""""""
..note:: |guildowner-lock|
**Syntax**
..code-block::none
[p]permissions acl
**Description**
Manage permissions with YAML files.
..tip:: See :ref:`here <cog_permissions>` for more information with configuring these yaml files.
.._permissions-command-permissions-acl-getglobal:
"""""""""""""""""""""""""
permissions acl getglobal
"""""""""""""""""""""""""
..note:: |owner-lock|
**Syntax**
..code-block::none
[p]permissions acl getglobal
**Description**
Get a YAML file detailing all global rules.
.._permissions-command-permissions-acl-getserver:
"""""""""""""""""""""""""
permissions acl getserver
"""""""""""""""""""""""""
..note:: |guildowner-lock|
**Syntax**
..code-block::none
[p]permissions acl getserver
**Description**
Get a YAML file detailing all rules in this server.
.._permissions-command-permissions-acl-setglobal:
"""""""""""""""""""""""""
permissions acl setglobal
"""""""""""""""""""""""""
..note:: |owner-lock|
**Syntax**
..code-block::none
[p]permissions acl setglobal
**Description**
Set global rules with a YAML file.
..warning::
This will override reset *all* global rules
to the rules specified in the uploaded file.
This does not validate the names of commands and cogs before
setting the new rules.
.._permissions-command-permissions-acl-setserver:
"""""""""""""""""""""""""
permissions acl setserver
"""""""""""""""""""""""""
..note:: |guildowner-lock|
**Syntax**
..code-block::none
[p]permissions acl setserver
**Description**
Set rules for this server with a YAML file.
..warning::
This will override reset *all* rules in this
server to the rules specified in the uploaded file.
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.