mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-06 11:18:54 -05:00
* 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
441 lines
8.8 KiB
ReStructuredText
441 lines
8.8 KiB
ReStructuredText
.. _permissions:
|
|
|
|
===========
|
|
Permissions
|
|
===========
|
|
|
|
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.
|
|
|
|
.. _permissions-command-permissions-acl-updateglobal:
|
|
|
|
""""""""""""""""""""""""""""
|
|
permissions acl updateglobal
|
|
""""""""""""""""""""""""""""
|
|
|
|
.. note:: |owner-lock|
|
|
|
|
**Syntax**
|
|
|
|
.. code-block:: none
|
|
|
|
[p]permissions acl updateglobal
|
|
|
|
**Description**
|
|
|
|
Update global rules with a YAML file.
|
|
|
|
This won't touch any rules not specified in the YAML
|
|
file.
|
|
|
|
.. _permissions-command-permissions-acl-updateserver:
|
|
|
|
""""""""""""""""""""""""""""
|
|
permissions acl updateserver
|
|
""""""""""""""""""""""""""""
|
|
|
|
.. note:: |guildowner-lock|
|
|
|
|
**Syntax**
|
|
|
|
.. code-block:: none
|
|
|
|
[p]permissions acl updateserver
|
|
|
|
**Description**
|
|
|
|
Update rules for this server with a YAML file.
|
|
|
|
This won't touch any rules not specified in the YAML
|
|
file.
|
|
|
|
.. _permissions-command-permissions-acl-yamlexample:
|
|
|
|
"""""""""""""""""""""""""""
|
|
permissions acl yamlexample
|
|
"""""""""""""""""""""""""""
|
|
|
|
**Syntax**
|
|
|
|
.. code-block:: none
|
|
|
|
[p]permissions acl yamlexample
|
|
|
|
**Description**
|
|
|
|
Sends an example of the yaml layout for permissions
|
|
|
|
.. _permissions-command-permissions-addglobalrule:
|
|
|
|
"""""""""""""""""""""""""
|
|
permissions addglobalrule
|
|
"""""""""""""""""""""""""
|
|
|
|
.. note:: |owner-lock|
|
|
|
|
**Syntax**
|
|
|
|
.. code-block:: none
|
|
|
|
[p]permissions addglobalrule <allow_or_deny> <cog_or_command> <who_or_what...>
|
|
|
|
**Description**
|
|
|
|
Add a global rule to a cog or command.
|
|
|
|
**Arguments**
|
|
|
|
* ``<allow_or_deny>``: This should be one of "allow" or "deny".
|
|
* ``<cog_or_command>``: The cog or command to add the rule to. This is case sensitive.
|
|
* ``<who_or_what...>``: One or more users, channels or roles the rule is for.
|
|
|
|
.. _permissions-command-permissions-addserverrule:
|
|
|
|
"""""""""""""""""""""""""
|
|
permissions addserverrule
|
|
"""""""""""""""""""""""""
|
|
|
|
.. note:: |guildowner-lock|
|
|
|
|
**Syntax**
|
|
|
|
.. code-block:: none
|
|
|
|
[p]permissions addserverrule <allow_or_deny> <cog_or_command> <who_or_what...>
|
|
|
|
**Description**
|
|
|
|
Add a rule to a cog or command in this server.
|
|
|
|
**Arguments**
|
|
|
|
* ``<allow_or_deny>``: This should be one of "allow" or "deny".
|
|
* ``<cog_or_command>``: The cog or command to add the rule to. This is case sensitive.
|
|
* ``<who_or_what...>``: One or more users, channels or roles the rule is for.
|
|
|
|
.. _permissions-command-permissions-canrun:
|
|
|
|
""""""""""""""""""
|
|
permissions canrun
|
|
""""""""""""""""""
|
|
|
|
**Syntax**
|
|
|
|
.. code-block:: none
|
|
|
|
[p]permissions canrun <user> <command>
|
|
|
|
**Description**
|
|
|
|
Check if a user can run a command.
|
|
|
|
This will take the current context into account, such as the
|
|
server and text channel.
|
|
|
|
**Arguments**
|
|
|
|
* ``<user>``: The user to check permissions for.
|
|
* ``<command>``: The command to check whether the user can run it or not.
|
|
|
|
.. _permissions-command-permissions-clearglobalrules:
|
|
|
|
""""""""""""""""""""""""""""
|
|
permissions clearglobalrules
|
|
""""""""""""""""""""""""""""
|
|
|
|
.. note:: |owner-lock|
|
|
|
|
**Syntax**
|
|
|
|
.. code-block:: none
|
|
|
|
[p]permissions clearglobalrules
|
|
|
|
**Description**
|
|
|
|
Reset all global rules.
|
|
|
|
.. _permissions-command-permissions-clearserverrules:
|
|
|
|
""""""""""""""""""""""""""""
|
|
permissions clearserverrules
|
|
""""""""""""""""""""""""""""
|
|
|
|
.. note:: |guildowner-lock|
|
|
|
|
**Syntax**
|
|
|
|
.. code-block:: none
|
|
|
|
[p]permissions clearserverrules
|
|
|
|
**Description**
|
|
|
|
Reset all rules in this server.
|
|
|
|
.. _permissions-command-permissions-explain:
|
|
|
|
"""""""""""""""""""
|
|
permissions explain
|
|
"""""""""""""""""""
|
|
|
|
**Syntax**
|
|
|
|
.. code-block:: none
|
|
|
|
[p]permissions explain
|
|
|
|
**Description**
|
|
|
|
Explain how permissions works.
|
|
|
|
.. _permissions-command-permissions-removeglobalrule:
|
|
|
|
""""""""""""""""""""""""""""
|
|
permissions removeglobalrule
|
|
""""""""""""""""""""""""""""
|
|
|
|
.. note:: |owner-lock|
|
|
|
|
**Syntax**
|
|
|
|
.. code-block:: none
|
|
|
|
[p]permissions removeglobalrule <cog_or_command> <who_or_what...>
|
|
|
|
**Description**
|
|
|
|
Remove a global rule from a command.
|
|
|
|
**Arguments**
|
|
|
|
* ``<cog_or_command>``: The cog or command to remove the rule from. This is case sensitive.
|
|
* ``<who_or_what...>``: One or more users, channels or roles the rule is for.
|
|
|
|
.. _permissions-command-permissions-removeserverrule:
|
|
|
|
""""""""""""""""""""""""""""
|
|
permissions removeserverrule
|
|
""""""""""""""""""""""""""""
|
|
|
|
.. note:: |guildowner-lock|
|
|
|
|
**Syntax**
|
|
|
|
.. code-block:: none
|
|
|
|
[p]permissions removeserverrule <cog_or_command> <who_or_what...>
|
|
|
|
**Description**
|
|
|
|
Remove a server rule from a command.
|
|
|
|
**Arguments**
|
|
|
|
* ``<cog_or_command>``: The cog or command to remove the rule from. This is case sensitive.
|
|
* ``<who_or_what...>``: One or more users, channels or roles the rule is for.
|
|
|
|
.. _permissions-command-permissions-setdefaultglobalrule:
|
|
|
|
""""""""""""""""""""""""""""""""
|
|
permissions setdefaultglobalrule
|
|
""""""""""""""""""""""""""""""""
|
|
|
|
.. note:: |owner-lock|
|
|
|
|
**Syntax**
|
|
|
|
.. code-block:: none
|
|
|
|
[p]permissions setdefaultglobalrule <allow_or_deny> <cog_or_command>
|
|
|
|
**Description**
|
|
|
|
Set the default global rule for a command or a cog.
|
|
|
|
This is the rule a command will default to when no other rule
|
|
is found.
|
|
|
|
**Arguments**
|
|
|
|
* ``<cog_or_command>``: The cog or command to add the rule to. This is case sensitive.
|
|
* ``<who_or_what...>``: One or more users, channels or roles the rule is for.
|
|
|
|
.. _permissions-command-permissions-setdefaultserverrule:
|
|
|
|
""""""""""""""""""""""""""""""""
|
|
permissions setdefaultserverrule
|
|
""""""""""""""""""""""""""""""""
|
|
|
|
.. note:: |guildowner-lock|
|
|
|
|
**Syntax**
|
|
|
|
.. code-block:: none
|
|
|
|
[p]permissions setdefaultserverrule <allow_or_deny> <cog_or_command>
|
|
|
|
**Description**
|
|
|
|
Set the default rule for a command or a cog in this server.
|
|
|
|
This is the rule a command will default to when no other rule
|
|
is found.
|
|
|
|
**Arguments**
|
|
|
|
* ``<cog_or_command>``: The cog or command to add the rule to. This is case sensitive.
|
|
* ``<who_or_what...>``: One or more users, channels or roles the rule is for.
|