13 Commits

Author SHA1 Message Date
jack1142
febca8ccbb
Migration to discord.py 2.0 (#5600)
* 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
2022-04-03 03:21:20 +02:00
MAX
b091f13df5
[Core] Changed prefix length to 40. (#5476)
* Update core_commands.py

* Docs yes facebook's metaverse

*jokes on me*

* meta

* forgot here

* Update core_commands.py

* Forgot here

* And forgot here
2021-12-25 04:14:16 +01:00
Ryan
bae85c35c1
[Docs] Correct set api examples to be consistent for Spotify (#5444)
* consistant usage

* switch audiodb to youtube

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2021-12-25 01:05:23 +01:00
Kowlin
0158dbab1d
Reorganize [p]set command group (#5432)
* Reorganised Set command group

* Moved custominfo

* Tox styling

* Make `set locale&regionalformat` 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>
2021-12-01 21:35:30 +01:00
palmtree5
6acdcdeae9
Move modlogset/bankset commands to core (#4486)
* 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>
2021-11-25 10:06:30 +01:00
PhenoM4n4n
e5b236fb1c
Add CommandConverter and CogConverter + add usage in Core (#5037)
* 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>
2021-09-07 23:43:29 +02:00
jack1142
86649e897f
Add [p]diagnoseissues command (#5243)
* 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
2021-09-05 19:01:46 +02:00
Vexed
f8664a4e8a
[Help] Let owners set menu reaction timeout (#5205)
* initial help reaction timeout with min 15, max 300

* slight wording change

* docs!

* aaa

* Suggestions from code review, thank Jack!

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2021-09-01 18:35:11 +02:00
El Laggron
dafffd969f
[Core] Limit server prefix length (#5117)
* Restrict prefix length

* Update docs
2021-06-12 17:41:29 +02:00
Lifeismana
2d8dbad63b
Docstring Fix (#5080)
* Missing word

* Make a little more sense
2021-05-25 17:58:10 +02:00
Kreusada
439033ea28
[Core] Improve regionalformat docstrings (#5055)
* [Docs] Update regionalformat docs

* [Core] Improve regionalformat docstrings
2021-05-19 14:47:29 +00:00
Kreusada
3ff2132570
[Core] Update [p]autoimmune remove docstring
* Merge pull request #5038

* update docstring

* update docs correspondingly
2021-05-19 15:10:31 +01:00
bobloy
0eaa0f494c
[Docs] Core Cog Guide (#4597)
* 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

(933aefd3ee9371b3b669cbdd2ac05f6b5532e4bb was the sphinx compatible update)

* Regenerate docs

* Black formatting

* Regenerate docs

* Adds docstring examples and arguments for multiple `embedset` subcommands

* Regenerate docs
2021-04-07 13:01:34 -04:00