Bump d.py version to 2.4.0 (#6401)

Co-authored-by: Ryan <yamikaitou@gmail.com>
This commit is contained in:
Jakub Kuczys
2024-07-10 20:36:47 +02:00
committed by GitHub
parent dd61b669b0
commit 2b1e603124
9 changed files with 173 additions and 36 deletions

View File

@@ -267,11 +267,13 @@ def parse_cli_flags(args):
)
parser.add_argument(
"--team-members-are-owners",
"--team-developers-are-owners",
action="store_true",
dest="use_team_features",
default=False,
help=(
"Treat application team members as owners. "
"Treat application team members as owners, if their team role is Owner, "
"Admin, or Developer. "
"This is off by default. Owners can load and run arbitrary code. "
"Do not enable if you would not trust all of your team members with "
"all of the data on the host machine."

View File

@@ -10,10 +10,12 @@ from discord.app_commands import (
AllChannels as AllChannels,
AppCommand as AppCommand,
AppCommandChannel as AppCommandChannel,
AppCommandContext as AppCommandContext,
AppCommandError as AppCommandError,
AppCommandGroup as AppCommandGroup,
AppCommandPermissions as AppCommandPermissions,
AppCommandThread as AppCommandThread,
AppInstallationType as AppInstallationType,
Argument as Argument,
BotMissingPermissions as BotMissingPermissions,
Command as Command,
@@ -45,6 +47,8 @@ from discord.app_commands import (
TranslationContextTypes as TranslationContextTypes,
TranslationError as TranslationError,
Translator as Translator,
allowed_contexts as allowed_contexts,
allowed_installs as allowed_installs,
autocomplete as autocomplete,
check as check,
CheckFailure as CheckFailure,
@@ -54,10 +58,14 @@ from discord.app_commands import (
context_menu as context_menu,
default_permissions as default_permissions,
describe as describe,
dm_only as dm_only,
guild_install as guild_install,
guild_only as guild_only,
guilds as guilds,
locale_str as locale_str,
private_channel_only as private_channel_only,
rename as rename,
user_install as user_install,
)
from . import checks as checks
@@ -66,10 +74,12 @@ __all__ = (
"AllChannels",
"AppCommand",
"AppCommandChannel",
"AppCommandContext",
"AppCommandError",
"AppCommandGroup",
"AppCommandPermissions",
"AppCommandThread",
"AppInstallationType",
"Argument",
"BotMissingPermissions",
"Command",
@@ -101,6 +111,8 @@ __all__ = (
"TranslationContextTypes",
"TranslationError",
"Translator",
"allowed_contexts",
"allowed_installs",
"autocomplete",
"check",
"CheckFailure",
@@ -110,9 +122,13 @@ __all__ = (
"context_menu",
"default_permissions",
"describe",
"dm_only",
"guild_install",
"guild_only",
"guilds",
"locale_str",
"private_channel_only",
"rename",
"user_install",
"checks",
)

View File

@@ -1257,7 +1257,11 @@ class Red(
def _setup_owners(self) -> None:
if self.application.team:
if self._use_team_features:
self.owner_ids.update(m.id for m in self.application.team.members)
self.owner_ids.update(
m.id
for m in self.application.team.members
if m.role in (discord.TeamMemberRole.admin, discord.TeamMemberRole.developer)
)
elif self._owner_id_overwrite is None:
self.owner_ids.add(self.application.owner.id)

View File

@@ -2848,21 +2848,12 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
ctx.bot.description = description
await ctx.tick()
@_set_bot.group(name="avatar", invoke_without_command=True)
@commands.is_owner()
async def _set_bot_avatar(self, ctx: commands.Context, url: str = None):
"""Sets [botname]'s avatar
Supports either an attachment or an image URL.
**Examples:**
- `[p]set bot avatar` - With an image attachment, this will set the avatar.
- `[p]set bot avatar` - Without an attachment, this will show the command help.
- `[p]set bot avatar https://links.flaree.xyz/k95` - Sets the avatar to the provided url.
**Arguments:**
- `[url]` - An image url to be used as an avatar. Leave blank when uploading an attachment.
"""
async def _set_bot_image(
self,
image_type: Literal["avatar", "banner"],
ctx: commands.Context,
url: Optional[str] = None,
):
if len(ctx.message.attachments) > 0: # Attachments take priority
data = await ctx.message.attachments[0].read()
elif url is not None:
@@ -2883,20 +2874,49 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
try:
async with ctx.typing():
await ctx.bot.user.edit(avatar=data)
if image_type == "avatar":
await ctx.bot.user.edit(avatar=data)
else:
await ctx.bot.user.edit(banner=data)
except discord.HTTPException:
await ctx.send(
_(
"Failed. Remember that you can edit my avatar "
"up to two times a hour. The URL or attachment "
"must be a valid image in either JPG, PNG, or GIF format."
if image_type == "avatar":
await ctx.send(
_(
"Failed. Remember that you can edit my avatar "
"up to two times a hour. The URL or attachment "
"must be a valid image in either JPG, PNG, GIF, or WEBP format."
)
)
else:
await ctx.send(
_(
"Failed. Remember that you can edit my banner "
"up to two times a hour. The URL or attachment "
"must be a valid image in either JPG, PNG, GIF, or WEBP format."
)
)
)
except ValueError:
await ctx.send(_("JPG / PNG / GIF format only."))
await ctx.send(_("JPG / PNG / GIF / WEBP format only."))
else:
await ctx.send(_("Done."))
@_set_bot.group(name="avatar", invoke_without_command=True)
@commands.is_owner()
async def _set_bot_avatar(self, ctx: commands.Context, url: str = None):
"""Sets [botname]'s avatar
Supports either an attachment or an image URL.
**Examples:**
- `[p]set bot avatar` - With an image attachment, this will set the avatar.
- `[p]set bot avatar` - Without an attachment, this will show the command help.
- `[p]set bot avatar https://avatars.githubusercontent.com/u/23690422` - Sets the avatar to the provided url.
**Arguments:**
- `[url]` - An image url to be used as an avatar. Leave blank when uploading an attachment.
"""
await self._set_bot_image("avatar", ctx, url)
@_set_bot_avatar.command(name="remove", aliases=["clear"])
@commands.is_owner()
async def _set_bot_avatar_remove(self, ctx: commands.Context):
@@ -2910,6 +2930,36 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
await ctx.bot.user.edit(avatar=None)
await ctx.send(_("Avatar removed."))
@_set_bot.group(name="banner", invoke_without_command=True)
@commands.is_owner()
async def _set_bot_banner(self, ctx: commands.Context, url: str = None):
"""Sets [botname]'s banner
Supports either an attachment or an image URL.
**Examples:**
- `[p]set bot banner` - With an image attachment, this will set the banner.
- `[p]set bot banner` - Without an attachment, this will show the command help.
- `[p]set bot banner https://opengraph.githubassets.com` - Sets the banner to the provided url.
**Arguments:**
- `[url]` - An image url to be used as an banner. Leave blank when uploading an attachment.
"""
await self._set_bot_image("banner", ctx, url)
@_set_bot_banner.command(name="remove", aliases=["clear"])
@commands.is_owner()
async def _set_bot_banner_remove(self, ctx: commands.Context):
"""
Removes [botname]'s banner.
**Example:**
- `[p]set bot banner remove`
"""
async with ctx.typing():
await ctx.bot.user.edit(banner=None)
await ctx.send(_("Banner removed."))
@_set_bot.command(name="username", aliases=["name"])
@commands.is_owner()
async def _set_bot_username(self, ctx: commands.Context, *, username: str):