update docs and add message replies
This commit is contained in:
parent
195bace135
commit
690dcdaf2e
18
README.rst
18
README.rst
@ -13,23 +13,7 @@ Credits to the `original lib by Rapptz <https://github.com/iDutchy/discord.py>`_
|
|||||||
Custom Features
|
Custom Features
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
- **Documentation URL:** https://enhanced-dpy.readthedocs.io/en/latest/index.html
|
**Moved to:** `Custom Features <https://enhanced-dpy.readthedocs.io/en/latest/custom_features.html>`_
|
||||||
- Added ``Guild.bots`` / ``Guild.humans``
|
|
||||||
- Added ``Bot.owner`` / ``Bot.owners``
|
|
||||||
- Added ``Client.try_user`` / ``Bot.try_user``
|
|
||||||
- ``Guild.icon_url`` and ``User.avatar_url`` return the string in stead of Asset. use icon/avatar url_as to get the Asset
|
|
||||||
- Merged in ext-colors (https://github.com/MGardne8/DiscordPyColours)
|
|
||||||
- Using Rapptz/discord.py/tree/neo-docs for documentation
|
|
||||||
- Added support for ``hex()`` to ``discord.Color``
|
|
||||||
- Added ``Client.embed_color`` / ``Bot.embed_color``
|
|
||||||
- Added ``Client.set_embed_color`` / ``Bot.set_embed_color``
|
|
||||||
- Added ``TextChannel.can_send``
|
|
||||||
- Added ``Intents.from_list``
|
|
||||||
- Added support for ``int()`` to ``discord.User``, ``discord.Member``, ``discord.Emoji``, ``discord.Role``, ``discord.Guild``, ``discord.Message``, ``discord.TextChannel``, ``discord.VoiceChannel``, ``discord.CategoryChannel``, ``discord.Attachment`` and ``discord.Message``. This will return their id
|
|
||||||
- Added support for ``str()`` to ``discord.Message``. This will return the message content
|
|
||||||
- Added ``Guild.try_member``
|
|
||||||
- Added ``Context.clean_prefix``
|
|
||||||
- Added ``Color.nitro_booster``
|
|
||||||
|
|
||||||
Key Features
|
Key Features
|
||||||
-------------
|
-------------
|
||||||
|
@ -15,7 +15,7 @@ __title__ = 'discord'
|
|||||||
__author__ = 'Rapptz'
|
__author__ = 'Rapptz'
|
||||||
__license__ = 'MIT'
|
__license__ = 'MIT'
|
||||||
__copyright__ = 'Copyright 2015-2020 Rapptz'
|
__copyright__ = 'Copyright 2015-2020 Rapptz'
|
||||||
__version__ = '1.5.1.4'
|
__version__ = '1.5.1.5'
|
||||||
|
|
||||||
__path__ = __import__('pkgutil').extend_path(__path__, __name__)
|
__path__ = __import__('pkgutil').extend_path(__path__, __name__)
|
||||||
|
|
||||||
|
@ -802,7 +802,7 @@ class Messageable(metaclass=abc.ABCMeta):
|
|||||||
|
|
||||||
async def send(self, content=None, *, tts=False, embed=None, file=None,
|
async def send(self, content=None, *, tts=False, embed=None, file=None,
|
||||||
files=None, delete_after=None, nonce=None,
|
files=None, delete_after=None, nonce=None,
|
||||||
allowed_mentions=None):
|
allowed_mentions=None, message_reference=None):
|
||||||
"""|coro|
|
"""|coro|
|
||||||
|
|
||||||
Sends a message to the destination with the content given.
|
Sends a message to the destination with the content given.
|
||||||
@ -847,6 +847,12 @@ class Messageable(metaclass=abc.ABCMeta):
|
|||||||
are used instead.
|
are used instead.
|
||||||
|
|
||||||
.. versionadded:: 1.4
|
.. versionadded:: 1.4
|
||||||
|
message_reference: :class:`~discord.MessageReference`
|
||||||
|
A reference to the :class:`~discord.Message` to which you are replying, i.e. as created using
|
||||||
|
:meth:`~discord.MessageReference.from_message`. You can control whether this mentions the author
|
||||||
|
of the referenced Message using :attr:`~discord.AllowedMentions.replied_user`.
|
||||||
|
|
||||||
|
.. versionadded:: 1.5.1.5
|
||||||
|
|
||||||
Raises
|
Raises
|
||||||
--------
|
--------
|
||||||
@ -878,6 +884,9 @@ class Messageable(metaclass=abc.ABCMeta):
|
|||||||
else:
|
else:
|
||||||
allowed_mentions = state.allowed_mentions and state.allowed_mentions.to_dict()
|
allowed_mentions = state.allowed_mentions and state.allowed_mentions.to_dict()
|
||||||
|
|
||||||
|
if message_reference is not None:
|
||||||
|
message_reference = message_reference.to_dict()
|
||||||
|
|
||||||
if file is not None and files is not None:
|
if file is not None and files is not None:
|
||||||
raise InvalidArgument('cannot pass both file and files parameter to send()')
|
raise InvalidArgument('cannot pass both file and files parameter to send()')
|
||||||
|
|
||||||
@ -887,7 +896,8 @@ class Messageable(metaclass=abc.ABCMeta):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
data = await state.http.send_files(channel.id, files=[file], allowed_mentions=allowed_mentions,
|
data = await state.http.send_files(channel.id, files=[file], allowed_mentions=allowed_mentions,
|
||||||
content=content, tts=tts, embed=embed, nonce=nonce)
|
content=content, tts=tts, embed=embed, nonce=nonce,
|
||||||
|
message_reference=message_reference)
|
||||||
finally:
|
finally:
|
||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
@ -899,13 +909,15 @@ class Messageable(metaclass=abc.ABCMeta):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
data = await state.http.send_files(channel.id, files=files, content=content, tts=tts,
|
data = await state.http.send_files(channel.id, files=files, content=content, tts=tts,
|
||||||
embed=embed, nonce=nonce, allowed_mentions=allowed_mentions)
|
embed=embed, nonce=nonce, allowed_mentions=allowed_mentions,
|
||||||
|
message_reference=message_reference)
|
||||||
finally:
|
finally:
|
||||||
for f in files:
|
for f in files:
|
||||||
f.close()
|
f.close()
|
||||||
else:
|
else:
|
||||||
data = await state.http.send_message(channel.id, content, tts=tts, embed=embed,
|
data = await state.http.send_message(channel.id, content, tts=tts, embed=embed,
|
||||||
nonce=nonce, allowed_mentions=allowed_mentions)
|
nonce=nonce, allowed_mentions=allowed_mentions,
|
||||||
|
message_reference=message_reference)
|
||||||
|
|
||||||
ret = state.create_message(channel=channel, data=data)
|
ret = state.create_message(channel=channel, data=data)
|
||||||
if delete_after is not None:
|
if delete_after is not None:
|
||||||
|
@ -146,7 +146,7 @@ class TextChannel(discord.abc.Messageable, discord.abc.GuildChannel, Hashable):
|
|||||||
def can_send(self):
|
def can_send(self):
|
||||||
""":class:`bool`: Checks if the bot can send messages
|
""":class:`bool`: Checks if the bot can send messages
|
||||||
|
|
||||||
.. versionadded:: 1.5.0.1"""
|
.. versionadded:: 1.5.0.2"""
|
||||||
return self.permissions_for(self.guild.me).send_messages
|
return self.permissions_for(self.guild.me).send_messages
|
||||||
|
|
||||||
def permissions_for(self, member):
|
def permissions_for(self, member):
|
||||||
|
@ -332,3 +332,28 @@ class Context(discord.abc.Messageable):
|
|||||||
return None
|
return None
|
||||||
except CommandError as e:
|
except CommandError as e:
|
||||||
await cmd.on_help_command_error(self, e)
|
await cmd.on_help_command_error(self, e)
|
||||||
|
|
||||||
|
async def reply(self, content=None, **kwargs):
|
||||||
|
"""|coro|
|
||||||
|
|
||||||
|
A shortcut method to :meth:`~discord.abc.Messageable.send` to reply to the
|
||||||
|
:class:`~discord.Message` that invoked the command.
|
||||||
|
|
||||||
|
.. versionadded:: 1.5.1.5
|
||||||
|
|
||||||
|
Raises
|
||||||
|
--------
|
||||||
|
~discord.HTTPException
|
||||||
|
Sending the message failed.
|
||||||
|
~discord.Forbidden
|
||||||
|
You do not have the proper permissions to send the message.
|
||||||
|
~discord.InvalidArgument
|
||||||
|
The ``files`` list is not of the appropriate size or
|
||||||
|
you specified both ``file`` and ``files``.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
---------
|
||||||
|
:class:`~discord.Message`
|
||||||
|
The message that was sent.
|
||||||
|
"""
|
||||||
|
return await self.message.reply(content, **kwargs)
|
@ -340,7 +340,7 @@ class HTTPClient:
|
|||||||
|
|
||||||
return self.request(Route('POST', '/users/@me/channels'), json=payload)
|
return self.request(Route('POST', '/users/@me/channels'), json=payload)
|
||||||
|
|
||||||
def send_message(self, channel_id, content, *, tts=False, embed=None, nonce=None, allowed_mentions=None):
|
def send_message(self, channel_id, content, *, tts=False, embed=None, nonce=None, allowed_mentions=None, message_referece=None):
|
||||||
r = Route('POST', '/channels/{channel_id}/messages', channel_id=channel_id)
|
r = Route('POST', '/channels/{channel_id}/messages', channel_id=channel_id)
|
||||||
payload = {}
|
payload = {}
|
||||||
|
|
||||||
@ -359,12 +359,15 @@ class HTTPClient:
|
|||||||
if allowed_mentions:
|
if allowed_mentions:
|
||||||
payload['allowed_mentions'] = allowed_mentions
|
payload['allowed_mentions'] = allowed_mentions
|
||||||
|
|
||||||
|
if message_reference:
|
||||||
|
payload['message_reference'] = message_reference
|
||||||
|
|
||||||
return self.request(r, json=payload)
|
return self.request(r, json=payload)
|
||||||
|
|
||||||
def send_typing(self, channel_id):
|
def send_typing(self, channel_id):
|
||||||
return self.request(Route('POST', '/channels/{channel_id}/typing', channel_id=channel_id))
|
return self.request(Route('POST', '/channels/{channel_id}/typing', channel_id=channel_id))
|
||||||
|
|
||||||
def send_files(self, channel_id, *, files, content=None, tts=False, embed=None, nonce=None, allowed_mentions=None):
|
def send_files(self, channel_id, *, files, content=None, tts=False, embed=None, nonce=None, allowed_mentions=None, message_reference=None):
|
||||||
r = Route('POST', '/channels/{channel_id}/messages', channel_id=channel_id)
|
r = Route('POST', '/channels/{channel_id}/messages', channel_id=channel_id)
|
||||||
form = aiohttp.FormData()
|
form = aiohttp.FormData()
|
||||||
|
|
||||||
@ -377,6 +380,8 @@ class HTTPClient:
|
|||||||
payload['nonce'] = nonce
|
payload['nonce'] = nonce
|
||||||
if allowed_mentions:
|
if allowed_mentions:
|
||||||
payload['allowed_mentions'] = allowed_mentions
|
payload['allowed_mentions'] = allowed_mentions
|
||||||
|
if message_reference:
|
||||||
|
payload['message_reference'] = message_reference
|
||||||
|
|
||||||
form.add_field('payload_json', utils.to_json(payload))
|
form.add_field('payload_json', utils.to_json(payload))
|
||||||
if len(files) == 1:
|
if len(files) == 1:
|
||||||
|
@ -59,14 +59,20 @@ class AllowedMentions:
|
|||||||
roles are not mentioned at all. If a list of :class:`abc.Snowflake`
|
roles are not mentioned at all. If a list of :class:`abc.Snowflake`
|
||||||
is given then only the roles provided will be mentioned, provided those
|
is given then only the roles provided will be mentioned, provided those
|
||||||
roles are in the message content.
|
roles are in the message content.
|
||||||
|
replied_user: :class:`bool`
|
||||||
|
Whether to mention the author of the message being replied to. Defaults
|
||||||
|
to ``True``.
|
||||||
|
|
||||||
|
.. versionadded:: 1.5.1.5
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__slots__ = ('everyone', 'users', 'roles')
|
__slots__ = ('everyone', 'users', 'roles', 'replied_user')
|
||||||
|
|
||||||
def __init__(self, *, everyone=default, users=default, roles=default):
|
def __init__(self, *, everyone=default, users=default, roles=default, replied_user=default):
|
||||||
self.everyone = everyone
|
self.everyone = everyone
|
||||||
self.users = users
|
self.users = users
|
||||||
self.roles = roles
|
self.roles = roles
|
||||||
|
self.replied_user = replied_user
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def all(cls):
|
def all(cls):
|
||||||
@ -74,7 +80,7 @@ class AllowedMentions:
|
|||||||
|
|
||||||
.. versionadded:: 1.5
|
.. versionadded:: 1.5
|
||||||
"""
|
"""
|
||||||
return cls(everyone=True, users=True, roles=True)
|
return cls(everyone=True, users=True, roles=True, replied_user=True)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def none(cls):
|
def none(cls):
|
||||||
@ -82,7 +88,7 @@ class AllowedMentions:
|
|||||||
|
|
||||||
.. versionadded:: 1.5
|
.. versionadded:: 1.5
|
||||||
"""
|
"""
|
||||||
return cls(everyone=False, users=False, roles=False)
|
return cls(everyone=False, users=False, roles=False, replied_user=False)
|
||||||
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
parse = []
|
parse = []
|
||||||
@ -101,6 +107,9 @@ class AllowedMentions:
|
|||||||
elif self.roles != False:
|
elif self.roles != False:
|
||||||
data['roles'] = [x.id for x in self.roles]
|
data['roles'] = [x.id for x in self.roles]
|
||||||
|
|
||||||
|
if self.replied_user == True:
|
||||||
|
data['replied_user'] = True
|
||||||
|
|
||||||
data['parse'] = parse
|
data['parse'] = parse
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
@ -235,6 +235,24 @@ class MessageReference:
|
|||||||
self.guild_id = utils._get_as_snowflake(kwargs, 'guild_id')
|
self.guild_id = utils._get_as_snowflake(kwargs, 'guild_id')
|
||||||
self._state = state
|
self._state = state
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_message(cls, message):
|
||||||
|
"""Creates a :class:`MessageReference` from an existing :class:`Message`
|
||||||
|
|
||||||
|
.. versionadded:: 1.5.1.5
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
message: :class:`Message`
|
||||||
|
The message to be converted into a reference.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
:class:`MessageReference`
|
||||||
|
A reference to the message
|
||||||
|
"""
|
||||||
|
return cls(message._state, message_id=message.id, channel_id=message.channel.id, guild_id=message.guild and message.guild.id)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def cached_message(self):
|
def cached_message(self):
|
||||||
"""Optional[:class:`Message`]: The cached message, if found in the internal message cache."""
|
"""Optional[:class:`Message`]: The cached message, if found in the internal message cache."""
|
||||||
@ -243,6 +261,29 @@ class MessageReference:
|
|||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return '<MessageReference message_id={0.message_id!r} channel_id={0.channel_id!r} guild_id={0.guild_id!r}>'.format(self)
|
return '<MessageReference message_id={0.message_id!r} channel_id={0.channel_id!r} guild_id={0.guild_id!r}>'.format(self)
|
||||||
|
|
||||||
|
def to_dict(self, specify_channel=False):
|
||||||
|
"""Converts the message reference to a dict, for transmission via the gateway.
|
||||||
|
|
||||||
|
.. versionadded:: 1.5.1.5
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
-------
|
||||||
|
specify_channel: Optional[:class:`bool`]
|
||||||
|
Whether to include the channel ID in the returned object.
|
||||||
|
Defaults to False.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
:class:`dict`
|
||||||
|
The reference as a dict.
|
||||||
|
"""
|
||||||
|
result = {'message_id': self.message_id} if self.message_id is not None else {}
|
||||||
|
if specify_channel:
|
||||||
|
result['channel_id'] = self.channel_id
|
||||||
|
if self.guild_id is not None:
|
||||||
|
result['guild_id'] = self.guild_id
|
||||||
|
return result
|
||||||
|
|
||||||
def flatten_handlers(cls):
|
def flatten_handlers(cls):
|
||||||
prefix = len('_handle_')
|
prefix = len('_handle_')
|
||||||
cls._HANDLERS = {
|
cls._HANDLERS = {
|
||||||
@ -288,8 +329,8 @@ class Message(Hashable):
|
|||||||
:attr:`MessageType.call`.
|
:attr:`MessageType.call`.
|
||||||
reference: Optional[:class:`MessageReference`]
|
reference: Optional[:class:`MessageReference`]
|
||||||
The message that this message references. This is only applicable to messages of
|
The message that this message references. This is only applicable to messages of
|
||||||
type :attr:`MessageType.pins_add` or crossposted messages created by a
|
type :attr:`MessageType.pins_add`, crossposted messages created by a
|
||||||
followed channel integration.
|
followed channel integration or message replies.
|
||||||
|
|
||||||
.. versionadded:: 1.5
|
.. versionadded:: 1.5
|
||||||
|
|
||||||
@ -1123,3 +1164,29 @@ class Message(Hashable):
|
|||||||
if state.is_bot:
|
if state.is_bot:
|
||||||
raise ClientException('Must not be a bot account to ack messages.')
|
raise ClientException('Must not be a bot account to ack messages.')
|
||||||
return await state.http.ack_message(self.channel.id, self.id)
|
return await state.http.ack_message(self.channel.id, self.id)
|
||||||
|
|
||||||
|
async def reply(self, content=None, **kwargs):
|
||||||
|
"""|coro|
|
||||||
|
A shortcut method to :meth:`abc.Messageable.send` to reply to the
|
||||||
|
:class:`Message`.
|
||||||
|
|
||||||
|
.. versionadded:: 1.5.1.5
|
||||||
|
|
||||||
|
Raises
|
||||||
|
--------
|
||||||
|
~discord.HTTPException
|
||||||
|
Sending the message failed.
|
||||||
|
~discord.Forbidden
|
||||||
|
You do not have the proper permissions to send the message.
|
||||||
|
~discord.InvalidArgument
|
||||||
|
The ``files`` list is not of the appropriate size or
|
||||||
|
you specified both ``file`` and ``files``.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
---------
|
||||||
|
:class:`Message`
|
||||||
|
The message that was sent.
|
||||||
|
"""
|
||||||
|
|
||||||
|
reference = MessageReference.from_message(self)
|
||||||
|
return await self.channel.send(content, message_reference=reference, **kwargs)
|
30
docs/custom_features.rst
Normal file
30
docs/custom_features.rst
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
.. currentmodule:: discord
|
||||||
|
|
||||||
|
.. _custom_features:
|
||||||
|
|
||||||
|
Intro
|
||||||
|
=====
|
||||||
|
enhanced-dpy was made to add some extra features that make it just a bit easier. This custom version of discord.py will always remain up-to-date with the beta version, so not everything might work or be stable.
|
||||||
|
|
||||||
|
Custom Features
|
||||||
|
---------------
|
||||||
|
Here are the custom features listed that have been added to enhanced-dpy. You can refer o the changelog to see in what version they were added!
|
||||||
|
|
||||||
|
- **Documentation URL:** https://enhanced-dpy.readthedocs.io/en/latest/index.html
|
||||||
|
- Added ``Guild.bots`` / ``Guild.humans``
|
||||||
|
- Added ``Bot.owner`` / ``Bot.owners``
|
||||||
|
- Added ``Client.try_user`` / ``Bot.try_user``
|
||||||
|
- ``Guild.icon_url`` and ``User.avatar_url`` return the string in stead of Asset. use icon/avatar url_as to get the Asset
|
||||||
|
- Merged in ext-colors (https://github.com/MGardne8/DiscordPyColours)
|
||||||
|
- Using Rapptz/discord.py/tree/neo-docs for documentation
|
||||||
|
- Added support for ``hex()`` to ``discord.Color``
|
||||||
|
- Added ``Client.embed_color`` / ``Bot.embed_color``
|
||||||
|
- Added ``Client.set_embed_color`` / ``Bot.set_embed_color``
|
||||||
|
- Added ``TextChannel.can_send``
|
||||||
|
- Added ``Intents.from_list``
|
||||||
|
- Added support for ``int()`` to ``discord.User``, ``discord.Member``, ``discord.Emoji``, ``discord.Role``, ``discord.Guild``, ``discord.Message``, ``discord.TextChannel``, ``discord.VoiceChannel``, ``discord.CategoryChannel``, ``discord.Attachment`` and ``discord.Message``. This will return their id
|
||||||
|
- Added support for ``str()`` to ``discord.Message``. This will return the message content
|
||||||
|
- Added ``Guild.try_member``
|
||||||
|
- Added ``Context.clean_prefix``
|
||||||
|
- Added ``Color.nitro_booster``
|
||||||
|
- Added ``Permissions.admin`` as alias to ``Permissions.administrator``
|
@ -18,23 +18,7 @@ Credits to the `original lib by Rapptz <https://github.com/iDutchy/discord.py>`_
|
|||||||
Custom Features
|
Custom Features
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
- **Documentation URL:** https://enhanced-dpy.readthedocs.io/en/latest/index.html
|
**Moved to:** `Custom Features <https://enhanced-dpy.readthedocs.io/en/latest/custom_features.html>`_
|
||||||
- Added ``Guild.bots`` / ``Guild.humans``
|
|
||||||
- Added ``Bot.owner`` / ``Bot.owners``
|
|
||||||
- Added ``Client.try_user`` / ``Bot.try_user``
|
|
||||||
- ``Guild.icon_url`` and ``User.avatar_url`` return the string in stead of Asset. use icon/avatar url_as to get the Asset
|
|
||||||
- Merged in ext-colors (https://github.com/MGardne8/DiscordPyColours)
|
|
||||||
- Using Rapptz/discord.py/tree/neo-docs for documentation
|
|
||||||
- Added support for ``hex()`` to ``discord.Color``
|
|
||||||
- Added ``Client.embed_color`` / ``Bot.embed_color``
|
|
||||||
- Added ``Client.set_embed_color`` / ``Bot.set_embed_color``
|
|
||||||
- Added ``TextChannel.can_send``
|
|
||||||
- Added ``Intents.from_list``
|
|
||||||
- Added support for ``int()`` to ``discord.User``, ``discord.Member``, ``discord.Emoji``, ``discord.Role``, ``discord.Guild``, ``discord.Message``, ``discord.TextChannel``, ``discord.VoiceChannel``, ``discord.CategoryChannel``, ``discord.Attachment`` and ``discord.Message``. This will return their id
|
|
||||||
- Added support for ``str()`` to ``discord.Message``. This will return the message content
|
|
||||||
- Added ``Guild.try_member``
|
|
||||||
- Added ``Context.clean_prefix``
|
|
||||||
- Added ``Color.nitro_booster``
|
|
||||||
|
|
||||||
Features
|
Features
|
||||||
--------
|
--------
|
||||||
|
@ -11,6 +11,40 @@ Changelog
|
|||||||
This page keeps a detailed human friendly rendering of what's new and changed
|
This page keeps a detailed human friendly rendering of what's new and changed
|
||||||
in specific versions.
|
in specific versions.
|
||||||
|
|
||||||
|
.. _vp1p5p1p5:
|
||||||
|
|
||||||
|
v1.5.1.5
|
||||||
|
--------
|
||||||
|
|
||||||
|
New Features
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- Add :meth:`Color.nitro_booster`
|
||||||
|
- Add :attr:`Permissions.admin` as alias to :attr:`Permissions.administrator`
|
||||||
|
|
||||||
|
New Beta Features
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
These are all for message replies. I have added them to 1.5.1.5 but they will most likely officially get added in the original lib in 1.6 or 2.0
|
||||||
|
|
||||||
|
- Add |commands| :meth:`Context.reply`
|
||||||
|
- Add :meth:`Message.reply`
|
||||||
|
- Add ``replied_user`` to :class:`AllowedMentions`
|
||||||
|
- Add :meth:`MessageReference.to_dict`
|
||||||
|
- Add :meth:`MessageReference.from_message`
|
||||||
|
- Add ``message_refernce`` kwarg to :meth:`abc.Messageable.send`
|
||||||
|
|
||||||
|
.. _vp1p5p1p4:
|
||||||
|
|
||||||
|
v1.5.1.4
|
||||||
|
--------
|
||||||
|
|
||||||
|
New Features
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- Add :attr:`Context.clean_prefix`
|
||||||
|
- Fix :attr:`TextChannel.can_send` to use proper checks
|
||||||
|
|
||||||
.. _vp1p5p1:
|
.. _vp1p5p1:
|
||||||
|
|
||||||
v1.5.1
|
v1.5.1
|
||||||
@ -36,6 +70,42 @@ Miscellaneous
|
|||||||
- This is the same as having ``discord.Member`` as the type-hint.
|
- This is the same as having ``discord.Member`` as the type-hint.
|
||||||
- :meth:`Guild.chunk` now allows concurrent calls without spamming the gateway with requests.
|
- :meth:`Guild.chunk` now allows concurrent calls without spamming the gateway with requests.
|
||||||
|
|
||||||
|
.. _vp1p5p0p2:
|
||||||
|
|
||||||
|
v1.5.0.2
|
||||||
|
--------
|
||||||
|
|
||||||
|
New Features
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- Add :attr:`Guild.try_member`
|
||||||
|
- Add :attr:`TextChannel.can_send`
|
||||||
|
|
||||||
|
.. _vp1p5p0p1:
|
||||||
|
|
||||||
|
v1.5.0.1
|
||||||
|
--------
|
||||||
|
|
||||||
|
New Features
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- Changed :attr:`Guild.icon_url` and :attr:`User.avatar_url` to return a string of the url in stead of an :class:`Asset`
|
||||||
|
- Documentation uses `Neo Docs by Rapptz <Rapptz/discord.py/tree/neo-docs>`_
|
||||||
|
- Add 1000+ colors from `ext colors <https://github.com/MGardne8/DiscordPyColours>`_
|
||||||
|
- Add support for ``hex()`` to :class:`Color`
|
||||||
|
- Add :attr:`Guild.bots`
|
||||||
|
- Add :attr:`Guild.humans`
|
||||||
|
- |commands| Add :attr:`Bot.owner`
|
||||||
|
- |commands| Add :attr:`Bot.owners`
|
||||||
|
- Add :attr:`Guild.humans`
|
||||||
|
- Add :meth:`Client.try_user`
|
||||||
|
- Add :attr:`Client.embed_color`
|
||||||
|
- Add :meth:`Client.set_embed_color`
|
||||||
|
- Add :meth:`Intents.from_list`
|
||||||
|
- Add ``str()`` support to :class:`Message` which will return the :attr:`Message.content`
|
||||||
|
- Add ``int()`` support to :class:`User`, :class:`Member`,:class:`Emoji`, :class:`Role`, :class:`Guild`, :class:`Message`, :class:`TextChannel`, :class:`VoiceChannel`, :class:`CategoryChannel`, :class:`Attachment` and :class:`Message`. This will return the ID of the object
|
||||||
|
|
||||||
|
|
||||||
.. _vp1p5p0:
|
.. _vp1p5p0:
|
||||||
|
|
||||||
v1.5.0
|
v1.5.0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user