mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-12-05 17:02:32 -05:00
Bump d.py version to 2.4.0 (#6401)
Co-authored-by: Ryan <yamikaitou@gmail.com>
This commit is contained in:
@@ -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."
|
||||
|
||||
@@ -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",
|
||||
)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user