mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-08-27 21:45:27 +00:00
Reformat entire project with ruff instead of black
This commit is contained in:
parent
3ef6272e07
commit
44a44e938f
6
.github/workflows/lint.yml
vendored
6
.github/workflows/lint.yml
vendored
@ -27,7 +27,7 @@ jobs:
|
||||
- name: Install dependencies
|
||||
id: install-deps
|
||||
run: |
|
||||
python -m pip install --upgrade pip setuptools wheel black==22.6 requests
|
||||
python -m pip install --upgrade pip setuptools wheel ruff==0.12 requests
|
||||
pip install -U -r requirements.txt
|
||||
|
||||
- name: Setup node.js
|
||||
@ -42,7 +42,7 @@ jobs:
|
||||
warnings: false
|
||||
no-comments: ${{ matrix.python-version != '3.x' }}
|
||||
|
||||
- name: Run black
|
||||
- name: Run ruff
|
||||
if: ${{ always() && steps.install-deps.outcome == 'success' }}
|
||||
run: |
|
||||
black --check discord examples
|
||||
ruff format --check discord examples
|
||||
|
@ -81,7 +81,7 @@ class VersionInfo(NamedTuple):
|
||||
major: int
|
||||
minor: int
|
||||
micro: int
|
||||
releaselevel: Literal["alpha", "beta", "candidate", "final"]
|
||||
releaselevel: Literal['alpha', 'beta', 'candidate', 'final']
|
||||
serial: int
|
||||
|
||||
|
||||
|
@ -133,7 +133,7 @@ async def setup(bot):
|
||||
await bot.add_cog({name}(bot))
|
||||
'''
|
||||
|
||||
_cog_extras = '''
|
||||
_cog_extras = """
|
||||
async def cog_load(self):
|
||||
# loading logic goes here
|
||||
pass
|
||||
@ -170,7 +170,7 @@ _cog_extras = '''
|
||||
# called after a command is called here
|
||||
pass
|
||||
|
||||
'''
|
||||
"""
|
||||
|
||||
|
||||
# certain file names and directory names are forbidden
|
||||
|
@ -116,7 +116,7 @@ if TYPE_CHECKING:
|
||||
|
||||
PartialMessageableChannel = Union[TextChannel, VoiceChannel, StageChannel, Thread, DMChannel, PartialMessageable]
|
||||
MessageableChannel = Union[PartialMessageableChannel, GroupChannel]
|
||||
SnowflakeTime = Union["Snowflake", datetime]
|
||||
SnowflakeTime = Union['Snowflake', datetime]
|
||||
|
||||
class PinnedMessage(Message):
|
||||
pinned_at: datetime
|
||||
@ -140,7 +140,7 @@ class _PinsIterator:
|
||||
|
||||
def __await__(self) -> Generator[Any, None, List[PinnedMessage]]:
|
||||
warnings.warn(
|
||||
"`await <channel>.pins()` is deprecated; use `async for message in <channel>.pins()` instead.",
|
||||
'`await <channel>.pins()` is deprecated; use `async for message in <channel>.pins()` instead.',
|
||||
DeprecationWarning,
|
||||
stacklevel=2,
|
||||
)
|
||||
@ -423,8 +423,7 @@ class GuildChannel:
|
||||
|
||||
if TYPE_CHECKING:
|
||||
|
||||
def __init__(self, *, state: ConnectionState, guild: Guild, data: GuildChannelPayload):
|
||||
...
|
||||
def __init__(self, *, state: ConnectionState, guild: Guild, data: GuildChannelPayload): ...
|
||||
|
||||
def __str__(self) -> str:
|
||||
return self.name
|
||||
@ -794,7 +793,6 @@ class GuildChannel:
|
||||
|
||||
default = self.guild.default_role
|
||||
if default is None:
|
||||
|
||||
if self._state.self_id == obj.id:
|
||||
return Permissions._user_installed_permissions(in_guild=True)
|
||||
else:
|
||||
@ -907,8 +905,7 @@ class GuildChannel:
|
||||
*,
|
||||
overwrite: Optional[Union[PermissionOverwrite, _Undefined]] = ...,
|
||||
reason: Optional[str] = ...,
|
||||
) -> None:
|
||||
...
|
||||
) -> None: ...
|
||||
|
||||
@overload
|
||||
async def set_permissions(
|
||||
@ -917,8 +914,7 @@ class GuildChannel:
|
||||
*,
|
||||
reason: Optional[str] = ...,
|
||||
**permissions: Unpack[_PermissionOverwriteKwargs],
|
||||
) -> None:
|
||||
...
|
||||
) -> None: ...
|
||||
|
||||
async def set_permissions(
|
||||
self,
|
||||
@ -1109,8 +1105,7 @@ class GuildChannel:
|
||||
category: Optional[Snowflake] = MISSING,
|
||||
sync_permissions: bool = MISSING,
|
||||
reason: Optional[str] = MISSING,
|
||||
) -> None:
|
||||
...
|
||||
) -> None: ...
|
||||
|
||||
@overload
|
||||
async def move(
|
||||
@ -1121,8 +1116,7 @@ class GuildChannel:
|
||||
category: Optional[Snowflake] = MISSING,
|
||||
sync_permissions: bool = MISSING,
|
||||
reason: str = MISSING,
|
||||
) -> None:
|
||||
...
|
||||
) -> None: ...
|
||||
|
||||
@overload
|
||||
async def move(
|
||||
@ -1133,8 +1127,7 @@ class GuildChannel:
|
||||
category: Optional[Snowflake] = MISSING,
|
||||
sync_permissions: bool = MISSING,
|
||||
reason: str = MISSING,
|
||||
) -> None:
|
||||
...
|
||||
) -> None: ...
|
||||
|
||||
@overload
|
||||
async def move(
|
||||
@ -1145,8 +1138,7 @@ class GuildChannel:
|
||||
category: Optional[Snowflake] = MISSING,
|
||||
sync_permissions: bool = MISSING,
|
||||
reason: str = MISSING,
|
||||
) -> None:
|
||||
...
|
||||
) -> None: ...
|
||||
|
||||
async def move(self, **kwargs: Any) -> None:
|
||||
"""|coro|
|
||||
@ -1428,8 +1420,7 @@ class Messageable:
|
||||
view: LayoutView,
|
||||
suppress_embeds: bool = ...,
|
||||
silent: bool = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def send(
|
||||
@ -1444,8 +1435,7 @@ class Messageable:
|
||||
view: LayoutView,
|
||||
suppress_embeds: bool = ...,
|
||||
silent: bool = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def send(
|
||||
@ -1465,8 +1455,7 @@ class Messageable:
|
||||
suppress_embeds: bool = ...,
|
||||
silent: bool = ...,
|
||||
poll: Poll = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def send(
|
||||
@ -1486,8 +1475,7 @@ class Messageable:
|
||||
suppress_embeds: bool = ...,
|
||||
silent: bool = ...,
|
||||
poll: Poll = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def send(
|
||||
@ -1507,8 +1495,7 @@ class Messageable:
|
||||
suppress_embeds: bool = ...,
|
||||
silent: bool = ...,
|
||||
poll: Poll = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def send(
|
||||
@ -1528,8 +1515,7 @@ class Messageable:
|
||||
suppress_embeds: bool = ...,
|
||||
silent: bool = ...,
|
||||
poll: Poll = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
async def send(
|
||||
self,
|
||||
@ -2029,7 +2015,7 @@ class Messageable:
|
||||
if limit is None:
|
||||
raise ValueError('history does not support around with limit=None')
|
||||
if limit > 101:
|
||||
raise ValueError("history max limit 101 when specifying around parameter")
|
||||
raise ValueError('history max limit 101 when specifying around parameter')
|
||||
|
||||
# Strange Discord quirk
|
||||
limit = 100 if limit == 101 else limit
|
||||
|
@ -861,13 +861,11 @@ ActivityTypes = Union[Activity, Game, CustomActivity, Streaming, Spotify]
|
||||
|
||||
|
||||
@overload
|
||||
def create_activity(data: ActivityPayload, state: ConnectionState) -> ActivityTypes:
|
||||
...
|
||||
def create_activity(data: ActivityPayload, state: ConnectionState) -> ActivityTypes: ...
|
||||
|
||||
|
||||
@overload
|
||||
def create_activity(data: None, state: ConnectionState) -> None:
|
||||
...
|
||||
def create_activity(data: None, state: ConnectionState) -> None: ...
|
||||
|
||||
|
||||
def create_activity(data: Optional[ActivityPayload], state: ConnectionState) -> Optional[ActivityTypes]:
|
||||
|
@ -327,7 +327,7 @@ def has_permissions(**perms: Unpack[_PermissionsKwargs]) -> Callable[[T], T]:
|
||||
|
||||
invalid = perms.keys() - Permissions.VALID_FLAGS.keys()
|
||||
if invalid:
|
||||
raise TypeError(f"Invalid permission(s): {', '.join(invalid)}")
|
||||
raise TypeError(f'Invalid permission(s): {", ".join(invalid)}')
|
||||
|
||||
def predicate(interaction: Interaction) -> bool:
|
||||
permissions = interaction.permissions
|
||||
@ -354,7 +354,7 @@ def bot_has_permissions(**perms: Unpack[_PermissionsKwargs]) -> Callable[[T], T]
|
||||
|
||||
invalid = set(perms) - set(Permissions.VALID_FLAGS)
|
||||
if invalid:
|
||||
raise TypeError(f"Invalid permission(s): {', '.join(invalid)}")
|
||||
raise TypeError(f'Invalid permission(s): {", ".join(invalid)}')
|
||||
|
||||
def predicate(interaction: Interaction) -> bool:
|
||||
permissions = interaction.app_permissions
|
||||
@ -371,7 +371,6 @@ def bot_has_permissions(**perms: Unpack[_PermissionsKwargs]) -> Callable[[T], T]
|
||||
def _create_cooldown_decorator(
|
||||
key: CooldownFunction[Hashable], factory: CooldownFunction[Optional[Cooldown]]
|
||||
) -> Callable[[T], T]:
|
||||
|
||||
mapping: Dict[Any, Cooldown] = {}
|
||||
|
||||
async def get_bucket(
|
||||
|
@ -219,7 +219,7 @@ def validate_context_menu_name(name: str) -> str:
|
||||
|
||||
|
||||
def validate_auto_complete_callback(
|
||||
callback: AutocompleteCallback[GroupT, ChoiceT]
|
||||
callback: AutocompleteCallback[GroupT, ChoiceT],
|
||||
) -> AutocompleteCallback[GroupT, ChoiceT]:
|
||||
# This function needs to ensure the following is true:
|
||||
# If self.foo is passed then don't pass command.binding to the callback
|
||||
@ -1491,9 +1491,9 @@ class Group:
|
||||
__discord_app_commands_installation_types__: Optional[AppInstallationType] = MISSING
|
||||
__discord_app_commands_default_permissions__: Optional[Permissions] = MISSING
|
||||
__discord_app_commands_has_module__: bool = False
|
||||
__discord_app_commands_error_handler__: Optional[
|
||||
Callable[[Interaction, AppCommandError], Coroutine[Any, Any, None]]
|
||||
] = None
|
||||
__discord_app_commands_error_handler__: Optional[Callable[[Interaction, AppCommandError], Coroutine[Any, Any, None]]] = (
|
||||
None
|
||||
)
|
||||
|
||||
def __init_subclass__(
|
||||
cls,
|
||||
@ -2484,13 +2484,11 @@ def check(predicate: Check) -> Callable[[T], T]:
|
||||
|
||||
|
||||
@overload
|
||||
def guild_only(func: None = ...) -> Callable[[T], T]:
|
||||
...
|
||||
def guild_only(func: None = ...) -> Callable[[T], T]: ...
|
||||
|
||||
|
||||
@overload
|
||||
def guild_only(func: T) -> T:
|
||||
...
|
||||
def guild_only(func: T) -> T: ...
|
||||
|
||||
|
||||
def guild_only(func: Optional[T] = None) -> Union[T, Callable[[T], T]]:
|
||||
@ -2541,13 +2539,11 @@ def guild_only(func: Optional[T] = None) -> Union[T, Callable[[T], T]]:
|
||||
|
||||
|
||||
@overload
|
||||
def private_channel_only(func: None = ...) -> Callable[[T], T]:
|
||||
...
|
||||
def private_channel_only(func: None = ...) -> Callable[[T], T]: ...
|
||||
|
||||
|
||||
@overload
|
||||
def private_channel_only(func: T) -> T:
|
||||
...
|
||||
def private_channel_only(func: T) -> T: ...
|
||||
|
||||
|
||||
def private_channel_only(func: Optional[T] = None) -> Union[T, Callable[[T], T]]:
|
||||
@ -2598,13 +2594,11 @@ def private_channel_only(func: Optional[T] = None) -> Union[T, Callable[[T], T]]
|
||||
|
||||
|
||||
@overload
|
||||
def dm_only(func: None = ...) -> Callable[[T], T]:
|
||||
...
|
||||
def dm_only(func: None = ...) -> Callable[[T], T]: ...
|
||||
|
||||
|
||||
@overload
|
||||
def dm_only(func: T) -> T:
|
||||
...
|
||||
def dm_only(func: T) -> T: ...
|
||||
|
||||
|
||||
def dm_only(func: Optional[T] = None) -> Union[T, Callable[[T], T]]:
|
||||
@ -2697,13 +2691,11 @@ def allowed_contexts(guilds: bool = MISSING, dms: bool = MISSING, private_channe
|
||||
|
||||
|
||||
@overload
|
||||
def guild_install(func: None = ...) -> Callable[[T], T]:
|
||||
...
|
||||
def guild_install(func: None = ...) -> Callable[[T], T]: ...
|
||||
|
||||
|
||||
@overload
|
||||
def guild_install(func: T) -> T:
|
||||
...
|
||||
def guild_install(func: T) -> T: ...
|
||||
|
||||
|
||||
def guild_install(func: Optional[T] = None) -> Union[T, Callable[[T], T]]:
|
||||
@ -2748,13 +2740,11 @@ def guild_install(func: Optional[T] = None) -> Union[T, Callable[[T], T]]:
|
||||
|
||||
|
||||
@overload
|
||||
def user_install(func: None = ...) -> Callable[[T], T]:
|
||||
...
|
||||
def user_install(func: None = ...) -> Callable[[T], T]: ...
|
||||
|
||||
|
||||
@overload
|
||||
def user_install(func: T) -> T:
|
||||
...
|
||||
def user_install(func: T) -> T: ...
|
||||
|
||||
|
||||
def user_install(func: Optional[T] = None) -> Union[T, Callable[[T], T]]:
|
||||
|
@ -181,7 +181,7 @@ class Namespace:
|
||||
guild_id = interaction.guild_id
|
||||
guild = interaction.guild
|
||||
type = AppCommandOptionType.user.value
|
||||
for (user_id, user_data) in resolved.get('users', {}).items():
|
||||
for user_id, user_data in resolved.get('users', {}).items():
|
||||
try:
|
||||
member_data = members[user_id]
|
||||
except KeyError:
|
||||
@ -203,7 +203,7 @@ class Namespace:
|
||||
)
|
||||
|
||||
type = AppCommandOptionType.channel.value
|
||||
for (channel_id, channel_data) in resolved.get('channels', {}).items():
|
||||
for channel_id, channel_data in resolved.get('channels', {}).items():
|
||||
key = ResolveKey(id=channel_id, type=type)
|
||||
if channel_data['type'] in (10, 11, 12):
|
||||
# The guild ID can't be none in this case
|
||||
@ -220,7 +220,7 @@ class Namespace:
|
||||
}
|
||||
)
|
||||
|
||||
for (message_id, message_data) in resolved.get('messages', {}).items():
|
||||
for message_id, message_data in resolved.get('messages', {}).items():
|
||||
channel_id = int(message_data['channel_id'])
|
||||
if guild is None:
|
||||
channel = PartialMessageable(state=state, guild_id=guild_id, id=channel_id)
|
||||
|
@ -76,38 +76,32 @@ class TranslationContext(Generic[_L, _D]):
|
||||
@overload
|
||||
def __init__(
|
||||
self, location: Literal[TranslationContextLocation.command_name], data: Union[Command[Any, ..., Any], ContextMenu]
|
||||
) -> None:
|
||||
...
|
||||
) -> None: ...
|
||||
|
||||
@overload
|
||||
def __init__(
|
||||
self, location: Literal[TranslationContextLocation.command_description], data: Command[Any, ..., Any]
|
||||
) -> None:
|
||||
...
|
||||
) -> None: ...
|
||||
|
||||
@overload
|
||||
def __init__(
|
||||
self,
|
||||
location: Literal[TranslationContextLocation.group_name, TranslationContextLocation.group_description],
|
||||
data: Group,
|
||||
) -> None:
|
||||
...
|
||||
) -> None: ...
|
||||
|
||||
@overload
|
||||
def __init__(
|
||||
self,
|
||||
location: Literal[TranslationContextLocation.parameter_name, TranslationContextLocation.parameter_description],
|
||||
data: Parameter,
|
||||
) -> None:
|
||||
...
|
||||
) -> None: ...
|
||||
|
||||
@overload
|
||||
def __init__(self, location: Literal[TranslationContextLocation.choice_name], data: Choice[Any]) -> None:
|
||||
...
|
||||
def __init__(self, location: Literal[TranslationContextLocation.choice_name], data: Choice[Any]) -> None: ...
|
||||
|
||||
@overload
|
||||
def __init__(self, location: Literal[TranslationContextLocation.other], data: Any) -> None:
|
||||
...
|
||||
def __init__(self, location: Literal[TranslationContextLocation.other], data: Any) -> None: ...
|
||||
|
||||
def __init__(self, location: _L, data: _D) -> None: # type: ignore # pyright doesn't like the overloads
|
||||
self.location: _L = location
|
||||
|
@ -419,8 +419,7 @@ class CommandTree(Generic[ClientT]):
|
||||
*,
|
||||
guild: Optional[Snowflake] = ...,
|
||||
type: Literal[AppCommandType.message, AppCommandType.user],
|
||||
) -> Optional[ContextMenu]:
|
||||
...
|
||||
) -> Optional[ContextMenu]: ...
|
||||
|
||||
@overload
|
||||
def remove_command(
|
||||
@ -430,8 +429,7 @@ class CommandTree(Generic[ClientT]):
|
||||
*,
|
||||
guild: Optional[Snowflake] = ...,
|
||||
type: Literal[AppCommandType.chat_input] = ...,
|
||||
) -> Optional[Union[Command[Any, ..., Any], Group]]:
|
||||
...
|
||||
) -> Optional[Union[Command[Any, ..., Any], Group]]: ...
|
||||
|
||||
@overload
|
||||
def remove_command(
|
||||
@ -441,8 +439,7 @@ class CommandTree(Generic[ClientT]):
|
||||
*,
|
||||
guild: Optional[Snowflake] = ...,
|
||||
type: AppCommandType,
|
||||
) -> Optional[Union[Command[Any, ..., Any], ContextMenu, Group]]:
|
||||
...
|
||||
) -> Optional[Union[Command[Any, ..., Any], ContextMenu, Group]]: ...
|
||||
|
||||
def remove_command(
|
||||
self,
|
||||
@ -539,8 +536,7 @@ class CommandTree(Generic[ClientT]):
|
||||
*,
|
||||
guild: Optional[Snowflake] = ...,
|
||||
type: Literal[AppCommandType.message, AppCommandType.user],
|
||||
) -> Optional[ContextMenu]:
|
||||
...
|
||||
) -> Optional[ContextMenu]: ...
|
||||
|
||||
@overload
|
||||
def get_command(
|
||||
@ -550,8 +546,7 @@ class CommandTree(Generic[ClientT]):
|
||||
*,
|
||||
guild: Optional[Snowflake] = ...,
|
||||
type: Literal[AppCommandType.chat_input] = ...,
|
||||
) -> Optional[Union[Command[Any, ..., Any], Group]]:
|
||||
...
|
||||
) -> Optional[Union[Command[Any, ..., Any], Group]]: ...
|
||||
|
||||
@overload
|
||||
def get_command(
|
||||
@ -561,8 +556,7 @@ class CommandTree(Generic[ClientT]):
|
||||
*,
|
||||
guild: Optional[Snowflake] = ...,
|
||||
type: AppCommandType,
|
||||
) -> Optional[Union[Command[Any, ..., Any], ContextMenu, Group]]:
|
||||
...
|
||||
) -> Optional[Union[Command[Any, ..., Any], ContextMenu, Group]]: ...
|
||||
|
||||
def get_command(
|
||||
self,
|
||||
@ -613,8 +607,7 @@ class CommandTree(Generic[ClientT]):
|
||||
*,
|
||||
guild: Optional[Snowflake] = ...,
|
||||
type: Literal[AppCommandType.message, AppCommandType.user],
|
||||
) -> List[ContextMenu]:
|
||||
...
|
||||
) -> List[ContextMenu]: ...
|
||||
|
||||
@overload
|
||||
def get_commands(
|
||||
@ -622,8 +615,7 @@ class CommandTree(Generic[ClientT]):
|
||||
*,
|
||||
guild: Optional[Snowflake] = ...,
|
||||
type: Literal[AppCommandType.chat_input],
|
||||
) -> List[Union[Command[Any, ..., Any], Group]]:
|
||||
...
|
||||
) -> List[Union[Command[Any, ..., Any], Group]]: ...
|
||||
|
||||
@overload
|
||||
def get_commands(
|
||||
@ -631,8 +623,7 @@ class CommandTree(Generic[ClientT]):
|
||||
*,
|
||||
guild: Optional[Snowflake] = ...,
|
||||
type: AppCommandType,
|
||||
) -> Union[List[Union[Command[Any, ..., Any], Group]], List[ContextMenu]]:
|
||||
...
|
||||
) -> Union[List[Union[Command[Any, ..., Any], Group]], List[ContextMenu]]: ...
|
||||
|
||||
@overload
|
||||
def get_commands(
|
||||
@ -640,8 +631,7 @@ class CommandTree(Generic[ClientT]):
|
||||
*,
|
||||
guild: Optional[Snowflake] = ...,
|
||||
type: Optional[AppCommandType] = ...,
|
||||
) -> List[Union[Command[Any, ..., Any], Group, ContextMenu]]:
|
||||
...
|
||||
) -> List[Union[Command[Any, ..., Any], Group, ContextMenu]]: ...
|
||||
|
||||
def get_commands(
|
||||
self,
|
||||
@ -693,8 +683,7 @@ class CommandTree(Generic[ClientT]):
|
||||
*,
|
||||
guild: Optional[Snowflake] = ...,
|
||||
type: Literal[AppCommandType.message, AppCommandType.user],
|
||||
) -> Generator[ContextMenu, None, None]:
|
||||
...
|
||||
) -> Generator[ContextMenu, None, None]: ...
|
||||
|
||||
@overload
|
||||
def walk_commands(
|
||||
@ -702,8 +691,7 @@ class CommandTree(Generic[ClientT]):
|
||||
*,
|
||||
guild: Optional[Snowflake] = ...,
|
||||
type: Literal[AppCommandType.chat_input] = ...,
|
||||
) -> Generator[Union[Command[Any, ..., Any], Group], None, None]:
|
||||
...
|
||||
) -> Generator[Union[Command[Any, ..., Any], Group], None, None]: ...
|
||||
|
||||
@overload
|
||||
def walk_commands(
|
||||
@ -711,8 +699,7 @@ class CommandTree(Generic[ClientT]):
|
||||
*,
|
||||
guild: Optional[Snowflake] = ...,
|
||||
type: AppCommandType,
|
||||
) -> Union[Generator[Union[Command[Any, ..., Any], Group], None, None], Generator[ContextMenu, None, None]]:
|
||||
...
|
||||
) -> Union[Generator[Union[Command[Any, ..., Any], Group], None, None], Generator[ContextMenu, None, None]]: ...
|
||||
|
||||
def walk_commands(
|
||||
self,
|
||||
|
@ -406,7 +406,7 @@ class AppInfo:
|
||||
if install_params_scopes is None:
|
||||
install_params = None
|
||||
else:
|
||||
if "bot" not in install_params_scopes and install_params_permissions is not MISSING:
|
||||
if 'bot' not in install_params_scopes and install_params_permissions is not MISSING:
|
||||
raise ValueError("'bot' must be in install_params_scopes if install_params_permissions is set")
|
||||
|
||||
install_params['scopes'] = install_params_scopes
|
||||
|
@ -50,8 +50,8 @@ if TYPE_CHECKING:
|
||||
ValidStaticFormatTypes = Literal['webp', 'jpeg', 'jpg', 'png']
|
||||
ValidAssetFormatTypes = Literal['webp', 'jpeg', 'jpg', 'png', 'gif']
|
||||
|
||||
VALID_STATIC_FORMATS = frozenset({"jpeg", "jpg", "webp", "png"})
|
||||
VALID_ASSET_FORMATS = VALID_STATIC_FORMATS | {"gif"}
|
||||
VALID_STATIC_FORMATS = frozenset({'jpeg', 'jpg', 'webp', 'png'})
|
||||
VALID_ASSET_FORMATS = VALID_STATIC_FORMATS | {'gif'}
|
||||
|
||||
|
||||
MISSING = utils.MISSING
|
||||
@ -241,7 +241,7 @@ class Asset(AssetMixin):
|
||||
format = 'gif' if animated else 'png'
|
||||
return cls(
|
||||
state,
|
||||
url=f"{cls.BASE}/guilds/{guild_id}/users/{member_id}/avatars/{avatar}.{format}?size=1024",
|
||||
url=f'{cls.BASE}/guilds/{guild_id}/users/{member_id}/avatars/{avatar}.{format}?size=1024',
|
||||
key=avatar,
|
||||
animated=animated,
|
||||
)
|
||||
@ -252,7 +252,7 @@ class Asset(AssetMixin):
|
||||
format = 'gif' if animated else 'png'
|
||||
return cls(
|
||||
state,
|
||||
url=f"{cls.BASE}/guilds/{guild_id}/users/{member_id}/banners/{banner}.{format}?size=1024",
|
||||
url=f'{cls.BASE}/guilds/{guild_id}/users/{member_id}/banners/{banner}.{format}?size=1024',
|
||||
key=banner,
|
||||
animated=animated,
|
||||
)
|
||||
|
@ -306,14 +306,12 @@ class AuditLogDiff:
|
||||
|
||||
if TYPE_CHECKING:
|
||||
|
||||
def __getattr__(self, item: str) -> Any:
|
||||
...
|
||||
def __getattr__(self, item: str) -> Any: ...
|
||||
|
||||
def __setattr__(self, key: str, value: Any) -> Any:
|
||||
...
|
||||
def __setattr__(self, key: str, value: Any) -> Any: ...
|
||||
|
||||
|
||||
Transformer = Callable[["AuditLogEntry", Any], Any]
|
||||
Transformer = Callable[['AuditLogEntry', Any], Any]
|
||||
|
||||
|
||||
class AuditLogChanges:
|
||||
|
@ -85,32 +85,27 @@ class AutoModRuleAction:
|
||||
__slots__ = ('type', 'channel_id', 'duration', 'custom_message')
|
||||
|
||||
@overload
|
||||
def __init__(self, *, channel_id: int = ...) -> None:
|
||||
...
|
||||
def __init__(self, *, channel_id: int = ...) -> None: ...
|
||||
|
||||
@overload
|
||||
def __init__(self, *, type: Literal[AutoModRuleActionType.send_alert_message], channel_id: int = ...) -> None:
|
||||
...
|
||||
def __init__(self, *, type: Literal[AutoModRuleActionType.send_alert_message], channel_id: int = ...) -> None: ...
|
||||
|
||||
@overload
|
||||
def __init__(self, *, duration: datetime.timedelta = ...) -> None:
|
||||
...
|
||||
def __init__(self, *, duration: datetime.timedelta = ...) -> None: ...
|
||||
|
||||
@overload
|
||||
def __init__(self, *, type: Literal[AutoModRuleActionType.timeout], duration: datetime.timedelta = ...) -> None:
|
||||
...
|
||||
def __init__(self, *, type: Literal[AutoModRuleActionType.timeout], duration: datetime.timedelta = ...) -> None: ...
|
||||
|
||||
@overload
|
||||
def __init__(self, *, custom_message: str = ...) -> None:
|
||||
...
|
||||
def __init__(self, *, custom_message: str = ...) -> None: ...
|
||||
|
||||
@overload
|
||||
def __init__(self, *, type: Literal[AutoModRuleActionType.block_message]) -> None:
|
||||
...
|
||||
def __init__(self, *, type: Literal[AutoModRuleActionType.block_message]) -> None: ...
|
||||
|
||||
@overload
|
||||
def __init__(self, *, type: Literal[AutoModRuleActionType.block_message], custom_message: Optional[str] = ...) -> None:
|
||||
...
|
||||
def __init__(
|
||||
self, *, type: Literal[AutoModRuleActionType.block_message], custom_message: Optional[str] = ...
|
||||
) -> None: ...
|
||||
|
||||
@overload
|
||||
def __init__(
|
||||
@ -120,8 +115,7 @@ class AutoModRuleAction:
|
||||
channel_id: Optional[int] = ...,
|
||||
duration: Optional[datetime.timedelta] = ...,
|
||||
custom_message: Optional[str] = ...,
|
||||
) -> None:
|
||||
...
|
||||
) -> None: ...
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
|
@ -75,16 +75,13 @@ class ExponentialBackoff(Generic[T]):
|
||||
self._randfunc: Callable[..., Union[int, float]] = rand.randrange if integral else rand.uniform
|
||||
|
||||
@overload
|
||||
def delay(self: ExponentialBackoff[Literal[False]]) -> float:
|
||||
...
|
||||
def delay(self: ExponentialBackoff[Literal[False]]) -> float: ...
|
||||
|
||||
@overload
|
||||
def delay(self: ExponentialBackoff[Literal[True]]) -> int:
|
||||
...
|
||||
def delay(self: ExponentialBackoff[Literal[True]]) -> int: ...
|
||||
|
||||
@overload
|
||||
def delay(self: ExponentialBackoff[bool]) -> Union[int, float]:
|
||||
...
|
||||
def delay(self: ExponentialBackoff[bool]) -> Union[int, float]: ...
|
||||
|
||||
def delay(self) -> Union[int, float]:
|
||||
"""Compute the next delay
|
||||
|
@ -207,7 +207,7 @@ class VoiceChannelSoundEffect(BaseSoundboardSound):
|
||||
super().__init__(state=state, data=data)
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"<{self.__class__.__name__} id={self.id} volume={self.volume}>"
|
||||
return f'<{self.__class__.__name__} id={self.id} volume={self.volume}>'
|
||||
|
||||
@property
|
||||
def created_at(self) -> Optional[datetime.datetime]:
|
||||
@ -273,7 +273,7 @@ class VoiceChannelEffect:
|
||||
('sound', self.sound),
|
||||
]
|
||||
inner = ' '.join('%s=%r' % t for t in attrs)
|
||||
return f"<{self.__class__.__name__} {inner}>"
|
||||
return f'<{self.__class__.__name__} {inner}>'
|
||||
|
||||
def is_sound(self) -> bool:
|
||||
""":class:`bool`: Whether the effect is a sound or not."""
|
||||
@ -457,12 +457,10 @@ class TextChannel(discord.abc.Messageable, discord.abc.GuildChannel, Hashable):
|
||||
return self._state._get_message(self.last_message_id) if self.last_message_id else None
|
||||
|
||||
@overload
|
||||
async def edit(self) -> Optional[TextChannel]:
|
||||
...
|
||||
async def edit(self) -> Optional[TextChannel]: ...
|
||||
|
||||
@overload
|
||||
async def edit(self, *, position: int, reason: Optional[str] = ...) -> None:
|
||||
...
|
||||
async def edit(self, *, position: int, reason: Optional[str] = ...) -> None: ...
|
||||
|
||||
@overload
|
||||
async def edit(
|
||||
@ -480,8 +478,7 @@ class TextChannel(discord.abc.Messageable, discord.abc.GuildChannel, Hashable):
|
||||
default_thread_slowmode_delay: int = ...,
|
||||
type: ChannelType = ...,
|
||||
overwrites: Mapping[OverwriteKeyT, PermissionOverwrite] = ...,
|
||||
) -> TextChannel:
|
||||
...
|
||||
) -> TextChannel: ...
|
||||
|
||||
async def edit(self, *, reason: Optional[str] = None, **options: Any) -> Optional[TextChannel]:
|
||||
"""|coro|
|
||||
@ -1551,12 +1548,10 @@ class VoiceChannel(VocalGuildChannel):
|
||||
return ChannelType.voice
|
||||
|
||||
@overload
|
||||
async def edit(self) -> None:
|
||||
...
|
||||
async def edit(self) -> None: ...
|
||||
|
||||
@overload
|
||||
async def edit(self, *, position: int, reason: Optional[str] = ...) -> None:
|
||||
...
|
||||
async def edit(self, *, position: int, reason: Optional[str] = ...) -> None: ...
|
||||
|
||||
@overload
|
||||
async def edit(
|
||||
@ -1575,8 +1570,7 @@ class VoiceChannel(VocalGuildChannel):
|
||||
slowmode_delay: int = ...,
|
||||
status: Optional[str] = ...,
|
||||
reason: Optional[str] = ...,
|
||||
) -> VoiceChannel:
|
||||
...
|
||||
) -> VoiceChannel: ...
|
||||
|
||||
async def edit(self, *, reason: Optional[str] = None, **options: Any) -> Optional[VoiceChannel]:
|
||||
"""|coro|
|
||||
@ -1917,12 +1911,10 @@ class StageChannel(VocalGuildChannel):
|
||||
return StageInstance(guild=self.guild, state=self._state, data=data)
|
||||
|
||||
@overload
|
||||
async def edit(self) -> None:
|
||||
...
|
||||
async def edit(self) -> None: ...
|
||||
|
||||
@overload
|
||||
async def edit(self, *, position: int, reason: Optional[str] = ...) -> None:
|
||||
...
|
||||
async def edit(self, *, position: int, reason: Optional[str] = ...) -> None: ...
|
||||
|
||||
@overload
|
||||
async def edit(
|
||||
@ -1940,8 +1932,7 @@ class StageChannel(VocalGuildChannel):
|
||||
video_quality_mode: VideoQualityMode = ...,
|
||||
slowmode_delay: int = ...,
|
||||
reason: Optional[str] = ...,
|
||||
) -> StageChannel:
|
||||
...
|
||||
) -> StageChannel: ...
|
||||
|
||||
async def edit(self, *, reason: Optional[str] = None, **options: Any) -> Optional[StageChannel]:
|
||||
"""|coro|
|
||||
@ -2107,12 +2098,10 @@ class CategoryChannel(discord.abc.GuildChannel, Hashable):
|
||||
return await self._clone_impl({'nsfw': self.nsfw}, name=name, reason=reason)
|
||||
|
||||
@overload
|
||||
async def edit(self) -> None:
|
||||
...
|
||||
async def edit(self) -> None: ...
|
||||
|
||||
@overload
|
||||
async def edit(self, *, position: int, reason: Optional[str] = ...) -> None:
|
||||
...
|
||||
async def edit(self, *, position: int, reason: Optional[str] = ...) -> None: ...
|
||||
|
||||
@overload
|
||||
async def edit(
|
||||
@ -2123,8 +2112,7 @@ class CategoryChannel(discord.abc.GuildChannel, Hashable):
|
||||
nsfw: bool = ...,
|
||||
overwrites: Mapping[OverwriteKeyT, PermissionOverwrite] = ...,
|
||||
reason: Optional[str] = ...,
|
||||
) -> CategoryChannel:
|
||||
...
|
||||
) -> CategoryChannel: ...
|
||||
|
||||
async def edit(self, *, reason: Optional[str] = None, **options: Any) -> Optional[CategoryChannel]:
|
||||
"""|coro|
|
||||
@ -2658,12 +2646,10 @@ class ForumChannel(discord.abc.GuildChannel, Hashable):
|
||||
)
|
||||
|
||||
@overload
|
||||
async def edit(self) -> None:
|
||||
...
|
||||
async def edit(self) -> None: ...
|
||||
|
||||
@overload
|
||||
async def edit(self, *, position: int, reason: Optional[str] = ...) -> None:
|
||||
...
|
||||
async def edit(self, *, position: int, reason: Optional[str] = ...) -> None: ...
|
||||
|
||||
@overload
|
||||
async def edit(
|
||||
@ -2686,8 +2672,7 @@ class ForumChannel(discord.abc.GuildChannel, Hashable):
|
||||
default_layout: ForumLayoutType = ...,
|
||||
default_sort_order: ForumOrderType = ...,
|
||||
require_tag: bool = ...,
|
||||
) -> ForumChannel:
|
||||
...
|
||||
) -> ForumChannel: ...
|
||||
|
||||
async def edit(self, *, reason: Optional[str] = None, **options: Any) -> Optional[ForumChannel]:
|
||||
"""|coro|
|
||||
@ -2895,8 +2880,7 @@ class ForumChannel(discord.abc.GuildChannel, Hashable):
|
||||
view: LayoutView,
|
||||
suppress_embeds: bool = ...,
|
||||
reason: Optional[str] = ...,
|
||||
) -> ThreadWithMessage:
|
||||
...
|
||||
) -> ThreadWithMessage: ...
|
||||
|
||||
@overload
|
||||
async def create_thread(
|
||||
@ -2918,8 +2902,7 @@ class ForumChannel(discord.abc.GuildChannel, Hashable):
|
||||
view: View = ...,
|
||||
suppress_embeds: bool = ...,
|
||||
reason: Optional[str] = ...,
|
||||
) -> ThreadWithMessage:
|
||||
...
|
||||
) -> ThreadWithMessage: ...
|
||||
|
||||
async def create_thread(
|
||||
self,
|
||||
|
@ -338,7 +338,7 @@ class Client:
|
||||
|
||||
if VoiceClient.warn_nacl:
|
||||
VoiceClient.warn_nacl = False
|
||||
_log.warning("PyNaCl is not installed, voice will NOT be supported")
|
||||
_log.warning('PyNaCl is not installed, voice will NOT be supported')
|
||||
|
||||
async def __aenter__(self) -> Self:
|
||||
await self._async_setup_hook()
|
||||
@ -774,7 +774,7 @@ class Client:
|
||||
raise
|
||||
|
||||
retry = backoff.delay()
|
||||
_log.exception("Attempting a reconnect in %.2fs", retry)
|
||||
_log.exception('Attempting a reconnect in %.2fs', retry)
|
||||
await asyncio.sleep(retry)
|
||||
# Always try to RESUME the connection
|
||||
# If the connection is not RESUME-able then the gateway will invalidate the session.
|
||||
@ -1238,8 +1238,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[RawAppCommandPermissionsUpdateEvent], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> RawAppCommandPermissionsUpdateEvent:
|
||||
...
|
||||
) -> RawAppCommandPermissionsUpdateEvent: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1249,8 +1248,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Interaction[Self], Union[Command[Any, ..., Any], ContextMenu]], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[Interaction[Self], Union[Command[Any, ..., Any], ContextMenu]]:
|
||||
...
|
||||
) -> Tuple[Interaction[Self], Union[Command[Any, ..., Any], ContextMenu]]: ...
|
||||
|
||||
# AutoMod
|
||||
|
||||
@ -1262,8 +1260,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[AutoModRule], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> AutoModRule:
|
||||
...
|
||||
) -> AutoModRule: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1273,8 +1270,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[AutoModAction], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> AutoModAction:
|
||||
...
|
||||
) -> AutoModAction: ...
|
||||
|
||||
# Channels
|
||||
|
||||
@ -1286,8 +1282,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[GroupChannel, GroupChannel], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[GroupChannel, GroupChannel]:
|
||||
...
|
||||
) -> Tuple[GroupChannel, GroupChannel]: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1297,8 +1292,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[PrivateChannel, datetime.datetime], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[PrivateChannel, datetime.datetime]:
|
||||
...
|
||||
) -> Tuple[PrivateChannel, datetime.datetime]: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1308,8 +1302,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[GuildChannel], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> GuildChannel:
|
||||
...
|
||||
) -> GuildChannel: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1319,8 +1312,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[GuildChannel, GuildChannel], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[GuildChannel, GuildChannel]:
|
||||
...
|
||||
) -> Tuple[GuildChannel, GuildChannel]: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1335,8 +1327,7 @@ class Client:
|
||||
]
|
||||
],
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[Union[GuildChannel, Thread], Optional[datetime.datetime]]:
|
||||
...
|
||||
) -> Tuple[Union[GuildChannel, Thread], Optional[datetime.datetime]]: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1346,8 +1337,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Messageable, Union[User, Member], datetime.datetime], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[Messageable, Union[User, Member], datetime.datetime]:
|
||||
...
|
||||
) -> Tuple[Messageable, Union[User, Member], datetime.datetime]: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1357,8 +1347,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[RawTypingEvent], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> RawTypingEvent:
|
||||
...
|
||||
) -> RawTypingEvent: ...
|
||||
|
||||
# Debug & Gateway events
|
||||
|
||||
@ -1370,8 +1359,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> None:
|
||||
...
|
||||
) -> None: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1381,8 +1369,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[int], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> int:
|
||||
...
|
||||
) -> int: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1392,8 +1379,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[str], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> str:
|
||||
...
|
||||
) -> str: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1403,8 +1389,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Union[str, bytes]], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Union[str, bytes]:
|
||||
...
|
||||
) -> Union[str, bytes]: ...
|
||||
|
||||
# Entitlements
|
||||
@overload
|
||||
@ -1415,8 +1400,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Entitlement], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Entitlement:
|
||||
...
|
||||
) -> Entitlement: ...
|
||||
|
||||
# Guilds
|
||||
|
||||
@ -1433,8 +1417,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Guild], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Guild:
|
||||
...
|
||||
) -> Guild: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1444,8 +1427,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Guild, Guild], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[Guild, Guild]:
|
||||
...
|
||||
) -> Tuple[Guild, Guild]: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1455,8 +1437,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Guild, Sequence[Emoji], Sequence[Emoji]], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[Guild, Sequence[Emoji], Sequence[Emoji]]:
|
||||
...
|
||||
) -> Tuple[Guild, Sequence[Emoji], Sequence[Emoji]]: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1466,8 +1447,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Guild, Sequence[GuildSticker], Sequence[GuildSticker]], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[Guild, Sequence[GuildSticker], Sequence[GuildSticker]]:
|
||||
...
|
||||
) -> Tuple[Guild, Sequence[GuildSticker], Sequence[GuildSticker]]: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1477,8 +1457,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Invite], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Invite:
|
||||
...
|
||||
) -> Invite: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1488,8 +1467,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[AuditLogEntry], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> AuditLogEntry:
|
||||
...
|
||||
) -> AuditLogEntry: ...
|
||||
|
||||
# Integrations
|
||||
|
||||
@ -1501,8 +1479,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Integration], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Integration:
|
||||
...
|
||||
) -> Integration: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1512,8 +1489,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Guild], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Guild:
|
||||
...
|
||||
) -> Guild: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1523,8 +1499,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[GuildChannel], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> GuildChannel:
|
||||
...
|
||||
) -> GuildChannel: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1534,8 +1509,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[RawIntegrationDeleteEvent], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> RawIntegrationDeleteEvent:
|
||||
...
|
||||
) -> RawIntegrationDeleteEvent: ...
|
||||
|
||||
# Interactions
|
||||
|
||||
@ -1547,8 +1521,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Interaction[Self]], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Interaction[Self]:
|
||||
...
|
||||
) -> Interaction[Self]: ...
|
||||
|
||||
# Members
|
||||
|
||||
@ -1560,8 +1533,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Member], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Member:
|
||||
...
|
||||
) -> Member: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1571,8 +1543,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[RawMemberRemoveEvent], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> RawMemberRemoveEvent:
|
||||
...
|
||||
) -> RawMemberRemoveEvent: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1582,8 +1553,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Member, Member], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[Member, Member]:
|
||||
...
|
||||
) -> Tuple[Member, Member]: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1593,8 +1563,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[User, User], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[User, User]:
|
||||
...
|
||||
) -> Tuple[User, User]: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1604,8 +1573,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Guild, Union[User, Member]], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[Guild, Union[User, Member]]:
|
||||
...
|
||||
) -> Tuple[Guild, Union[User, Member]]: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1615,8 +1583,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Guild, User], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[Guild, User]:
|
||||
...
|
||||
) -> Tuple[Guild, User]: ...
|
||||
|
||||
# Messages
|
||||
|
||||
@ -1628,8 +1595,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Message], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1639,8 +1605,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Message, Message], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[Message, Message]:
|
||||
...
|
||||
) -> Tuple[Message, Message]: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1650,8 +1615,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[List[Message]], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> List[Message]:
|
||||
...
|
||||
) -> List[Message]: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1661,8 +1625,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[RawMessageUpdateEvent], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> RawMessageUpdateEvent:
|
||||
...
|
||||
) -> RawMessageUpdateEvent: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1672,8 +1635,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[RawMessageDeleteEvent], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> RawMessageDeleteEvent:
|
||||
...
|
||||
) -> RawMessageDeleteEvent: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1683,8 +1645,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[RawBulkMessageDeleteEvent], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> RawBulkMessageDeleteEvent:
|
||||
...
|
||||
) -> RawBulkMessageDeleteEvent: ...
|
||||
|
||||
# Reactions
|
||||
|
||||
@ -1696,8 +1657,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Reaction, Union[Member, User]], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[Reaction, Union[Member, User]]:
|
||||
...
|
||||
) -> Tuple[Reaction, Union[Member, User]]: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1707,8 +1667,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Message, List[Reaction]], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[Message, List[Reaction]]:
|
||||
...
|
||||
) -> Tuple[Message, List[Reaction]]: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1718,8 +1677,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Reaction], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Reaction:
|
||||
...
|
||||
) -> Reaction: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1729,8 +1687,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[RawReactionActionEvent], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> RawReactionActionEvent:
|
||||
...
|
||||
) -> RawReactionActionEvent: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1740,8 +1697,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[RawReactionClearEvent], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> RawReactionClearEvent:
|
||||
...
|
||||
) -> RawReactionClearEvent: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1751,8 +1707,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[RawReactionClearEmojiEvent], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> RawReactionClearEmojiEvent:
|
||||
...
|
||||
) -> RawReactionClearEmojiEvent: ...
|
||||
|
||||
# Roles
|
||||
|
||||
@ -1764,8 +1719,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Role], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Role:
|
||||
...
|
||||
) -> Role: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1775,8 +1729,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Role, Role], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[Role, Role]:
|
||||
...
|
||||
) -> Tuple[Role, Role]: ...
|
||||
|
||||
# Scheduled Events
|
||||
|
||||
@ -1788,8 +1741,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[ScheduledEvent], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> ScheduledEvent:
|
||||
...
|
||||
) -> ScheduledEvent: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1799,8 +1751,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[ScheduledEvent, User], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[ScheduledEvent, User]:
|
||||
...
|
||||
) -> Tuple[ScheduledEvent, User]: ...
|
||||
|
||||
# Stages
|
||||
|
||||
@ -1812,8 +1763,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[StageInstance], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> StageInstance:
|
||||
...
|
||||
) -> StageInstance: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1823,8 +1773,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[StageInstance, StageInstance], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Coroutine[Any, Any, Tuple[StageInstance, StageInstance]]:
|
||||
...
|
||||
) -> Coroutine[Any, Any, Tuple[StageInstance, StageInstance]]: ...
|
||||
|
||||
# Subscriptions
|
||||
@overload
|
||||
@ -1835,8 +1784,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Subscription], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Subscription:
|
||||
...
|
||||
) -> Subscription: ...
|
||||
|
||||
# Threads
|
||||
@overload
|
||||
@ -1847,8 +1795,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Thread], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Thread:
|
||||
...
|
||||
) -> Thread: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1858,8 +1805,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Thread, Thread], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[Thread, Thread]:
|
||||
...
|
||||
) -> Tuple[Thread, Thread]: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1869,8 +1815,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[RawThreadUpdateEvent], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> RawThreadUpdateEvent:
|
||||
...
|
||||
) -> RawThreadUpdateEvent: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1880,8 +1825,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[RawThreadDeleteEvent], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> RawThreadDeleteEvent:
|
||||
...
|
||||
) -> RawThreadDeleteEvent: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1891,8 +1835,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[ThreadMember], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> ThreadMember:
|
||||
...
|
||||
) -> ThreadMember: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1902,8 +1845,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[RawThreadMembersUpdate], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> RawThreadMembersUpdate:
|
||||
...
|
||||
) -> RawThreadMembersUpdate: ...
|
||||
|
||||
# Voice
|
||||
|
||||
@ -1915,8 +1857,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Member, VoiceState, VoiceState], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[Member, VoiceState, VoiceState]:
|
||||
...
|
||||
) -> Tuple[Member, VoiceState, VoiceState]: ...
|
||||
|
||||
# Polls
|
||||
|
||||
@ -1928,8 +1869,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[Union[User, Member], PollAnswer], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[Union[User, Member], PollAnswer]:
|
||||
...
|
||||
) -> Tuple[Union[User, Member], PollAnswer]: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1939,32 +1879,29 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[[RawPollVoteActionEvent], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> RawPollVoteActionEvent:
|
||||
...
|
||||
) -> RawPollVoteActionEvent: ...
|
||||
|
||||
# Commands
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
self: Union[Bot, AutoShardedBot],
|
||||
event: Literal["command", "command_completion"],
|
||||
event: Literal['command', 'command_completion'],
|
||||
/,
|
||||
*,
|
||||
check: Optional[Callable[[Context[Any]], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Context[Any]:
|
||||
...
|
||||
) -> Context[Any]: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
self: Union[Bot, AutoShardedBot],
|
||||
event: Literal["command_error"],
|
||||
event: Literal['command_error'],
|
||||
/,
|
||||
*,
|
||||
check: Optional[Callable[[Context[Any], CommandError], bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Tuple[Context[Any], CommandError]:
|
||||
...
|
||||
) -> Tuple[Context[Any], CommandError]: ...
|
||||
|
||||
@overload
|
||||
async def wait_for(
|
||||
@ -1974,8 +1911,7 @@ class Client:
|
||||
*,
|
||||
check: Optional[Callable[..., bool]] = ...,
|
||||
timeout: Optional[float] = ...,
|
||||
) -> Any:
|
||||
...
|
||||
) -> Any: ...
|
||||
|
||||
def wait_for(
|
||||
self,
|
||||
|
@ -189,7 +189,6 @@ class Embed:
|
||||
description: Optional[Any] = None,
|
||||
timestamp: Optional[datetime.datetime] = None,
|
||||
):
|
||||
|
||||
self.colour = colour if colour is not None else color
|
||||
self.title: Optional[str] = title
|
||||
self.type: EmbedType = type
|
||||
@ -362,7 +361,7 @@ class Embed:
|
||||
elif value is None:
|
||||
self._timestamp = None
|
||||
else:
|
||||
raise TypeError(f"Expected datetime.datetime or None received {value.__class__.__name__} instead")
|
||||
raise TypeError(f'Expected datetime.datetime or None received {value.__class__.__name__} instead')
|
||||
|
||||
@property
|
||||
def footer(self) -> _EmbedFooterProxy:
|
||||
|
@ -176,7 +176,7 @@ class EnumMeta(type):
|
||||
try:
|
||||
return cls._enum_value_map_[value]
|
||||
except (KeyError, TypeError):
|
||||
raise ValueError(f"{value!r} is not a valid {cls.__name__}")
|
||||
raise ValueError(f'{value!r} is not a valid {cls.__name__}')
|
||||
|
||||
def __getitem__(cls, key: str) -> Any:
|
||||
return cls._enum_member_map_[key]
|
||||
|
@ -261,7 +261,7 @@ class PrivilegedIntentsRequired(ClientException):
|
||||
msg = (
|
||||
'Shard ID %s is requesting privileged intents that have not been explicitly enabled in the '
|
||||
'developer portal. It is recommended to go to https://discord.com/developers/applications/ '
|
||||
'and explicitly enable the privileged intents within your application\'s page. If this is not '
|
||||
"and explicitly enable the privileged intents within your application's page. If this is not "
|
||||
'possible, then consider disabling the privileged intents instead.'
|
||||
)
|
||||
super().__init__(msg % shard_id)
|
||||
|
@ -22,7 +22,6 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
"""
|
||||
|
||||
|
||||
from typing import Any, Awaitable, Callable, Coroutine, TYPE_CHECKING, Protocol, TypeVar, Union, Tuple, Optional
|
||||
|
||||
|
||||
@ -49,9 +48,9 @@ MaybeCoro = Union[T, Coro[T]]
|
||||
MaybeAwaitable = Union[T, Awaitable[T]]
|
||||
|
||||
CogT = TypeVar('CogT', bound='Optional[Cog]')
|
||||
UserCheck = Callable[["ContextT"], MaybeCoro[bool]]
|
||||
Hook = Union[Callable[["CogT", "ContextT"], Coro[Any]], Callable[["ContextT"], Coro[Any]]]
|
||||
Error = Union[Callable[["CogT", "ContextT", "CommandError"], Coro[Any]], Callable[["ContextT", "CommandError"], Coro[Any]]]
|
||||
UserCheck = Callable[['ContextT'], MaybeCoro[bool]]
|
||||
Hook = Union[Callable[['CogT', 'ContextT'], Coro[Any]], Callable[['ContextT'], Coro[Any]]]
|
||||
Error = Union[Callable[['CogT', 'ContextT', 'CommandError'], Coro[Any]], Callable[['ContextT', 'CommandError'], Coro[Any]]]
|
||||
|
||||
ContextT = TypeVar('ContextT', bound='Context[Any]')
|
||||
BotT = TypeVar('BotT', bound=_Bot, covariant=True)
|
||||
@ -60,11 +59,9 @@ ContextT_co = TypeVar('ContextT_co', bound='Context[Any]', covariant=True)
|
||||
|
||||
|
||||
class Check(Protocol[ContextT_co]): # type: ignore # TypeVar is expected to be invariant
|
||||
|
||||
predicate: Callable[[ContextT_co], Coroutine[Any, Any, bool]]
|
||||
|
||||
def __call__(self, coro_or_commands: T) -> T:
|
||||
...
|
||||
def __call__(self, coro_or_commands: T) -> T: ...
|
||||
|
||||
|
||||
# This is merely a tag type to avoid circular import issues.
|
||||
|
@ -94,8 +94,7 @@ if TYPE_CHECKING:
|
||||
strip_after_prefix: bool
|
||||
case_insensitive: bool
|
||||
|
||||
class _AutoShardedBotOptions(_AutoShardedClientOptions, _BotOptions):
|
||||
...
|
||||
class _AutoShardedBotOptions(_AutoShardedClientOptions, _BotOptions): ...
|
||||
|
||||
|
||||
__all__ = (
|
||||
@ -1233,8 +1232,8 @@ class BotBase(GroupMixin[None]):
|
||||
raise
|
||||
|
||||
raise TypeError(
|
||||
"command_prefix must be plain string, iterable of strings, or callable "
|
||||
f"returning either of these, not {ret.__class__.__name__}"
|
||||
'command_prefix must be plain string, iterable of strings, or callable '
|
||||
f'returning either of these, not {ret.__class__.__name__}'
|
||||
)
|
||||
|
||||
return ret
|
||||
@ -1254,8 +1253,7 @@ class BotBase(GroupMixin[None]):
|
||||
/,
|
||||
*,
|
||||
cls: Type[ContextT],
|
||||
) -> ContextT:
|
||||
...
|
||||
) -> ContextT: ...
|
||||
|
||||
async def get_context(
|
||||
self,
|
||||
@ -1332,15 +1330,15 @@ class BotBase(GroupMixin[None]):
|
||||
except TypeError:
|
||||
if not isinstance(prefix, list):
|
||||
raise TypeError(
|
||||
"get_prefix must return either a string or a list of string, " f"not {prefix.__class__.__name__}"
|
||||
f'get_prefix must return either a string or a list of string, not {prefix.__class__.__name__}'
|
||||
)
|
||||
|
||||
# It's possible a bad command_prefix got us here.
|
||||
for value in prefix:
|
||||
if not isinstance(value, str):
|
||||
raise TypeError(
|
||||
"Iterable command_prefix or list returned from get_prefix must "
|
||||
f"contain only strings, not {value.__class__.__name__}"
|
||||
'Iterable command_prefix or list returned from get_prefix must '
|
||||
f'contain only strings, not {value.__class__.__name__}'
|
||||
)
|
||||
|
||||
# Getting here shouldn't happen
|
||||
@ -1552,5 +1550,4 @@ class AutoShardedBot(BotBase, discord.AutoShardedClient):
|
||||
allowed_installs: app_commands.AppInstallationType = MISSING,
|
||||
intents: discord.Intents,
|
||||
**kwargs: Unpack[_AutoShardedBotOptions],
|
||||
) -> None:
|
||||
...
|
||||
) -> None: ...
|
||||
|
@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import inspect
|
||||
|
@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import re
|
||||
@ -70,7 +71,7 @@ MISSING: Any = discord.utils.MISSING
|
||||
|
||||
|
||||
T = TypeVar('T')
|
||||
CogT = TypeVar('CogT', bound="Cog")
|
||||
CogT = TypeVar('CogT', bound='Cog')
|
||||
|
||||
if TYPE_CHECKING:
|
||||
P = ParamSpec('P')
|
||||
@ -424,8 +425,8 @@ class Context(discord.abc.Messageable, Generic[BotT]):
|
||||
# consider this to be an *incredibly* strange use case. I'd rather go
|
||||
# for this common use case rather than waste performance for the
|
||||
# odd one.
|
||||
pattern = re.compile(r"<@!?%s>" % user.id)
|
||||
return pattern.sub("@%s" % user.display_name.replace('\\', r'\\'), self.prefix)
|
||||
pattern = re.compile(r'<@!?%s>' % user.id)
|
||||
return pattern.sub('@%s' % user.display_name.replace('\\', r'\\'), self.prefix)
|
||||
|
||||
@property
|
||||
def cog(self) -> Optional[Cog]:
|
||||
@ -642,8 +643,7 @@ class Context(discord.abc.Messageable, Generic[BotT]):
|
||||
suppress_embeds: bool = ...,
|
||||
ephemeral: bool = ...,
|
||||
silent: bool = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def reply(
|
||||
@ -659,8 +659,7 @@ class Context(discord.abc.Messageable, Generic[BotT]):
|
||||
suppress_embeds: bool = ...,
|
||||
ephemeral: bool = ...,
|
||||
silent: bool = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def reply(
|
||||
@ -681,8 +680,7 @@ class Context(discord.abc.Messageable, Generic[BotT]):
|
||||
ephemeral: bool = ...,
|
||||
silent: bool = ...,
|
||||
poll: Poll = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def reply(
|
||||
@ -703,8 +701,7 @@ class Context(discord.abc.Messageable, Generic[BotT]):
|
||||
ephemeral: bool = ...,
|
||||
silent: bool = ...,
|
||||
poll: Poll = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def reply(
|
||||
@ -725,8 +722,7 @@ class Context(discord.abc.Messageable, Generic[BotT]):
|
||||
ephemeral: bool = ...,
|
||||
silent: bool = ...,
|
||||
poll: Poll = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def reply(
|
||||
@ -747,8 +743,7 @@ class Context(discord.abc.Messageable, Generic[BotT]):
|
||||
ephemeral: bool = ...,
|
||||
silent: bool = ...,
|
||||
poll: Poll = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
async def reply(self, content: Optional[str] = None, **kwargs: Any) -> Message:
|
||||
"""|coro|
|
||||
@ -865,8 +860,7 @@ class Context(discord.abc.Messageable, Generic[BotT]):
|
||||
suppress_embeds: bool = ...,
|
||||
ephemeral: bool = ...,
|
||||
silent: bool = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def send(
|
||||
@ -882,8 +876,7 @@ class Context(discord.abc.Messageable, Generic[BotT]):
|
||||
suppress_embeds: bool = ...,
|
||||
ephemeral: bool = ...,
|
||||
silent: bool = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def send(
|
||||
@ -904,8 +897,7 @@ class Context(discord.abc.Messageable, Generic[BotT]):
|
||||
ephemeral: bool = ...,
|
||||
silent: bool = ...,
|
||||
poll: Poll = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def send(
|
||||
@ -926,8 +918,7 @@ class Context(discord.abc.Messageable, Generic[BotT]):
|
||||
ephemeral: bool = ...,
|
||||
silent: bool = ...,
|
||||
poll: Poll = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def send(
|
||||
@ -948,8 +939,7 @@ class Context(discord.abc.Messageable, Generic[BotT]):
|
||||
ephemeral: bool = ...,
|
||||
silent: bool = ...,
|
||||
poll: Poll = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def send(
|
||||
@ -970,8 +960,7 @@ class Context(discord.abc.Messageable, Generic[BotT]):
|
||||
ephemeral: bool = ...,
|
||||
silent: bool = ...,
|
||||
poll: Poll = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
async def send(
|
||||
self,
|
||||
|
@ -1347,13 +1347,11 @@ async def _actual_conversion(ctx: Context[BotT], converter: Any, argument: str,
|
||||
@overload
|
||||
async def run_converters(
|
||||
ctx: Context[BotT], converter: Union[Type[Converter[T]], Converter[T]], argument: str, param: Parameter
|
||||
) -> T:
|
||||
...
|
||||
) -> T: ...
|
||||
|
||||
|
||||
@overload
|
||||
async def run_converters(ctx: Context[BotT], converter: Any, argument: str, param: Parameter) -> Any:
|
||||
...
|
||||
async def run_converters(ctx: Context[BotT], converter: Any, argument: str, param: Parameter) -> Any: ...
|
||||
|
||||
|
||||
async def run_converters(ctx: Context[BotT], converter: Any, argument: str, param: Parameter) -> Any:
|
||||
|
@ -242,10 +242,10 @@ class MaxConcurrency:
|
||||
self.wait: bool = wait
|
||||
|
||||
if number <= 0:
|
||||
raise ValueError('max_concurrency \'number\' cannot be less than 1')
|
||||
raise ValueError("max_concurrency 'number' cannot be less than 1")
|
||||
|
||||
if not isinstance(per, BucketType):
|
||||
raise TypeError(f'max_concurrency \'per\' must be of type BucketType not {type(per)!r}')
|
||||
raise TypeError(f"max_concurrency 'per' must be of type BucketType not {type(per)!r}")
|
||||
|
||||
def copy(self) -> Self:
|
||||
return self.__class__(self.number, per=self.per, wait=self.wait)
|
||||
|
@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
@ -398,6 +399,7 @@ class Command(_BaseCommand, Generic[CogT, P, T]):
|
||||
|
||||
.. versionadded:: 2.0
|
||||
"""
|
||||
|
||||
__original_kwargs__: Dict[str, Any]
|
||||
|
||||
def __new__(cls, *args: Any, **kwargs: Any) -> Self:
|
||||
@ -451,7 +453,7 @@ class Command(_BaseCommand, Generic[CogT, P, T]):
|
||||
self.extras: Dict[Any, Any] = kwargs.get('extras', {})
|
||||
|
||||
if not isinstance(self.aliases, (list, tuple)):
|
||||
raise TypeError("Aliases of a command must be a list or a tuple of strings.")
|
||||
raise TypeError('Aliases of a command must be a list or a tuple of strings.')
|
||||
|
||||
self.description: str = inspect.cleandoc(kwargs.get('description', ''))
|
||||
self.hidden: bool = kwargs.get('hidden', False)
|
||||
@ -474,7 +476,7 @@ class Command(_BaseCommand, Generic[CogT, P, T]):
|
||||
elif isinstance(cooldown, CooldownMapping):
|
||||
buckets: CooldownMapping[Context[Any]] = cooldown
|
||||
else:
|
||||
raise TypeError("Cooldown must be an instance of CooldownMapping or None.")
|
||||
raise TypeError('Cooldown must be an instance of CooldownMapping or None.')
|
||||
self._buckets: CooldownMapping[Context[Any]] = buckets
|
||||
|
||||
try:
|
||||
@ -520,7 +522,10 @@ class Command(_BaseCommand, Generic[CogT, P, T]):
|
||||
@property
|
||||
def callback(
|
||||
self,
|
||||
) -> Union[Callable[Concatenate[CogT, Context[Any], P], Coro[T]], Callable[Concatenate[Context[Any], P], Coro[T]],]:
|
||||
) -> Union[
|
||||
Callable[Concatenate[CogT, Context[Any], P], Coro[T]],
|
||||
Callable[Concatenate[Context[Any], P], Coro[T]],
|
||||
]:
|
||||
return self._callback
|
||||
|
||||
@callback.setter
|
||||
@ -1507,8 +1512,7 @@ class GroupMixin(Generic[CogT]):
|
||||
]
|
||||
],
|
||||
Command[CogT, P, T],
|
||||
]:
|
||||
...
|
||||
]: ...
|
||||
|
||||
@overload
|
||||
def command(
|
||||
@ -1525,8 +1529,7 @@ class GroupMixin(Generic[CogT]):
|
||||
]
|
||||
],
|
||||
CommandT,
|
||||
]:
|
||||
...
|
||||
]: ...
|
||||
|
||||
def command(
|
||||
self,
|
||||
@ -1566,8 +1569,7 @@ class GroupMixin(Generic[CogT]):
|
||||
]
|
||||
],
|
||||
Group[CogT, P, T],
|
||||
]:
|
||||
...
|
||||
]: ...
|
||||
|
||||
@overload
|
||||
def group(
|
||||
@ -1584,8 +1586,7 @@ class GroupMixin(Generic[CogT]):
|
||||
]
|
||||
],
|
||||
GroupT,
|
||||
]:
|
||||
...
|
||||
]: ...
|
||||
|
||||
def group(
|
||||
self,
|
||||
@ -1731,35 +1732,28 @@ if TYPE_CHECKING:
|
||||
|
||||
class _CommandDecorator:
|
||||
@overload
|
||||
def __call__(self, func: Callable[Concatenate[CogT, ContextT, P], Coro[T]], /) -> Command[CogT, P, T]:
|
||||
...
|
||||
def __call__(self, func: Callable[Concatenate[CogT, ContextT, P], Coro[T]], /) -> Command[CogT, P, T]: ...
|
||||
|
||||
@overload
|
||||
def __call__(self, func: Callable[Concatenate[ContextT, P], Coro[T]], /) -> Command[None, P, T]:
|
||||
...
|
||||
def __call__(self, func: Callable[Concatenate[ContextT, P], Coro[T]], /) -> Command[None, P, T]: ...
|
||||
|
||||
def __call__(self, func: Callable[..., Coro[T]], /) -> Any:
|
||||
...
|
||||
def __call__(self, func: Callable[..., Coro[T]], /) -> Any: ...
|
||||
|
||||
class _GroupDecorator:
|
||||
@overload
|
||||
def __call__(self, func: Callable[Concatenate[CogT, ContextT, P], Coro[T]], /) -> Group[CogT, P, T]:
|
||||
...
|
||||
def __call__(self, func: Callable[Concatenate[CogT, ContextT, P], Coro[T]], /) -> Group[CogT, P, T]: ...
|
||||
|
||||
@overload
|
||||
def __call__(self, func: Callable[Concatenate[ContextT, P], Coro[T]], /) -> Group[None, P, T]:
|
||||
...
|
||||
def __call__(self, func: Callable[Concatenate[ContextT, P], Coro[T]], /) -> Group[None, P, T]: ...
|
||||
|
||||
def __call__(self, func: Callable[..., Coro[T]], /) -> Any:
|
||||
...
|
||||
def __call__(self, func: Callable[..., Coro[T]], /) -> Any: ...
|
||||
|
||||
|
||||
@overload
|
||||
def command(
|
||||
name: str = ...,
|
||||
**attrs: Unpack[_CommandDecoratorKwargs],
|
||||
) -> _CommandDecorator:
|
||||
...
|
||||
) -> _CommandDecorator: ...
|
||||
|
||||
|
||||
@overload
|
||||
@ -1775,8 +1769,7 @@ def command(
|
||||
]
|
||||
],
|
||||
CommandT,
|
||||
]:
|
||||
...
|
||||
]: ...
|
||||
|
||||
|
||||
def command(
|
||||
@ -1828,8 +1821,7 @@ def command(
|
||||
def group(
|
||||
name: str = ...,
|
||||
**attrs: Unpack[_GroupDecoratorKwargs],
|
||||
) -> _GroupDecorator:
|
||||
...
|
||||
) -> _GroupDecorator: ...
|
||||
|
||||
|
||||
@overload
|
||||
@ -1845,8 +1837,7 @@ def group(
|
||||
]
|
||||
],
|
||||
GroupT,
|
||||
]:
|
||||
...
|
||||
]: ...
|
||||
|
||||
|
||||
def group(
|
||||
@ -2226,7 +2217,7 @@ def has_permissions(**perms: Unpack[_PermissionsKwargs]) -> Check[Any]:
|
||||
|
||||
invalid = set(perms) - set(discord.Permissions.VALID_FLAGS)
|
||||
if invalid:
|
||||
raise TypeError(f"Invalid permission(s): {', '.join(invalid)}")
|
||||
raise TypeError(f'Invalid permission(s): {", ".join(invalid)}')
|
||||
|
||||
def predicate(ctx: Context[BotT]) -> bool:
|
||||
permissions = ctx.permissions
|
||||
@ -2251,7 +2242,7 @@ def bot_has_permissions(**perms: Unpack[_PermissionsKwargs]) -> Check[Any]:
|
||||
|
||||
invalid = set(perms) - set(discord.Permissions.VALID_FLAGS)
|
||||
if invalid:
|
||||
raise TypeError(f"Invalid permission(s): {', '.join(invalid)}")
|
||||
raise TypeError(f'Invalid permission(s): {", ".join(invalid)}')
|
||||
|
||||
def predicate(ctx: Context[BotT]) -> bool:
|
||||
permissions = ctx.bot_permissions
|
||||
@ -2278,7 +2269,7 @@ def has_guild_permissions(**perms: Unpack[_PermissionsKwargs]) -> Check[Any]:
|
||||
|
||||
invalid = set(perms) - set(discord.Permissions.VALID_FLAGS)
|
||||
if invalid:
|
||||
raise TypeError(f"Invalid permission(s): {', '.join(invalid)}")
|
||||
raise TypeError(f'Invalid permission(s): {", ".join(invalid)}')
|
||||
|
||||
def predicate(ctx: Context[BotT]) -> bool:
|
||||
if not ctx.guild:
|
||||
@ -2304,7 +2295,7 @@ def bot_has_guild_permissions(**perms: Unpack[_PermissionsKwargs]) -> Check[Any]
|
||||
|
||||
invalid = set(perms) - set(discord.Permissions.VALID_FLAGS)
|
||||
if invalid:
|
||||
raise TypeError(f"Invalid permission(s): {', '.join(invalid)}")
|
||||
raise TypeError(f'Invalid permission(s): {", ".join(invalid)}')
|
||||
|
||||
def predicate(ctx: Context[BotT]) -> bool:
|
||||
if not ctx.guild:
|
||||
@ -2544,7 +2535,7 @@ def dynamic_cooldown(
|
||||
The type of cooldown to have.
|
||||
"""
|
||||
if not callable(cooldown):
|
||||
raise TypeError("A callable must be provided")
|
||||
raise TypeError('A callable must be provided')
|
||||
|
||||
if type is BucketType.default:
|
||||
raise ValueError('BucketType.default cannot be used in dynamic cooldowns')
|
||||
|
@ -925,7 +925,7 @@ class BadLiteralArgument(UserInputError):
|
||||
.. versionadded:: 2.3
|
||||
"""
|
||||
|
||||
def __init__(self, param: Parameter, literals: Tuple[Any, ...], errors: List[CommandError], argument: str = "") -> None:
|
||||
def __init__(self, param: Parameter, literals: Tuple[Any, ...], errors: List[CommandError], argument: str = '') -> None:
|
||||
self.param: Parameter = param
|
||||
self.literals: Tuple[Any, ...] = literals
|
||||
self.errors: List[CommandError] = errors
|
||||
|
@ -197,7 +197,7 @@ def get_flags(namespace: Dict[str, Any], globals: Dict[str, Any], locals: Dict[s
|
||||
|
||||
if flag.positional:
|
||||
if positional is not None:
|
||||
raise TypeError(f"{flag.name!r} positional flag conflicts with {positional.name!r} flag.")
|
||||
raise TypeError(f'{flag.name!r} positional flag conflicts with {positional.name!r} flag.')
|
||||
positional = flag
|
||||
|
||||
annotation = flag.annotation = resolve_annotation(flag.annotation, globals, locals, cache)
|
||||
|
@ -1072,7 +1072,7 @@ class DefaultHelpCommand(HelpCommand):
|
||||
self.sort_commands: bool = options.pop('sort_commands', True)
|
||||
self.dm_help: bool = options.pop('dm_help', False)
|
||||
self.dm_help_threshold: int = options.pop('dm_help_threshold', 1000)
|
||||
self.arguments_heading: str = options.pop('arguments_heading', "Arguments:")
|
||||
self.arguments_heading: str = options.pop('arguments_heading', 'Arguments:')
|
||||
self.commands_heading: str = options.pop('commands_heading', 'Commands:')
|
||||
self.default_argument_description: str = options.pop('default_argument_description', 'No description given')
|
||||
self.no_category: str = options.pop('no_category', 'No Category')
|
||||
|
@ -278,8 +278,7 @@ class ParameterAlias(Protocol):
|
||||
description: str = empty,
|
||||
displayed_default: str = empty,
|
||||
displayed_name: str = empty,
|
||||
) -> Any:
|
||||
...
|
||||
) -> Any: ...
|
||||
|
||||
|
||||
param: ParameterAlias = parameter
|
||||
|
@ -31,22 +31,22 @@ from .errors import UnexpectedQuoteError, InvalidEndOfQuotedStringError, Expecte
|
||||
# map from opening quotes to closing quotes
|
||||
_quotes = {
|
||||
'"': '"',
|
||||
"‘": "’",
|
||||
"‚": "‛",
|
||||
"“": "”",
|
||||
"„": "‟",
|
||||
"⹂": "⹂",
|
||||
"「": "」",
|
||||
"『": "』",
|
||||
"〝": "〞",
|
||||
"﹁": "﹂",
|
||||
"﹃": "﹄",
|
||||
""": """,
|
||||
"「": "」",
|
||||
"«": "»",
|
||||
"‹": "›",
|
||||
"《": "》",
|
||||
"〈": "〉",
|
||||
'‘': '’',
|
||||
'‚': '‛',
|
||||
'“': '”',
|
||||
'„': '‟',
|
||||
'⹂': '⹂',
|
||||
'「': '」',
|
||||
'『': '』',
|
||||
'〝': '〞',
|
||||
'﹁': '﹂',
|
||||
'﹃': '﹄',
|
||||
'"': '"',
|
||||
'「': '」',
|
||||
'«': '»',
|
||||
'‹': '›',
|
||||
'《': '》',
|
||||
'〈': '〉',
|
||||
}
|
||||
_all_quotes = set(_quotes.keys()) | set(_quotes.values())
|
||||
|
||||
|
@ -112,12 +112,10 @@ class flag_value:
|
||||
self.__doc__: Optional[str] = func.__doc__
|
||||
|
||||
@overload
|
||||
def __get__(self, instance: None, owner: Type[BF]) -> Self:
|
||||
...
|
||||
def __get__(self, instance: None, owner: Type[BF]) -> Self: ...
|
||||
|
||||
@overload
|
||||
def __get__(self, instance: BF, owner: Type[BF]) -> bool:
|
||||
...
|
||||
def __get__(self, instance: BF, owner: Type[BF]) -> bool: ...
|
||||
|
||||
def __get__(self, instance: Optional[BF], owner: Type[BF]) -> Any:
|
||||
if instance is None:
|
||||
|
@ -141,7 +141,7 @@ class KeepAliveHandler(threading.Thread):
|
||||
self.shard_id: Optional[int] = shard_id
|
||||
self.msg: str = 'Keeping shard ID %s websocket alive with sequence %s.'
|
||||
self.block_msg: str = 'Shard ID %s heartbeat blocked for more than %s seconds.'
|
||||
self.behind_msg: str = 'Can\'t keep up, shard ID %s websocket is %.1fs behind.'
|
||||
self.behind_msg: str = "Can't keep up, shard ID %s websocket is %.1fs behind."
|
||||
self._stop_ev: threading.Event = threading.Event()
|
||||
self._last_ack: float = time.perf_counter()
|
||||
self._last_send: float = time.perf_counter()
|
||||
@ -152,7 +152,7 @@ class KeepAliveHandler(threading.Thread):
|
||||
def run(self) -> None:
|
||||
while not self._stop_ev.wait(self.interval):
|
||||
if self._last_recv + self.heartbeat_timeout < time.perf_counter():
|
||||
_log.warning("Shard ID %s has stopped responding to the gateway. Closing and restarting.", self.shard_id)
|
||||
_log.warning('Shard ID %s has stopped responding to the gateway. Closing and restarting.', self.shard_id)
|
||||
coro = self.ws.close(4000)
|
||||
f = asyncio.run_coroutine_threadsafe(coro, loop=self.ws.loop)
|
||||
|
||||
|
@ -219,8 +219,8 @@ class GuildPreview(Hashable):
|
||||
'stickers',
|
||||
'features',
|
||||
'description',
|
||||
"approximate_member_count",
|
||||
"approximate_presence_count",
|
||||
'approximate_member_count',
|
||||
'approximate_presence_count',
|
||||
)
|
||||
|
||||
def __init__(self, *, data: GuildPreviewPayload, state: ConnectionState) -> None:
|
||||
@ -1296,8 +1296,7 @@ class Guild(Hashable):
|
||||
overwrites: Mapping[Union[Role, Member, Object], PermissionOverwrite] = ...,
|
||||
category: Optional[Snowflake] = ...,
|
||||
**options: Any,
|
||||
) -> Coroutine[Any, Any, TextChannelPayload]:
|
||||
...
|
||||
) -> Coroutine[Any, Any, TextChannelPayload]: ...
|
||||
|
||||
@overload
|
||||
def _create_channel(
|
||||
@ -1307,8 +1306,7 @@ class Guild(Hashable):
|
||||
overwrites: Mapping[Union[Role, Member, Object], PermissionOverwrite] = ...,
|
||||
category: Optional[Snowflake] = ...,
|
||||
**options: Any,
|
||||
) -> Coroutine[Any, Any, VoiceChannelPayload]:
|
||||
...
|
||||
) -> Coroutine[Any, Any, VoiceChannelPayload]: ...
|
||||
|
||||
@overload
|
||||
def _create_channel(
|
||||
@ -1318,8 +1316,7 @@ class Guild(Hashable):
|
||||
overwrites: Mapping[Union[Role, Member, Object], PermissionOverwrite] = ...,
|
||||
category: Optional[Snowflake] = ...,
|
||||
**options: Any,
|
||||
) -> Coroutine[Any, Any, StageChannelPayload]:
|
||||
...
|
||||
) -> Coroutine[Any, Any, StageChannelPayload]: ...
|
||||
|
||||
@overload
|
||||
def _create_channel(
|
||||
@ -1329,8 +1326,7 @@ class Guild(Hashable):
|
||||
overwrites: Mapping[Union[Role, Member, Object], PermissionOverwrite] = ...,
|
||||
category: Optional[Snowflake] = ...,
|
||||
**options: Any,
|
||||
) -> Coroutine[Any, Any, CategoryChannelPayload]:
|
||||
...
|
||||
) -> Coroutine[Any, Any, CategoryChannelPayload]: ...
|
||||
|
||||
@overload
|
||||
def _create_channel(
|
||||
@ -1340,8 +1336,7 @@ class Guild(Hashable):
|
||||
overwrites: Mapping[Union[Role, Member, Object], PermissionOverwrite] = ...,
|
||||
category: Optional[Snowflake] = ...,
|
||||
**options: Any,
|
||||
) -> Coroutine[Any, Any, NewsChannelPayload]:
|
||||
...
|
||||
) -> Coroutine[Any, Any, NewsChannelPayload]: ...
|
||||
|
||||
@overload
|
||||
def _create_channel(
|
||||
@ -1351,8 +1346,7 @@ class Guild(Hashable):
|
||||
overwrites: Mapping[Union[Role, Member, Object], PermissionOverwrite] = ...,
|
||||
category: Optional[Snowflake] = ...,
|
||||
**options: Any,
|
||||
) -> Coroutine[Any, Any, Union[TextChannelPayload, NewsChannelPayload]]:
|
||||
...
|
||||
) -> Coroutine[Any, Any, Union[TextChannelPayload, NewsChannelPayload]]: ...
|
||||
|
||||
@overload
|
||||
def _create_channel(
|
||||
@ -1362,8 +1356,7 @@ class Guild(Hashable):
|
||||
overwrites: Mapping[Union[Role, Member, Object], PermissionOverwrite] = ...,
|
||||
category: Optional[Snowflake] = ...,
|
||||
**options: Any,
|
||||
) -> Coroutine[Any, Any, ForumChannelPayload]:
|
||||
...
|
||||
) -> Coroutine[Any, Any, ForumChannelPayload]: ...
|
||||
|
||||
@overload
|
||||
def _create_channel(
|
||||
@ -1373,8 +1366,7 @@ class Guild(Hashable):
|
||||
overwrites: Mapping[Union[Role, Member, Object], PermissionOverwrite] = ...,
|
||||
category: Optional[Snowflake] = ...,
|
||||
**options: Any,
|
||||
) -> Coroutine[Any, Any, GuildChannelPayload]:
|
||||
...
|
||||
) -> Coroutine[Any, Any, GuildChannelPayload]: ...
|
||||
|
||||
def _create_channel(
|
||||
self,
|
||||
@ -1965,7 +1957,9 @@ class Guild(Hashable):
|
||||
)
|
||||
|
||||
channel = ForumChannel(
|
||||
state=self._state, guild=self, data=data # pyright: ignore[reportArgumentType] # it's the correct data
|
||||
state=self._state,
|
||||
guild=self,
|
||||
data=data, # pyright: ignore[reportArgumentType] # it's the correct data
|
||||
)
|
||||
|
||||
# temporarily add to the cache
|
||||
@ -3246,8 +3240,7 @@ class Guild(Hashable):
|
||||
description: str = ...,
|
||||
image: bytes = ...,
|
||||
reason: Optional[str] = ...,
|
||||
) -> ScheduledEvent:
|
||||
...
|
||||
) -> ScheduledEvent: ...
|
||||
|
||||
@overload
|
||||
async def create_scheduled_event(
|
||||
@ -3262,8 +3255,7 @@ class Guild(Hashable):
|
||||
description: str = ...,
|
||||
image: bytes = ...,
|
||||
reason: Optional[str] = ...,
|
||||
) -> ScheduledEvent:
|
||||
...
|
||||
) -> ScheduledEvent: ...
|
||||
|
||||
@overload
|
||||
async def create_scheduled_event(
|
||||
@ -3277,8 +3269,7 @@ class Guild(Hashable):
|
||||
description: str = ...,
|
||||
image: bytes = ...,
|
||||
reason: Optional[str] = ...,
|
||||
) -> ScheduledEvent:
|
||||
...
|
||||
) -> ScheduledEvent: ...
|
||||
|
||||
@overload
|
||||
async def create_scheduled_event(
|
||||
@ -3292,8 +3283,7 @@ class Guild(Hashable):
|
||||
description: str = ...,
|
||||
image: bytes = ...,
|
||||
reason: Optional[str] = ...,
|
||||
) -> ScheduledEvent:
|
||||
...
|
||||
) -> ScheduledEvent: ...
|
||||
|
||||
async def create_scheduled_event(
|
||||
self,
|
||||
@ -3405,7 +3395,7 @@ class Guild(Hashable):
|
||||
|
||||
if entity_type is None:
|
||||
raise TypeError(
|
||||
'invalid GuildChannel type passed, must be VoiceChannel or StageChannel ' f'not {channel.__class__.__name__}'
|
||||
f'invalid GuildChannel type passed, must be VoiceChannel or StageChannel not {channel.__class__.__name__}'
|
||||
)
|
||||
|
||||
if privacy_level is not MISSING:
|
||||
@ -3660,8 +3650,7 @@ class Guild(Hashable):
|
||||
mentionable: bool = ...,
|
||||
secondary_colour: Optional[Union[Colour, int]] = ...,
|
||||
tertiary_colour: Optional[Union[Colour, int]] = ...,
|
||||
) -> Role:
|
||||
...
|
||||
) -> Role: ...
|
||||
|
||||
@overload
|
||||
async def create_role(
|
||||
@ -3676,8 +3665,7 @@ class Guild(Hashable):
|
||||
mentionable: bool = ...,
|
||||
secondary_color: Optional[Union[Colour, int]] = ...,
|
||||
tertiary_color: Optional[Union[Colour, int]] = ...,
|
||||
) -> Role:
|
||||
...
|
||||
) -> Role: ...
|
||||
|
||||
async def create_role(
|
||||
self,
|
||||
|
@ -2037,22 +2037,19 @@ class HTTPClient:
|
||||
@overload
|
||||
def get_scheduled_events(
|
||||
self, guild_id: Snowflake, with_user_count: Literal[True]
|
||||
) -> Response[List[scheduled_event.GuildScheduledEventWithUserCount]]:
|
||||
...
|
||||
) -> Response[List[scheduled_event.GuildScheduledEventWithUserCount]]: ...
|
||||
|
||||
@overload
|
||||
def get_scheduled_events(
|
||||
self, guild_id: Snowflake, with_user_count: Literal[False]
|
||||
) -> Response[List[scheduled_event.GuildScheduledEvent]]:
|
||||
...
|
||||
) -> Response[List[scheduled_event.GuildScheduledEvent]]: ...
|
||||
|
||||
@overload
|
||||
def get_scheduled_events(
|
||||
self, guild_id: Snowflake, with_user_count: bool
|
||||
) -> Union[
|
||||
Response[List[scheduled_event.GuildScheduledEventWithUserCount]], Response[List[scheduled_event.GuildScheduledEvent]]
|
||||
]:
|
||||
...
|
||||
]: ...
|
||||
|
||||
def get_scheduled_events(self, guild_id: Snowflake, with_user_count: bool) -> Response[Any]:
|
||||
params = {'with_user_count': int(with_user_count)}
|
||||
@ -2081,20 +2078,19 @@ class HTTPClient:
|
||||
@overload
|
||||
def get_scheduled_event(
|
||||
self, guild_id: Snowflake, guild_scheduled_event_id: Snowflake, with_user_count: Literal[True]
|
||||
) -> Response[scheduled_event.GuildScheduledEventWithUserCount]:
|
||||
...
|
||||
) -> Response[scheduled_event.GuildScheduledEventWithUserCount]: ...
|
||||
|
||||
@overload
|
||||
def get_scheduled_event(
|
||||
self, guild_id: Snowflake, guild_scheduled_event_id: Snowflake, with_user_count: Literal[False]
|
||||
) -> Response[scheduled_event.GuildScheduledEvent]:
|
||||
...
|
||||
) -> Response[scheduled_event.GuildScheduledEvent]: ...
|
||||
|
||||
@overload
|
||||
def get_scheduled_event(
|
||||
self, guild_id: Snowflake, guild_scheduled_event_id: Snowflake, with_user_count: bool
|
||||
) -> Union[Response[scheduled_event.GuildScheduledEventWithUserCount], Response[scheduled_event.GuildScheduledEvent]]:
|
||||
...
|
||||
) -> Union[
|
||||
Response[scheduled_event.GuildScheduledEventWithUserCount], Response[scheduled_event.GuildScheduledEvent]
|
||||
]: ...
|
||||
|
||||
def get_scheduled_event(
|
||||
self, guild_id: Snowflake, guild_scheduled_event_id: Snowflake, with_user_count: bool
|
||||
@ -2164,8 +2160,7 @@ class HTTPClient:
|
||||
with_member: Literal[True],
|
||||
before: Optional[Snowflake] = ...,
|
||||
after: Optional[Snowflake] = ...,
|
||||
) -> Response[scheduled_event.ScheduledEventUsersWithMember]:
|
||||
...
|
||||
) -> Response[scheduled_event.ScheduledEventUsersWithMember]: ...
|
||||
|
||||
@overload
|
||||
def get_scheduled_event_users(
|
||||
@ -2176,8 +2171,7 @@ class HTTPClient:
|
||||
with_member: Literal[False],
|
||||
before: Optional[Snowflake] = ...,
|
||||
after: Optional[Snowflake] = ...,
|
||||
) -> Response[scheduled_event.ScheduledEventUsers]:
|
||||
...
|
||||
) -> Response[scheduled_event.ScheduledEventUsers]: ...
|
||||
|
||||
@overload
|
||||
def get_scheduled_event_users(
|
||||
@ -2188,8 +2182,7 @@ class HTTPClient:
|
||||
with_member: bool,
|
||||
before: Optional[Snowflake] = ...,
|
||||
after: Optional[Snowflake] = ...,
|
||||
) -> Union[Response[scheduled_event.ScheduledEventUsersWithMember], Response[scheduled_event.ScheduledEventUsers]]:
|
||||
...
|
||||
) -> Union[Response[scheduled_event.ScheduledEventUsersWithMember], Response[scheduled_event.ScheduledEventUsers]]: ...
|
||||
|
||||
def get_scheduled_event_users(
|
||||
self,
|
||||
@ -2572,7 +2565,6 @@ class HTTPClient:
|
||||
mode: Optional[onboarding.OnboardingMode] = None,
|
||||
reason: Optional[str],
|
||||
) -> Response[onboarding.Onboarding]:
|
||||
|
||||
payload = {}
|
||||
|
||||
if prompts is not None:
|
||||
|
@ -95,8 +95,8 @@ if TYPE_CHECKING:
|
||||
GroupChannel,
|
||||
]
|
||||
InteractionCallbackResource = Union[
|
||||
"InteractionMessage",
|
||||
"InteractionCallbackActivityInstance",
|
||||
'InteractionMessage',
|
||||
'InteractionCallbackActivityInstance',
|
||||
]
|
||||
|
||||
MISSING: Any = utils.MISSING
|
||||
@ -735,7 +735,6 @@ class InteractionCallbackResponse(Generic[ClientT]):
|
||||
|
||||
resource = data.get('resource')
|
||||
if resource is not None:
|
||||
|
||||
self.type = try_enum(InteractionResponseType, resource['type'])
|
||||
|
||||
message = resource.get('message')
|
||||
@ -916,8 +915,7 @@ class InteractionResponse(Generic[ClientT]):
|
||||
suppress_embeds: bool = False,
|
||||
silent: bool = False,
|
||||
delete_after: Optional[float] = None,
|
||||
) -> InteractionCallbackResponse[ClientT]:
|
||||
...
|
||||
) -> InteractionCallbackResponse[ClientT]: ...
|
||||
|
||||
@overload
|
||||
async def send_message(
|
||||
@ -936,8 +934,7 @@ class InteractionResponse(Generic[ClientT]):
|
||||
silent: bool = False,
|
||||
delete_after: Optional[float] = None,
|
||||
poll: Poll = MISSING,
|
||||
) -> InteractionCallbackResponse[ClientT]:
|
||||
...
|
||||
) -> InteractionCallbackResponse[ClientT]: ...
|
||||
|
||||
async def send_message(
|
||||
self,
|
||||
@ -1437,8 +1434,7 @@ class InteractionMessage(Message):
|
||||
view: LayoutView,
|
||||
allowed_mentions: Optional[AllowedMentions] = None,
|
||||
delete_after: Optional[float] = None,
|
||||
) -> InteractionMessage:
|
||||
...
|
||||
) -> InteractionMessage: ...
|
||||
|
||||
@overload
|
||||
async def edit(
|
||||
@ -1452,8 +1448,7 @@ class InteractionMessage(Message):
|
||||
allowed_mentions: Optional[AllowedMentions] = None,
|
||||
delete_after: Optional[float] = None,
|
||||
poll: Poll = MISSING,
|
||||
) -> InteractionMessage:
|
||||
...
|
||||
) -> InteractionMessage: ...
|
||||
|
||||
async def edit(
|
||||
self,
|
||||
|
@ -418,7 +418,7 @@ class Invite(Hashable):
|
||||
target_user_data = data.get('target_user')
|
||||
self.target_user: Optional[User] = None if target_user_data is None else self._state.create_user(target_user_data)
|
||||
|
||||
self.target_type: InviteTarget = try_enum(InviteTarget, data.get("target_type", 0))
|
||||
self.target_type: InviteTarget = try_enum(InviteTarget, data.get('target_type', 0))
|
||||
|
||||
application = data.get('target_application')
|
||||
self.target_application: Optional[PartialAppInfo] = (
|
||||
|
@ -448,7 +448,7 @@ class DeletedReferencedMessage:
|
||||
self._parent: MessageReference = parent
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"<DeletedReferencedMessage id={self.id} channel_id={self.channel_id} guild_id={self.guild_id!r}>"
|
||||
return f'<DeletedReferencedMessage id={self.id} channel_id={self.channel_id} guild_id={self.guild_id!r}>'
|
||||
|
||||
@property
|
||||
def id(self) -> int:
|
||||
@ -883,7 +883,9 @@ class MessageInteractionMetadata(Hashable):
|
||||
self.modal_interaction: Optional[MessageInteractionMetadata] = None
|
||||
try:
|
||||
self.modal_interaction = MessageInteractionMetadata(
|
||||
state=state, guild=guild, data=data['triggering_interaction_metadata'] # type: ignore # EAFP
|
||||
state=state,
|
||||
guild=guild,
|
||||
data=data['triggering_interaction_metadata'], # type: ignore # EAFP
|
||||
)
|
||||
except KeyError:
|
||||
pass
|
||||
@ -1748,8 +1750,7 @@ class PartialMessage(Hashable):
|
||||
mention_author: bool = ...,
|
||||
suppress_embeds: bool = ...,
|
||||
silent: bool = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def reply(
|
||||
@ -1764,8 +1765,7 @@ class PartialMessage(Hashable):
|
||||
mention_author: bool = ...,
|
||||
suppress_embeds: bool = ...,
|
||||
silent: bool = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def reply(
|
||||
@ -1785,8 +1785,7 @@ class PartialMessage(Hashable):
|
||||
suppress_embeds: bool = ...,
|
||||
silent: bool = ...,
|
||||
poll: Poll = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def reply(
|
||||
@ -1806,8 +1805,7 @@ class PartialMessage(Hashable):
|
||||
suppress_embeds: bool = ...,
|
||||
silent: bool = ...,
|
||||
poll: Poll = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def reply(
|
||||
@ -1827,8 +1825,7 @@ class PartialMessage(Hashable):
|
||||
suppress_embeds: bool = ...,
|
||||
silent: bool = ...,
|
||||
poll: Poll = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
@overload
|
||||
async def reply(
|
||||
@ -1848,8 +1845,7 @@ class PartialMessage(Hashable):
|
||||
suppress_embeds: bool = ...,
|
||||
silent: bool = ...,
|
||||
poll: Poll = ...,
|
||||
) -> Message:
|
||||
...
|
||||
) -> Message: ...
|
||||
|
||||
async def reply(self, content: Optional[str] = None, **kwargs: Any) -> Message:
|
||||
"""|coro|
|
||||
@ -2726,19 +2722,19 @@ class Message(PartialMessage, Hashable):
|
||||
|
||||
if self.type is MessageType.new_member:
|
||||
formats = [
|
||||
"{0} joined the party.",
|
||||
"{0} is here.",
|
||||
"Welcome, {0}. We hope you brought pizza.",
|
||||
"A wild {0} appeared.",
|
||||
"{0} just landed.",
|
||||
"{0} just slid into the server.",
|
||||
"{0} just showed up!",
|
||||
"Welcome {0}. Say hi!",
|
||||
"{0} hopped into the server.",
|
||||
"Everyone welcome {0}!",
|
||||
'{0} joined the party.',
|
||||
'{0} is here.',
|
||||
'Welcome, {0}. We hope you brought pizza.',
|
||||
'A wild {0} appeared.',
|
||||
'{0} just landed.',
|
||||
'{0} just slid into the server.',
|
||||
'{0} just showed up!',
|
||||
'Welcome {0}. Say hi!',
|
||||
'{0} hopped into the server.',
|
||||
'Everyone welcome {0}!',
|
||||
"Glad you're here, {0}.",
|
||||
"Good to see you, {0}.",
|
||||
"Yay you made it, {0}!",
|
||||
'Good to see you, {0}.',
|
||||
'Yay you made it, {0}!',
|
||||
]
|
||||
|
||||
created_at_ms = int(self.created_at.timestamp() * 1000)
|
||||
@ -2797,7 +2793,7 @@ class Message(PartialMessage, Hashable):
|
||||
|
||||
if self.type is MessageType.thread_starter_message:
|
||||
if self.reference is None or self.reference.resolved is None:
|
||||
return 'Sorry, we couldn\'t load the first message in this thread'
|
||||
return "Sorry, we couldn't load the first message in this thread"
|
||||
|
||||
# the resolved message for the reference will be a Message
|
||||
return self.reference.resolved.content # type: ignore
|
||||
@ -2867,7 +2863,7 @@ class Message(PartialMessage, Hashable):
|
||||
embed.fields,
|
||||
name='poll_question_text',
|
||||
)
|
||||
return f'{self.author.display_name}\'s poll {poll_title.value} has closed.' # type: ignore
|
||||
return f"{self.author.display_name}'s poll {poll_title.value} has closed." # type: ignore
|
||||
|
||||
# Fallback for unknown message types
|
||||
return ''
|
||||
|
@ -72,7 +72,7 @@ __all__ = (
|
||||
|
||||
_log = logging.getLogger(__name__)
|
||||
|
||||
OPUS_SILENCE = b'\xF8\xFF\xFE'
|
||||
OPUS_SILENCE = b'\xf8\xff\xfe'
|
||||
|
||||
c_int_ptr = ctypes.POINTER(ctypes.c_int)
|
||||
c_int16_ptr = ctypes.POINTER(ctypes.c_int16)
|
||||
@ -218,7 +218,7 @@ def libopus_loader(name: str) -> Any:
|
||||
if item[3]:
|
||||
func.errcheck = item[3]
|
||||
except KeyError:
|
||||
_log.exception("Error assigning check function to %s", func)
|
||||
_log.exception('Error assigning check function to %s', func)
|
||||
|
||||
return lib
|
||||
|
||||
@ -476,16 +476,14 @@ class Decoder(_OpusStruct):
|
||||
return ret.value
|
||||
|
||||
@overload
|
||||
def decode(self, data: bytes, *, fec: bool) -> bytes:
|
||||
...
|
||||
def decode(self, data: bytes, *, fec: bool) -> bytes: ...
|
||||
|
||||
@overload
|
||||
def decode(self, data: Literal[None], *, fec: Literal[False]) -> bytes:
|
||||
...
|
||||
def decode(self, data: Literal[None], *, fec: Literal[False]) -> bytes: ...
|
||||
|
||||
def decode(self, data: Optional[bytes], *, fec: bool = False) -> bytes:
|
||||
if data is None and fec:
|
||||
raise TypeError("Invalid arguments: FEC cannot be used with null data")
|
||||
raise TypeError('Invalid arguments: FEC cannot be used with null data')
|
||||
|
||||
if data is None:
|
||||
frame_size = self._get_last_packet_duration() or self.SAMPLES_PER_FRAME
|
||||
|
@ -94,11 +94,9 @@ if TYPE_CHECKING:
|
||||
create_polls: BoolOrNoneT
|
||||
use_external_apps: BoolOrNoneT
|
||||
|
||||
class _PermissionsKwargs(_BasePermissionsKwargs[bool]):
|
||||
...
|
||||
class _PermissionsKwargs(_BasePermissionsKwargs[bool]): ...
|
||||
|
||||
class _PermissionOverwriteKwargs(_BasePermissionsKwargs[Optional[bool]]):
|
||||
...
|
||||
class _PermissionOverwriteKwargs(_BasePermissionsKwargs[Optional[bool]]): ...
|
||||
|
||||
|
||||
# A permission alias works like a regular flag but is marked
|
||||
@ -219,14 +217,14 @@ class Permissions(BaseFlags):
|
||||
if isinstance(other, Permissions):
|
||||
return (self.value & other.value) == self.value
|
||||
else:
|
||||
raise TypeError(f"cannot compare {self.__class__.__name__} with {other.__class__.__name__}")
|
||||
raise TypeError(f'cannot compare {self.__class__.__name__} with {other.__class__.__name__}')
|
||||
|
||||
def is_superset(self, other: Permissions) -> bool:
|
||||
"""Returns ``True`` if self has the same or more permissions as other."""
|
||||
if isinstance(other, Permissions):
|
||||
return (self.value | other.value) == self.value
|
||||
else:
|
||||
raise TypeError(f"cannot compare {self.__class__.__name__} with {other.__class__.__name__}")
|
||||
raise TypeError(f'cannot compare {self.__class__.__name__} with {other.__class__.__name__}')
|
||||
|
||||
def is_strict_subset(self, other: Permissions) -> bool:
|
||||
"""Returns ``True`` if the permissions on other are a strict subset of those on self."""
|
||||
|
@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import threading
|
||||
@ -163,7 +164,7 @@ class FFmpegAudio(AudioSource):
|
||||
stderr: Optional[IO[bytes]] = subprocess_kwargs.pop('stderr', None)
|
||||
|
||||
if stderr == subprocess.PIPE:
|
||||
warnings.warn("Passing subprocess.PIPE does nothing", DeprecationWarning, stacklevel=3)
|
||||
warnings.warn('Passing subprocess.PIPE does nothing', DeprecationWarning, stacklevel=3)
|
||||
stderr = None
|
||||
|
||||
piping_stderr = False
|
||||
@ -573,7 +574,7 @@ class FFmpegOpusAudio(FFmpegAudio):
|
||||
if isinstance(method, str):
|
||||
probefunc = getattr(cls, '_probe_codec_' + method, None)
|
||||
if probefunc is None:
|
||||
raise AttributeError(f"Invalid probe method {method!r}")
|
||||
raise AttributeError(f'Invalid probe method {method!r}')
|
||||
|
||||
if probefunc is cls._probe_codec_native:
|
||||
fallback = cls._probe_codec_fallback
|
||||
@ -603,9 +604,9 @@ class FFmpegOpusAudio(FFmpegAudio):
|
||||
except BaseException:
|
||||
_log.exception("Fallback probe using '%s' failed", executable)
|
||||
else:
|
||||
_log.debug("Fallback probe found codec=%s, bitrate=%s", codec, bitrate)
|
||||
_log.debug('Fallback probe found codec=%s, bitrate=%s', codec, bitrate)
|
||||
else:
|
||||
_log.debug("Probe found codec=%s, bitrate=%s", codec, bitrate)
|
||||
_log.debug('Probe found codec=%s, bitrate=%s', codec, bitrate)
|
||||
|
||||
return codec, bitrate
|
||||
|
||||
@ -634,11 +635,11 @@ class FFmpegOpusAudio(FFmpegAudio):
|
||||
output = out.decode('utf8')
|
||||
codec = bitrate = None
|
||||
|
||||
codec_match = re.search(r"Stream #0.*?Audio: (\w+)", output)
|
||||
codec_match = re.search(r'Stream #0.*?Audio: (\w+)', output)
|
||||
if codec_match:
|
||||
codec = codec_match.group(1)
|
||||
|
||||
br_match = re.search(r"(\d+) [kK]b/s", output)
|
||||
br_match = re.search(r'(\d+) [kK]b/s', output)
|
||||
if br_match:
|
||||
bitrate = max(int(br_match.group(1)), 512)
|
||||
|
||||
@ -825,7 +826,7 @@ class AudioPlayer(threading.Thread):
|
||||
try:
|
||||
asyncio.run_coroutine_threadsafe(self.client.ws.speak(speaking), self.client.client.loop)
|
||||
except Exception:
|
||||
_log.exception("Speaking call in player failed")
|
||||
_log.exception('Speaking call in player failed')
|
||||
|
||||
def send_silence(self, count: int = 5) -> None:
|
||||
try:
|
||||
|
@ -483,7 +483,7 @@ class Poll:
|
||||
return data
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"<Poll duration={self.duration} question=\"{self.question}\" answers={self.answers}>"
|
||||
return f'<Poll duration={self.duration} question="{self.question}" answers={self.answers}>'
|
||||
|
||||
@property
|
||||
def question(self) -> str:
|
||||
|
@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING, Optional, Tuple
|
||||
|
@ -83,7 +83,7 @@ class PrimaryGuild:
|
||||
|
||||
@classmethod
|
||||
def _default(cls, state: ConnectionState) -> Self:
|
||||
payload: PrimaryGuildPayload = {"identity_enabled": False} # type: ignore
|
||||
payload: PrimaryGuildPayload = {'identity_enabled': False} # type: ignore
|
||||
return cls(state=state, data=payload)
|
||||
|
||||
def __repr__(self) -> str:
|
||||
|
@ -429,10 +429,10 @@ class Role(Hashable):
|
||||
|
||||
async def _move(self, position: int, reason: Optional[str]) -> None:
|
||||
if position <= 0:
|
||||
raise ValueError("Cannot move role to position 0 or below")
|
||||
raise ValueError('Cannot move role to position 0 or below')
|
||||
|
||||
if self.is_default():
|
||||
raise ValueError("Cannot move default role")
|
||||
raise ValueError('Cannot move default role')
|
||||
|
||||
if self.position == position:
|
||||
return # Save discord the extra request.
|
||||
@ -447,7 +447,7 @@ class Role(Hashable):
|
||||
else:
|
||||
roles.append(self.id)
|
||||
|
||||
payload: List[RolePositionUpdate] = [{"id": z[0], "position": z[1]} for z in zip(roles, change_range)]
|
||||
payload: List[RolePositionUpdate] = [{'id': z[0], 'position': z[1]} for z in zip(roles, change_range)]
|
||||
await http.move_role_position(self.guild.id, payload, reason=reason)
|
||||
|
||||
async def edit(
|
||||
@ -599,20 +599,16 @@ class Role(Hashable):
|
||||
return Role(guild=self.guild, data=data, state=self._state)
|
||||
|
||||
@overload
|
||||
async def move(self, *, beginning: bool, offset: int = ..., reason: Optional[str] = ...):
|
||||
...
|
||||
async def move(self, *, beginning: bool, offset: int = ..., reason: Optional[str] = ...): ...
|
||||
|
||||
@overload
|
||||
async def move(self, *, end: bool, offset: int = ..., reason: Optional[str] = ...):
|
||||
...
|
||||
async def move(self, *, end: bool, offset: int = ..., reason: Optional[str] = ...): ...
|
||||
|
||||
@overload
|
||||
async def move(self, *, above: Role, offset: int = ..., reason: Optional[str] = ...):
|
||||
...
|
||||
async def move(self, *, above: Role, offset: int = ..., reason: Optional[str] = ...): ...
|
||||
|
||||
@overload
|
||||
async def move(self, *, below: Role, offset: int = ..., reason: Optional[str] = ...):
|
||||
...
|
||||
async def move(self, *, below: Role, offset: int = ..., reason: Optional[str] = ...): ...
|
||||
|
||||
async def move(
|
||||
self,
|
||||
|
@ -310,8 +310,7 @@ class ScheduledEvent(Hashable):
|
||||
status: EventStatus = ...,
|
||||
image: bytes = ...,
|
||||
reason: Optional[str] = ...,
|
||||
) -> ScheduledEvent:
|
||||
...
|
||||
) -> ScheduledEvent: ...
|
||||
|
||||
@overload
|
||||
async def edit(
|
||||
@ -327,8 +326,7 @@ class ScheduledEvent(Hashable):
|
||||
status: EventStatus = ...,
|
||||
image: bytes = ...,
|
||||
reason: Optional[str] = ...,
|
||||
) -> ScheduledEvent:
|
||||
...
|
||||
) -> ScheduledEvent: ...
|
||||
|
||||
@overload
|
||||
async def edit(
|
||||
@ -344,8 +342,7 @@ class ScheduledEvent(Hashable):
|
||||
image: bytes = ...,
|
||||
location: str,
|
||||
reason: Optional[str] = ...,
|
||||
) -> ScheduledEvent:
|
||||
...
|
||||
) -> ScheduledEvent: ...
|
||||
|
||||
@overload
|
||||
async def edit(
|
||||
@ -360,8 +357,7 @@ class ScheduledEvent(Hashable):
|
||||
status: EventStatus = ...,
|
||||
image: bytes = ...,
|
||||
reason: Optional[str] = ...,
|
||||
) -> ScheduledEvent:
|
||||
...
|
||||
) -> ScheduledEvent: ...
|
||||
|
||||
@overload
|
||||
async def edit(
|
||||
@ -376,8 +372,7 @@ class ScheduledEvent(Hashable):
|
||||
image: bytes = ...,
|
||||
location: str,
|
||||
reason: Optional[str] = ...,
|
||||
) -> ScheduledEvent:
|
||||
...
|
||||
) -> ScheduledEvent: ...
|
||||
|
||||
async def edit(
|
||||
self,
|
||||
|
@ -319,7 +319,7 @@ class SessionStartLimits:
|
||||
The number of identify requests allowed per 5 seconds
|
||||
"""
|
||||
|
||||
__slots__ = ("total", "remaining", "reset_after", "max_concurrency")
|
||||
__slots__ = ('total', 'remaining', 'reset_after', 'max_concurrency')
|
||||
|
||||
def __init__(self, **kwargs: Unpack[SessionStartLimit]):
|
||||
self.total: int = kwargs['total']
|
||||
|
@ -22,7 +22,6 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
"""
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import AsyncIterator, Optional, TYPE_CHECKING
|
||||
|
@ -146,7 +146,7 @@ class SoundboardDefaultSound(BaseSoundboardSound):
|
||||
('emoji', self.emoji),
|
||||
]
|
||||
inner = ' '.join('%s=%r' % t for t in attrs)
|
||||
return f"<{self.__class__.__name__} {inner}>"
|
||||
return f'<{self.__class__.__name__} {inner}>'
|
||||
|
||||
|
||||
class SoundboardSound(BaseSoundboardSound):
|
||||
@ -203,7 +203,7 @@ class SoundboardSound(BaseSoundboardSound):
|
||||
('user', self.user),
|
||||
]
|
||||
inner = ' '.join('%s=%r' % t for t in attrs)
|
||||
return f"<{self.__class__.__name__} {inner}>"
|
||||
return f'<{self.__class__.__name__} {inner}>'
|
||||
|
||||
def _update(self, data: SoundboardSoundPayload):
|
||||
super()._update(data)
|
||||
|
@ -1265,14 +1265,12 @@ class ConnectionState(Generic[ClientT]):
|
||||
return guild.id not in self._guilds
|
||||
|
||||
@overload
|
||||
async def chunk_guild(self, guild: Guild, *, wait: Literal[True] = ..., cache: Optional[bool] = ...) -> List[Member]:
|
||||
...
|
||||
async def chunk_guild(self, guild: Guild, *, wait: Literal[True] = ..., cache: Optional[bool] = ...) -> List[Member]: ...
|
||||
|
||||
@overload
|
||||
async def chunk_guild(
|
||||
self, guild: Guild, *, wait: Literal[False] = ..., cache: Optional[bool] = ...
|
||||
) -> asyncio.Future[List[Member]]:
|
||||
...
|
||||
) -> asyncio.Future[List[Member]]: ...
|
||||
|
||||
async def chunk_guild(
|
||||
self, guild: Guild, *, wait: bool = True, cache: Optional[bool] = None
|
||||
@ -1803,7 +1801,10 @@ class ConnectionState(Generic[ClientT]):
|
||||
return self._emojis[emoji_id]
|
||||
except KeyError:
|
||||
return PartialEmoji.with_state(
|
||||
self, animated=data.get('animated', False), id=emoji_id, name=data['name'] # type: ignore
|
||||
self,
|
||||
animated=data.get('animated', False),
|
||||
id=emoji_id,
|
||||
name=data['name'], # type: ignore
|
||||
)
|
||||
|
||||
def _upgrade_partial_emoji(self, emoji: PartialEmoji) -> Union[Emoji, PartialEmoji, str]:
|
||||
|
@ -33,8 +33,7 @@ AutoModerationRuleEventType = Literal[1]
|
||||
AutoModerationTriggerPresets = Literal[1, 2, 3]
|
||||
|
||||
|
||||
class Empty(TypedDict):
|
||||
...
|
||||
class Empty(TypedDict): ...
|
||||
|
||||
|
||||
class _AutoModerationActionMetadataAlert(TypedDict):
|
||||
|
@ -163,7 +163,7 @@ class _ChatInputApplicationCommand(_BaseApplicationCommand, total=False):
|
||||
|
||||
|
||||
class _BaseContextMenuApplicationCommand(_BaseApplicationCommand):
|
||||
description: Literal[""]
|
||||
description: Literal['']
|
||||
|
||||
|
||||
class _UserApplicationCommand(_BaseContextMenuApplicationCommand):
|
||||
|
@ -116,8 +116,7 @@ class _GuildPreviewUnique(TypedDict):
|
||||
approximate_presence_count: int
|
||||
|
||||
|
||||
class GuildPreview(_BaseGuildPreview, _GuildPreviewUnique):
|
||||
...
|
||||
class GuildPreview(_BaseGuildPreview, _GuildPreviewUnique): ...
|
||||
|
||||
|
||||
class Guild(_BaseGuildPreview):
|
||||
@ -167,8 +166,7 @@ class InviteGuild(Guild, total=False):
|
||||
welcome_screen: WelcomeScreen
|
||||
|
||||
|
||||
class GuildWithCounts(Guild, _GuildPreviewUnique):
|
||||
...
|
||||
class GuildWithCounts(Guild, _GuildPreviewUnique): ...
|
||||
|
||||
|
||||
class GuildPrune(TypedDict):
|
||||
|
@ -68,8 +68,7 @@ class Invite(IncompleteInvite, total=False):
|
||||
expires_at: Optional[str]
|
||||
|
||||
|
||||
class InviteWithCounts(Invite, _GuildPreviewUnique):
|
||||
...
|
||||
class InviteWithCounts(Invite, _GuildPreviewUnique): ...
|
||||
|
||||
|
||||
class GatewayInviteCreate(TypedDict):
|
||||
|
@ -81,16 +81,13 @@ class _WithUserCount(TypedDict):
|
||||
user_count: int
|
||||
|
||||
|
||||
class _StageInstanceScheduledEventWithUserCount(StageInstanceScheduledEvent, _WithUserCount):
|
||||
...
|
||||
class _StageInstanceScheduledEventWithUserCount(StageInstanceScheduledEvent, _WithUserCount): ...
|
||||
|
||||
|
||||
class _VoiceScheduledEventWithUserCount(VoiceScheduledEvent, _WithUserCount):
|
||||
...
|
||||
class _VoiceScheduledEventWithUserCount(VoiceScheduledEvent, _WithUserCount): ...
|
||||
|
||||
|
||||
class _ExternalScheduledEventWithUserCount(ExternalScheduledEvent, _WithUserCount):
|
||||
...
|
||||
class _ExternalScheduledEventWithUserCount(ExternalScheduledEvent, _WithUserCount): ...
|
||||
|
||||
|
||||
GuildScheduledEventWithUserCount = Union[
|
||||
|
@ -63,5 +63,4 @@ class _FullWebhook(TypedDict, total=False):
|
||||
application_id: Optional[Snowflake]
|
||||
|
||||
|
||||
class Webhook(PartialWebhook, _FullWebhook):
|
||||
...
|
||||
class Webhook(PartialWebhook, _FullWebhook): ...
|
||||
|
@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import (
|
||||
@ -405,8 +406,7 @@ class ActionRow(Item[V]):
|
||||
max_values: int = ...,
|
||||
disabled: bool = ...,
|
||||
id: Optional[int] = ...,
|
||||
) -> SelectCallbackDecorator[S, SelectT]:
|
||||
...
|
||||
) -> SelectCallbackDecorator[S, SelectT]: ...
|
||||
|
||||
@overload
|
||||
def select(
|
||||
@ -422,8 +422,7 @@ class ActionRow(Item[V]):
|
||||
disabled: bool = ...,
|
||||
default_values: Sequence[ValidDefaultValues] = ...,
|
||||
id: Optional[int] = ...,
|
||||
) -> SelectCallbackDecorator[S, UserSelectT]:
|
||||
...
|
||||
) -> SelectCallbackDecorator[S, UserSelectT]: ...
|
||||
|
||||
@overload
|
||||
def select(
|
||||
@ -439,8 +438,7 @@ class ActionRow(Item[V]):
|
||||
disabled: bool = ...,
|
||||
default_values: Sequence[ValidDefaultValues] = ...,
|
||||
id: Optional[int] = ...,
|
||||
) -> SelectCallbackDecorator[S, RoleSelectT]:
|
||||
...
|
||||
) -> SelectCallbackDecorator[S, RoleSelectT]: ...
|
||||
|
||||
@overload
|
||||
def select(
|
||||
@ -456,8 +454,7 @@ class ActionRow(Item[V]):
|
||||
disabled: bool = ...,
|
||||
default_values: Sequence[ValidDefaultValues] = ...,
|
||||
id: Optional[int] = ...,
|
||||
) -> SelectCallbackDecorator[S, ChannelSelectT]:
|
||||
...
|
||||
) -> SelectCallbackDecorator[S, ChannelSelectT]: ...
|
||||
|
||||
@overload
|
||||
def select(
|
||||
@ -473,8 +470,7 @@ class ActionRow(Item[V]):
|
||||
disabled: bool = ...,
|
||||
default_values: Sequence[ValidDefaultValues] = ...,
|
||||
id: Optional[int] = ...,
|
||||
) -> SelectCallbackDecorator[S, MentionableSelectT]:
|
||||
...
|
||||
) -> SelectCallbackDecorator[S, MentionableSelectT]: ...
|
||||
|
||||
def select(
|
||||
self,
|
||||
|
@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING, List, Literal, Optional, TypeVar, Union
|
||||
|
@ -176,7 +176,7 @@ class Modal(View):
|
||||
else:
|
||||
item = find(lambda i: getattr(i, 'custom_id', None) == component['custom_id'], self.walk_children()) # type: ignore
|
||||
if item is None:
|
||||
_log.debug("Modal interaction referencing unknown item custom_id %s. Discarding", component['custom_id'])
|
||||
_log.debug('Modal interaction referencing unknown item custom_id %s. Discarding', component['custom_id'])
|
||||
continue
|
||||
item._refresh_state(interaction, component) # type: ignore
|
||||
|
||||
|
@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING, Any, Dict, Generator, List, Literal, Optional, TypeVar, Union, ClassVar
|
||||
|
@ -361,11 +361,12 @@ class BaseSelect(Item[V]):
|
||||
payload: List[PossibleValue]
|
||||
try:
|
||||
resolved = Namespace._get_resolved_items(
|
||||
interaction, data['resolved'] # pyright: ignore[reportTypedDictNotRequiredAccess]
|
||||
interaction,
|
||||
data['resolved'], # pyright: ignore[reportTypedDictNotRequiredAccess]
|
||||
)
|
||||
payload = list(resolved.values())
|
||||
except KeyError:
|
||||
payload = data.get("values", []) # type: ignore
|
||||
payload = data.get('values', []) # type: ignore
|
||||
|
||||
self._values = values[self.custom_id] = payload
|
||||
selected_values.set(values)
|
||||
@ -985,8 +986,7 @@ def select(
|
||||
disabled: bool = ...,
|
||||
row: Optional[int] = ...,
|
||||
id: Optional[int] = ...,
|
||||
) -> SelectCallbackDecorator[S, SelectT]:
|
||||
...
|
||||
) -> SelectCallbackDecorator[S, SelectT]: ...
|
||||
|
||||
|
||||
@overload
|
||||
@ -1003,8 +1003,7 @@ def select(
|
||||
default_values: Sequence[ValidDefaultValues] = ...,
|
||||
row: Optional[int] = ...,
|
||||
id: Optional[int] = ...,
|
||||
) -> SelectCallbackDecorator[S, UserSelectT]:
|
||||
...
|
||||
) -> SelectCallbackDecorator[S, UserSelectT]: ...
|
||||
|
||||
|
||||
@overload
|
||||
@ -1021,8 +1020,7 @@ def select(
|
||||
default_values: Sequence[ValidDefaultValues] = ...,
|
||||
row: Optional[int] = ...,
|
||||
id: Optional[int] = ...,
|
||||
) -> SelectCallbackDecorator[S, RoleSelectT]:
|
||||
...
|
||||
) -> SelectCallbackDecorator[S, RoleSelectT]: ...
|
||||
|
||||
|
||||
@overload
|
||||
@ -1039,8 +1037,7 @@ def select(
|
||||
default_values: Sequence[ValidDefaultValues] = ...,
|
||||
row: Optional[int] = ...,
|
||||
id: Optional[int] = ...,
|
||||
) -> SelectCallbackDecorator[S, ChannelSelectT]:
|
||||
...
|
||||
) -> SelectCallbackDecorator[S, ChannelSelectT]: ...
|
||||
|
||||
|
||||
@overload
|
||||
@ -1057,8 +1054,7 @@ def select(
|
||||
default_values: Sequence[ValidDefaultValues] = ...,
|
||||
row: Optional[int] = ...,
|
||||
id: Optional[int] = ...,
|
||||
) -> SelectCallbackDecorator[S, MentionableSelectT]:
|
||||
...
|
||||
) -> SelectCallbackDecorator[S, MentionableSelectT]: ...
|
||||
|
||||
|
||||
def select(
|
||||
|
@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING, Literal, Optional, TypeVar
|
||||
|
@ -689,8 +689,7 @@ class View(BaseView):
|
||||
if TYPE_CHECKING:
|
||||
|
||||
@classmethod
|
||||
def from_message(cls, message: Message, /, *, timeout: Optional[float] = 180.0) -> View:
|
||||
...
|
||||
def from_message(cls, message: Message, /, *, timeout: Optional[float] = 180.0) -> View: ...
|
||||
|
||||
def __init_subclass__(cls) -> None:
|
||||
super().__init_subclass__()
|
||||
@ -783,8 +782,7 @@ class LayoutView(BaseView):
|
||||
if TYPE_CHECKING:
|
||||
|
||||
@classmethod
|
||||
def from_message(cls, message: Message, /, *, timeout: Optional[float] = 180.0) -> LayoutView:
|
||||
...
|
||||
def from_message(cls, message: Message, /, *, timeout: Optional[float] = 180.0) -> LayoutView: ...
|
||||
|
||||
def __init__(self, *, timeout: Optional[float] = 180.0) -> None:
|
||||
super().__init__(timeout=timeout)
|
||||
@ -1046,7 +1044,7 @@ class ViewStore:
|
||||
) -> None:
|
||||
modal = self._modals.get(custom_id)
|
||||
if modal is None:
|
||||
_log.debug("Modal interaction referencing unknown custom_id %s. Discarding", custom_id)
|
||||
_log.debug('Modal interaction referencing unknown custom_id %s. Discarding', custom_id)
|
||||
return
|
||||
|
||||
self.add_task(modal._dispatch_submit(interaction, components))
|
||||
|
@ -101,8 +101,8 @@ class BaseUser(_UserTag):
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return (
|
||||
f"<BaseUser id={self.id} name={self.name!r} global_name={self.global_name!r}"
|
||||
f" bot={self.bot} system={self.system}>"
|
||||
f'<BaseUser id={self.id} name={self.name!r} global_name={self.global_name!r}'
|
||||
f' bot={self.bot} system={self.system}>'
|
||||
)
|
||||
|
||||
def __str__(self) -> str:
|
||||
|
@ -158,8 +158,7 @@ if TYPE_CHECKING:
|
||||
class _DecompressionContext(Protocol):
|
||||
COMPRESSION_TYPE: str
|
||||
|
||||
def decompress(self, data: bytes, /) -> str | None:
|
||||
...
|
||||
def decompress(self, data: bytes, /) -> str | None: ...
|
||||
|
||||
P = ParamSpec('P')
|
||||
|
||||
@ -186,12 +185,10 @@ class CachedSlotProperty(Generic[T, T_co]):
|
||||
self.__doc__ = getattr(function, '__doc__')
|
||||
|
||||
@overload
|
||||
def __get__(self, instance: None, owner: Type[T]) -> CachedSlotProperty[T, T_co]:
|
||||
...
|
||||
def __get__(self, instance: None, owner: Type[T]) -> CachedSlotProperty[T, T_co]: ...
|
||||
|
||||
@overload
|
||||
def __get__(self, instance: T, owner: Type[T]) -> T_co:
|
||||
...
|
||||
def __get__(self, instance: T, owner: Type[T]) -> T_co: ...
|
||||
|
||||
def __get__(self, instance: Optional[T], owner: Type[T]) -> Any:
|
||||
if instance is None:
|
||||
@ -240,15 +237,13 @@ class SequenceProxy(Sequence[T_co]):
|
||||
return self.__proxied
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"SequenceProxy({self.__proxied!r})"
|
||||
return f'SequenceProxy({self.__proxied!r})'
|
||||
|
||||
@overload
|
||||
def __getitem__(self, idx: SupportsIndex) -> T_co:
|
||||
...
|
||||
def __getitem__(self, idx: SupportsIndex) -> T_co: ...
|
||||
|
||||
@overload
|
||||
def __getitem__(self, idx: slice) -> List[T_co]:
|
||||
...
|
||||
def __getitem__(self, idx: slice) -> List[T_co]: ...
|
||||
|
||||
def __getitem__(self, idx: Union[SupportsIndex, slice]) -> Union[T_co, List[T_co]]:
|
||||
return self.__copied[idx]
|
||||
@ -273,18 +268,15 @@ class SequenceProxy(Sequence[T_co]):
|
||||
|
||||
|
||||
@overload
|
||||
def parse_time(timestamp: None) -> None:
|
||||
...
|
||||
def parse_time(timestamp: None) -> None: ...
|
||||
|
||||
|
||||
@overload
|
||||
def parse_time(timestamp: str) -> datetime.datetime:
|
||||
...
|
||||
def parse_time(timestamp: str) -> datetime.datetime: ...
|
||||
|
||||
|
||||
@overload
|
||||
def parse_time(timestamp: Optional[str]) -> Optional[datetime.datetime]:
|
||||
...
|
||||
def parse_time(timestamp: Optional[str]) -> Optional[datetime.datetime]: ...
|
||||
|
||||
|
||||
def parse_time(timestamp: Optional[str]) -> Optional[datetime.datetime]:
|
||||
@ -308,7 +300,7 @@ def deprecated(instead: Optional[str] = None) -> Callable[[Callable[P, T]], Call
|
||||
def decorated(*args: P.args, **kwargs: P.kwargs) -> T:
|
||||
warnings.simplefilter('always', DeprecationWarning) # turn off filter
|
||||
if instead:
|
||||
fmt = "{0.__name__} is deprecated, use {1} instead."
|
||||
fmt = '{0.__name__} is deprecated, use {1} instead.'
|
||||
else:
|
||||
fmt = '{0.__name__} is deprecated.'
|
||||
|
||||
@ -447,13 +439,11 @@ async def _afind(predicate: Callable[[T], Any], iterable: AsyncIterable[T], /) -
|
||||
|
||||
|
||||
@overload
|
||||
def find(predicate: Callable[[T], Any], iterable: AsyncIterable[T], /) -> Coro[Optional[T]]:
|
||||
...
|
||||
def find(predicate: Callable[[T], Any], iterable: AsyncIterable[T], /) -> Coro[Optional[T]]: ...
|
||||
|
||||
|
||||
@overload
|
||||
def find(predicate: Callable[[T], Any], iterable: Iterable[T], /) -> Optional[T]:
|
||||
...
|
||||
def find(predicate: Callable[[T], Any], iterable: Iterable[T], /) -> Optional[T]: ...
|
||||
|
||||
|
||||
def find(predicate: Callable[[T], Any], iterable: _Iter[T], /) -> Union[Optional[T], Coro[Optional[T]]]:
|
||||
@ -533,13 +523,11 @@ async def _aget(iterable: AsyncIterable[T], /, **attrs: Any) -> Optional[T]:
|
||||
|
||||
|
||||
@overload
|
||||
def get(iterable: AsyncIterable[T], /, **attrs: Any) -> Coro[Optional[T]]:
|
||||
...
|
||||
def get(iterable: AsyncIterable[T], /, **attrs: Any) -> Coro[Optional[T]]: ...
|
||||
|
||||
|
||||
@overload
|
||||
def get(iterable: Iterable[T], /, **attrs: Any) -> Optional[T]:
|
||||
...
|
||||
def get(iterable: Iterable[T], /, **attrs: Any) -> Optional[T]: ...
|
||||
|
||||
|
||||
def get(iterable: _Iter[T], /, **attrs: Any) -> Union[Optional[T], Coro[Optional[T]]]:
|
||||
@ -622,7 +610,7 @@ def _get_as_snowflake(data: Any, key: str) -> Optional[int]:
|
||||
|
||||
|
||||
def _get_mime_type_for_image(data: bytes):
|
||||
if data.startswith(b'\x89\x50\x4E\x47\x0D\x0A\x1A\x0A'):
|
||||
if data.startswith(b'\x89\x50\x4e\x47\x0d\x0a\x1a\x0a'):
|
||||
return 'image/png'
|
||||
elif data[0:3] == b'\xff\xd8\xff' or data[6:10] in (b'JFIF', b'Exif'):
|
||||
return 'image/jpeg'
|
||||
@ -756,13 +744,11 @@ def compute_timedelta(dt: datetime.datetime) -> float:
|
||||
|
||||
|
||||
@overload
|
||||
async def sleep_until(when: datetime.datetime, result: T) -> T:
|
||||
...
|
||||
async def sleep_until(when: datetime.datetime, result: T) -> T: ...
|
||||
|
||||
|
||||
@overload
|
||||
async def sleep_until(when: datetime.datetime) -> None:
|
||||
...
|
||||
async def sleep_until(when: datetime.datetime) -> None: ...
|
||||
|
||||
|
||||
async def sleep_until(when: datetime.datetime, result: Optional[T] = None) -> Optional[T]:
|
||||
@ -823,8 +809,7 @@ class SnowflakeList(_SnowflakeListBase):
|
||||
|
||||
if TYPE_CHECKING:
|
||||
|
||||
def __init__(self, data: Iterable[int], *, is_sorted: bool = False):
|
||||
...
|
||||
def __init__(self, data: Iterable[int], *, is_sorted: bool = False): ...
|
||||
|
||||
def __new__(cls, data: Iterable[int], *, is_sorted: bool = False) -> Self:
|
||||
return array.array.__new__(cls, 'Q', data if is_sorted else sorted(data)) # type: ignore
|
||||
@ -934,11 +919,11 @@ _MARKDOWN_ESCAPE_SUBREGEX = '|'.join(r'\{0}(?=([\s\S]*((?<!\{0})\{0})))'.format(
|
||||
|
||||
_MARKDOWN_ESCAPE_COMMON = r'^>(?:>>)?\s|\[.+\]\(.+\)|^#{1,3}|^\s*-'
|
||||
|
||||
_MARKDOWN_ESCAPE_REGEX = re.compile(fr'(?P<markdown>{_MARKDOWN_ESCAPE_SUBREGEX}|{_MARKDOWN_ESCAPE_COMMON})', re.MULTILINE)
|
||||
_MARKDOWN_ESCAPE_REGEX = re.compile(rf'(?P<markdown>{_MARKDOWN_ESCAPE_SUBREGEX}|{_MARKDOWN_ESCAPE_COMMON})', re.MULTILINE)
|
||||
|
||||
_URL_REGEX = r'(?P<url><[^: >]+:\/[^ >]+>|(?:https?|steam):\/\/[^\s<]+[^<.,:;\"\'\]\s])'
|
||||
|
||||
_MARKDOWN_STOCK_REGEX = fr'(?P<markdown>[_\\~|\*`]|{_MARKDOWN_ESCAPE_COMMON})'
|
||||
_MARKDOWN_STOCK_REGEX = rf'(?P<markdown>[_\\~|\*`]|{_MARKDOWN_ESCAPE_COMMON})'
|
||||
|
||||
|
||||
def remove_markdown(text: str, *, ignore_links: bool = True) -> str:
|
||||
@ -1073,13 +1058,11 @@ async def _achunk(iterator: AsyncIterable[T], max_size: int) -> AsyncIterator[Li
|
||||
|
||||
|
||||
@overload
|
||||
def as_chunks(iterator: AsyncIterable[T], max_size: int) -> AsyncIterator[List[T]]:
|
||||
...
|
||||
def as_chunks(iterator: AsyncIterable[T], max_size: int) -> AsyncIterator[List[T]]: ...
|
||||
|
||||
|
||||
@overload
|
||||
def as_chunks(iterator: Iterable[T], max_size: int) -> Iterator[List[T]]:
|
||||
...
|
||||
def as_chunks(iterator: Iterable[T], max_size: int) -> Iterator[List[T]]: ...
|
||||
|
||||
|
||||
def as_chunks(iterator: _Iter[T], max_size: int) -> _Iter[List[T]]:
|
||||
@ -1304,7 +1287,6 @@ def stream_supports_colour(stream: Any) -> bool:
|
||||
|
||||
|
||||
class _ColourFormatter(logging.Formatter):
|
||||
|
||||
# ANSI codes are a bit weird to decipher if you're unfamiliar with them, so here's a refresher
|
||||
# It starts off with a format like \x1b[XXXm where XXX is a semicolon separated list of commands
|
||||
# The important ones here relate to colour.
|
||||
@ -1499,37 +1481,37 @@ def _format_call_duration(duration: datetime.timedelta) -> str:
|
||||
threshold_M = 10.5
|
||||
|
||||
if seconds < threshold_s:
|
||||
formatted = "a few seconds"
|
||||
formatted = 'a few seconds'
|
||||
elif seconds < (threshold_m * minutes_s):
|
||||
minutes = round(seconds / minutes_s)
|
||||
if minutes == 1:
|
||||
formatted = "a minute"
|
||||
formatted = 'a minute'
|
||||
else:
|
||||
formatted = f"{minutes} minutes"
|
||||
formatted = f'{minutes} minutes'
|
||||
elif seconds < (threshold_h * hours_s):
|
||||
hours = round(seconds / hours_s)
|
||||
if hours == 1:
|
||||
formatted = "an hour"
|
||||
formatted = 'an hour'
|
||||
else:
|
||||
formatted = f"{hours} hours"
|
||||
formatted = f'{hours} hours'
|
||||
elif seconds < (threshold_d * days_s):
|
||||
days = round(seconds / days_s)
|
||||
if days == 1:
|
||||
formatted = "a day"
|
||||
formatted = 'a day'
|
||||
else:
|
||||
formatted = f"{days} days"
|
||||
formatted = f'{days} days'
|
||||
elif seconds < (threshold_M * months_s):
|
||||
months = round(seconds / months_s)
|
||||
if months == 1:
|
||||
formatted = "a month"
|
||||
formatted = 'a month'
|
||||
else:
|
||||
formatted = f"{months} months"
|
||||
formatted = f'{months} months'
|
||||
else:
|
||||
years = round(seconds / years_s)
|
||||
if years == 1:
|
||||
formatted = "a year"
|
||||
formatted = 'a year'
|
||||
else:
|
||||
formatted = f"{years} years"
|
||||
formatted = f'{years} years'
|
||||
|
||||
return formatted
|
||||
|
||||
|
@ -217,7 +217,7 @@ class VoiceClient(VoiceProtocol):
|
||||
|
||||
def __init__(self, client: Client, channel: abc.Connectable) -> None:
|
||||
if not has_nacl:
|
||||
raise RuntimeError("PyNaCl library needed in order to use voice")
|
||||
raise RuntimeError('PyNaCl library needed in order to use voice')
|
||||
|
||||
super().__init__(client, channel)
|
||||
state = client._connection
|
||||
@ -321,7 +321,7 @@ class VoiceClient(VoiceProtocol):
|
||||
.. versionadded:: 1.4
|
||||
"""
|
||||
ws = self._connection.ws
|
||||
return float("inf") if not ws else ws.latency
|
||||
return float('inf') if not ws else ws.latency
|
||||
|
||||
@property
|
||||
def average_latency(self) -> float:
|
||||
@ -330,7 +330,7 @@ class VoiceClient(VoiceProtocol):
|
||||
.. versionadded:: 1.4
|
||||
"""
|
||||
ws = self._connection.ws
|
||||
return float("inf") if not ws else ws.average_latency
|
||||
return float('inf') if not ws else ws.average_latency
|
||||
|
||||
async def disconnect(self, *, force: bool = False) -> None:
|
||||
"""|coro|
|
||||
|
@ -148,7 +148,7 @@ class SocketReader(threading.Thread):
|
||||
readable, _, _ = select.select([self.state.socket], [], [], 30)
|
||||
except (ValueError, TypeError, OSError) as e:
|
||||
_log.debug(
|
||||
"Select error handling socket in reader, this should be safe to ignore: %s: %s", e.__class__.__name__, e
|
||||
'Select error handling socket in reader, this should be safe to ignore: %s: %s', e.__class__.__name__, e
|
||||
)
|
||||
# The socket is either closed or doesn't exist at the moment
|
||||
continue
|
||||
|
@ -1324,7 +1324,7 @@ class Webhook(BaseWebhook):
|
||||
|
||||
@classmethod
|
||||
def _as_follower(cls, data, *, channel, user) -> Self:
|
||||
name = f"{channel.guild} #{channel}"
|
||||
name = f'{channel.guild} #{channel}'
|
||||
feed: WebhookPayload = {
|
||||
'id': data['webhook_id'],
|
||||
'type': 2,
|
||||
@ -1622,8 +1622,7 @@ class Webhook(BaseWebhook):
|
||||
suppress_embeds: bool = MISSING,
|
||||
silent: bool = MISSING,
|
||||
applied_tags: List[ForumTag] = MISSING,
|
||||
) -> WebhookMessage:
|
||||
...
|
||||
) -> WebhookMessage: ...
|
||||
|
||||
@overload
|
||||
async def send(
|
||||
@ -1642,8 +1641,7 @@ class Webhook(BaseWebhook):
|
||||
suppress_embeds: bool = MISSING,
|
||||
silent: bool = MISSING,
|
||||
applied_tags: List[ForumTag] = MISSING,
|
||||
) -> None:
|
||||
...
|
||||
) -> None: ...
|
||||
|
||||
@overload
|
||||
async def send(
|
||||
@ -1667,8 +1665,7 @@ class Webhook(BaseWebhook):
|
||||
silent: bool = MISSING,
|
||||
applied_tags: List[ForumTag] = MISSING,
|
||||
poll: Poll = MISSING,
|
||||
) -> WebhookMessage:
|
||||
...
|
||||
) -> WebhookMessage: ...
|
||||
|
||||
@overload
|
||||
async def send(
|
||||
@ -1692,8 +1689,7 @@ class Webhook(BaseWebhook):
|
||||
silent: bool = MISSING,
|
||||
applied_tags: List[ForumTag] = MISSING,
|
||||
poll: Poll = MISSING,
|
||||
) -> None:
|
||||
...
|
||||
) -> None: ...
|
||||
|
||||
async def send(
|
||||
self,
|
||||
@ -1987,8 +1983,7 @@ class Webhook(BaseWebhook):
|
||||
view: LayoutView,
|
||||
allowed_mentions: Optional[AllowedMentions] = ...,
|
||||
thread: Snowflake = ...,
|
||||
) -> WebhookMessage:
|
||||
...
|
||||
) -> WebhookMessage: ...
|
||||
|
||||
@overload
|
||||
async def edit_message(
|
||||
@ -2002,8 +1997,7 @@ class Webhook(BaseWebhook):
|
||||
view: Optional[View] = ...,
|
||||
allowed_mentions: Optional[AllowedMentions] = ...,
|
||||
thread: Snowflake = ...,
|
||||
) -> WebhookMessage:
|
||||
...
|
||||
) -> WebhookMessage: ...
|
||||
|
||||
async def edit_message(
|
||||
self,
|
||||
|
@ -872,8 +872,7 @@ class SyncWebhook(BaseWebhook):
|
||||
suppress_embeds: bool = MISSING,
|
||||
silent: bool = MISSING,
|
||||
applied_tags: List[ForumTag] = MISSING,
|
||||
) -> SyncWebhookMessage:
|
||||
...
|
||||
) -> SyncWebhookMessage: ...
|
||||
|
||||
@overload
|
||||
def send(
|
||||
@ -891,8 +890,7 @@ class SyncWebhook(BaseWebhook):
|
||||
suppress_embeds: bool = MISSING,
|
||||
silent: bool = MISSING,
|
||||
applied_tags: List[ForumTag] = MISSING,
|
||||
) -> None:
|
||||
...
|
||||
) -> None: ...
|
||||
|
||||
@overload
|
||||
def send(
|
||||
@ -915,8 +913,7 @@ class SyncWebhook(BaseWebhook):
|
||||
applied_tags: List[ForumTag] = MISSING,
|
||||
poll: Poll = MISSING,
|
||||
view: View = MISSING,
|
||||
) -> SyncWebhookMessage:
|
||||
...
|
||||
) -> SyncWebhookMessage: ...
|
||||
|
||||
@overload
|
||||
def send(
|
||||
@ -939,8 +936,7 @@ class SyncWebhook(BaseWebhook):
|
||||
applied_tags: List[ForumTag] = MISSING,
|
||||
poll: Poll = MISSING,
|
||||
view: View = MISSING,
|
||||
) -> None:
|
||||
...
|
||||
) -> None: ...
|
||||
|
||||
def send(
|
||||
self,
|
||||
@ -1192,8 +1188,7 @@ class SyncWebhook(BaseWebhook):
|
||||
view: LayoutView,
|
||||
allowed_mentions: Optional[AllowedMentions] = ...,
|
||||
thread: Snowflake = ...,
|
||||
) -> SyncWebhookMessage:
|
||||
...
|
||||
) -> SyncWebhookMessage: ...
|
||||
|
||||
@overload
|
||||
def edit_message(
|
||||
@ -1207,8 +1202,7 @@ class SyncWebhook(BaseWebhook):
|
||||
view: Optional[View] = ...,
|
||||
allowed_mentions: Optional[AllowedMentions] = ...,
|
||||
thread: Snowflake = ...,
|
||||
) -> SyncWebhookMessage:
|
||||
...
|
||||
) -> SyncWebhookMessage: ...
|
||||
|
||||
def edit_message(
|
||||
self,
|
||||
|
@ -195,7 +195,7 @@ class WidgetMember(BaseUser):
|
||||
self.connected_channel: Optional[WidgetChannel] = connected_channel
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"<WidgetMember name={self.name!r} global_name={self.global_name!r}" f" bot={self.bot} nick={self.nick!r}>"
|
||||
return f'<WidgetMember name={self.name!r} global_name={self.global_name!r} bot={self.bot} nick={self.nick!r}>'
|
||||
|
||||
@property
|
||||
def display_name(self) -> str:
|
||||
@ -292,7 +292,7 @@ class Widget:
|
||||
@property
|
||||
def json_url(self) -> str:
|
||||
""":class:`str`: The JSON URL of the widget."""
|
||||
return f"https://discord.com/api/guilds/{self.id}/widget.json"
|
||||
return f'https://discord.com/api/guilds/{self.id}/widget.json'
|
||||
|
||||
@property
|
||||
def invite_url(self) -> Optional[str]:
|
||||
|
@ -31,7 +31,6 @@ class CustomBot(commands.Bot):
|
||||
self.initial_extensions = initial_extensions
|
||||
|
||||
async def setup_hook(self) -> None:
|
||||
|
||||
# here, we are loading extensions prior to sync to ensure we are syncing interactions defined in those extensions.
|
||||
|
||||
for extension in self.initial_extensions:
|
||||
@ -53,7 +52,6 @@ class CustomBot(commands.Bot):
|
||||
|
||||
|
||||
async def main():
|
||||
|
||||
# When taking over how the bot process is run, you become responsible for a few additional things.
|
||||
|
||||
# 1. logging
|
||||
|
@ -92,6 +92,7 @@ async def joined(interaction: discord.Interaction, member: Optional[discord.Memb
|
||||
# accessing a menu within the client, usually via right clicking.
|
||||
# It always takes an interaction as its first parameter and a Member or Message as its second parameter.
|
||||
|
||||
|
||||
# This context menu command only works on members
|
||||
@client.tree.context_menu(name='Show Join Date')
|
||||
async def show_join_date(interaction: discord.Interaction, member: discord.Member):
|
||||
|
@ -60,6 +60,7 @@ async def add(
|
||||
# Examples of these include int, str, float, bool, User, Member, Role, and any channel type.
|
||||
# Since there are a lot of these, for brevity only a channel example will be included.
|
||||
|
||||
|
||||
# This command shows how to only show text and voice channels to a user using the Union type hint
|
||||
# combined with the VoiceChannel and TextChannel types.
|
||||
@client.tree.command(name='channel-info')
|
||||
@ -83,6 +84,7 @@ async def channel_info(interaction: discord.Interaction, channel: Union[discord.
|
||||
# In order to support choices, the library has a few ways of doing this.
|
||||
# The first one is using a typing.Literal for basic choices.
|
||||
|
||||
|
||||
# On Discord, this will show up as two choices, Buy and Sell.
|
||||
# In the code, you will receive either 'Buy' or 'Sell' as a string.
|
||||
@client.tree.command()
|
||||
|
@ -4,10 +4,10 @@ import discord
|
||||
from discord.ext import commands
|
||||
import random
|
||||
|
||||
description = '''An example bot to showcase the discord.ext.commands extension
|
||||
description = """An example bot to showcase the discord.ext.commands extension
|
||||
module.
|
||||
|
||||
There are a number of utility commands being showcased here.'''
|
||||
There are a number of utility commands being showcased here."""
|
||||
|
||||
intents = discord.Intents.default()
|
||||
intents.members = True
|
||||
|
@ -97,10 +97,10 @@ class Music(commands.Cog):
|
||||
"""Changes the player's volume"""
|
||||
|
||||
if ctx.voice_client is None:
|
||||
return await ctx.send("Not connected to a voice channel.")
|
||||
return await ctx.send('Not connected to a voice channel.')
|
||||
|
||||
ctx.voice_client.source.volume = volume / 100
|
||||
await ctx.send(f"Changed volume to {volume}%")
|
||||
await ctx.send(f'Changed volume to {volume}%')
|
||||
|
||||
@commands.command()
|
||||
async def stop(self, ctx):
|
||||
@ -116,8 +116,8 @@ class Music(commands.Cog):
|
||||
if ctx.author.voice:
|
||||
await ctx.author.voice.channel.connect()
|
||||
else:
|
||||
await ctx.send("You are not connected to a voice channel.")
|
||||
raise commands.CommandError("Author not connected to a voice channel.")
|
||||
await ctx.send('You are not connected to a voice channel.')
|
||||
raise commands.CommandError('Author not connected to a voice channel.')
|
||||
elif ctx.voice_client.is_playing():
|
||||
ctx.voice_client.stop()
|
||||
|
||||
@ -126,7 +126,7 @@ intents = discord.Intents.default()
|
||||
intents.message_content = True
|
||||
|
||||
bot = commands.Bot(
|
||||
command_prefix=commands.when_mentioned_or("!"),
|
||||
command_prefix=commands.when_mentioned_or('!'),
|
||||
description='Relatively simple music bot example',
|
||||
intents=intents,
|
||||
)
|
||||
|
@ -40,7 +40,7 @@ async def userinfo_error(ctx: commands.Context, error: commands.CommandError):
|
||||
# If the conversion above fails for any reason, it will raise `commands.BadArgument`
|
||||
# so we handle this in this error handler:
|
||||
if isinstance(error, commands.BadArgument):
|
||||
return await ctx.send('Couldn\'t find that user.')
|
||||
return await ctx.send("Couldn't find that user.")
|
||||
# The default `on_command_error` will ignore errors from this command
|
||||
# because we made our own command-specific error handler,
|
||||
# so we need to log tracebacks ourselves.
|
||||
|
@ -55,5 +55,5 @@ async def guess(ctx, number: int):
|
||||
# let people do very malicious things with your
|
||||
# bot. Try to use a file or something to keep
|
||||
# them private, and don't commit it to GitHub
|
||||
token = "your token here"
|
||||
token = 'your token here'
|
||||
bot.run(token)
|
||||
|
@ -70,7 +70,7 @@ class Feedback(discord.ui.Modal, title='Feedback'):
|
||||
client = MyClient()
|
||||
|
||||
|
||||
@client.tree.command(guild=TEST_GUILD, description="Submit feedback")
|
||||
@client.tree.command(guild=TEST_GUILD, description='Submit feedback')
|
||||
async def feedback(interaction: discord.Interaction):
|
||||
# Send the modal with an instance of our `Feedback` class
|
||||
# Since modals require an interaction, they cannot be done as a response to a text command.
|
||||
|
@ -84,7 +84,7 @@ class TimeoutModal(discord.ui.Modal, title='Timeout Member'):
|
||||
client = MyClient()
|
||||
|
||||
|
||||
@client.tree.command(guild=TEST_GUILD, description="Timeout a member")
|
||||
@client.tree.command(guild=TEST_GUILD, description='Timeout a member')
|
||||
async def timeout(interaction: discord.Interaction, member: discord.Member):
|
||||
# Send the modal with an instance of our `TimeoutModal` class
|
||||
# Since modals require an interaction, they cannot be done as a response to a text command.
|
||||
|
@ -5,7 +5,8 @@ from discord.ext import commands
|
||||
|
||||
intents = discord.Intents.default()
|
||||
|
||||
bot = commands.Bot(command_prefix=commands.when_mentioned, description="Nothing to see here!", intents=intents)
|
||||
bot = commands.Bot(command_prefix=commands.when_mentioned, description='Nothing to see here!', intents=intents)
|
||||
|
||||
|
||||
# the `hidden` keyword argument hides it from the help command.
|
||||
@bot.group(hidden=True)
|
||||
|
@ -22,7 +22,6 @@ class CounterBot(commands.Bot):
|
||||
|
||||
# Define a simple View that gives us a counter button
|
||||
class Counter(discord.ui.View):
|
||||
|
||||
# Define the actual button
|
||||
# When pressed, this increments the number displayed until it hits 5.
|
||||
# When it hits 5, the counter button is disabled and it turns green.
|
||||
|
@ -3,12 +3,12 @@
|
||||
import discord
|
||||
from discord.ext import commands
|
||||
|
||||
|
||||
# Defines a custom Select containing colour options
|
||||
# that the user can choose. The callback function
|
||||
# of this class is called when the user changes their choice
|
||||
class Dropdown(discord.ui.Select):
|
||||
def __init__(self):
|
||||
|
||||
# Set the options that will be presented inside the dropdown
|
||||
options = [
|
||||
discord.SelectOption(label='Red', description='Your favourite colour is red', emoji='🟥'),
|
||||
|
@ -15,6 +15,7 @@ import re
|
||||
# `counter:5:user:80088516616269824` where the first number is the current count and the
|
||||
# second number is the user ID who owns the button.
|
||||
|
||||
|
||||
# Note that custom_ids can only be up to 100 characters long.
|
||||
class DynamicCounter(
|
||||
discord.ui.DynamicItem[discord.ui.Button],
|
||||
|
@ -22,7 +22,6 @@ class EphemeralCounterBot(commands.Bot):
|
||||
|
||||
# Define a simple View that gives us a counter button
|
||||
class Counter(discord.ui.View):
|
||||
|
||||
# Define the actual button
|
||||
# When pressed, this increments the number displayed until it hits 5.
|
||||
# When it hits 5, the counter button is disabled and it turns green.
|
||||
|
@ -9,24 +9,24 @@ import enum
|
||||
|
||||
|
||||
class FruitType(enum.Enum):
|
||||
apple = "Apple"
|
||||
banana = "Banana"
|
||||
orange = "Orange"
|
||||
grape = "Grape"
|
||||
mango = "Mango"
|
||||
watermelon = "Watermelon"
|
||||
coconut = "Coconut"
|
||||
apple = 'Apple'
|
||||
banana = 'Banana'
|
||||
orange = 'Orange'
|
||||
grape = 'Grape'
|
||||
mango = 'Mango'
|
||||
watermelon = 'Watermelon'
|
||||
coconut = 'Coconut'
|
||||
|
||||
@property
|
||||
def emoji(self) -> str:
|
||||
emojis = {
|
||||
"Apple": "🍎",
|
||||
"Banana": "🍌",
|
||||
"Orange": "🍊",
|
||||
"Grape": "🍇",
|
||||
"Mango": "🥭",
|
||||
"Watermelon": "🍉",
|
||||
"Coconut": "🥥",
|
||||
'Apple': '🍎',
|
||||
'Banana': '🍌',
|
||||
'Orange': '🍊',
|
||||
'Grape': '🍇',
|
||||
'Mango': '🥭',
|
||||
'Watermelon': '🍉',
|
||||
'Coconut': '🥥',
|
||||
}
|
||||
return emojis[self.value]
|
||||
|
||||
|
@ -4,6 +4,7 @@ from typing import List
|
||||
from discord.ext import commands
|
||||
import discord
|
||||
|
||||
|
||||
# Defines a custom button that contains the logic of the game.
|
||||
# The ['TicTacToe'] bit is for type hinting purposes to tell your IDE or linter
|
||||
# what the type of `self.view` is. It is not required.
|
||||
|
@ -70,7 +70,7 @@ test = [
|
||||
"tzdata; sys_platform == 'win32'",
|
||||
]
|
||||
dev = [
|
||||
"black==22.6",
|
||||
"ruff==0.12",
|
||||
"typing_extensions>=4.3,<5",
|
||||
]
|
||||
|
||||
@ -90,6 +90,13 @@ include-package-data = true
|
||||
line-length = 125
|
||||
skip-string-normalization = true
|
||||
|
||||
[tool.ruff]
|
||||
line-length = 125
|
||||
|
||||
[tool.ruff.format]
|
||||
line-ending = "lf"
|
||||
quote-style = "single"
|
||||
|
||||
[tool.coverage.run]
|
||||
omit = [
|
||||
"discord/__main__.py",
|
||||
|
Loading…
x
Reference in New Issue
Block a user