aboutsummaryrefslogtreecommitdiff
path: root/discord/message.py
diff options
context:
space:
mode:
Diffstat (limited to 'discord/message.py')
-rw-r--r--discord/message.py87
1 files changed, 86 insertions, 1 deletions
diff --git a/discord/message.py b/discord/message.py
index c2caaf9d..0d31d6f6 100644
--- a/discord/message.py
+++ b/discord/message.py
@@ -24,12 +24,14 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
"""
+import asyncio
+import re
+
from .user import User
from .reaction import Reaction
from . import utils, abc
from .object import Object
from .calls import CallMessage
-import re
from .enums import MessageType, try_enum
class Message:
@@ -343,3 +345,86 @@ class Message:
return 'You missed a call from {0.author.name}'.format(self)
else:
return '{0.author.name} started a call \N{EM DASH} Join the call.'.format(self)
+
+ @asyncio.coroutine
+ def delete(self):
+ """|coro|
+
+ Deletes the message.
+
+ Your own messages could be deleted without any proper permissions. However to
+ delete other people's messages, you need the :attr:`Permissions.manage_messages`
+ permission.
+
+ Raises
+ ------
+ Forbidden
+ You do not have proper permissions to delete the message.
+ HTTPException
+ Deleting the message failed.
+ """
+ yield from self._state.http.delete_message(self.channel.id, self.id, getattr(self.server, 'id', None))
+
+ @asyncio.coroutine
+ def edit(self, *, content: str):
+ """|coro|
+
+ Edits the message.
+
+ The content must be able to be transformed into a string via ``str(content)``.
+
+ Parameters
+ -----------
+ content: str
+ The new content to replace the message with.
+
+ Raises
+ -------
+ HTTPException
+ Editing the message failed.
+ """
+
+ guild_id = getattr(self.server, 'id', None)
+ data = yield from self._state.http.edit_message(self.id, self.channel.id, str(content), guild_id=guild_id)
+ self._update(channel=self.channel, data=data)
+
+ @asyncio.coroutine
+ def pin(self):
+ """|coro|
+
+ Pins the message. You must have :attr:`Permissions.manage_messages`
+ permissions to do this in a non-private channel context.
+
+ Raises
+ -------
+ Forbidden
+ You do not have permissions to pin the message.
+ NotFound
+ The message or channel was not found or deleted.
+ HTTPException
+ Pinning the message failed, probably due to the channel
+ having more than 50 pinned messages.
+ """
+
+ yield from self._state.http.pin_message(self.channel.id, self.id)
+ self.pinned = True
+
+ @asyncio.coroutine
+ def unpin(self):
+ """|coro|
+
+ Unpins the message. You must have :attr:`Permissions.manage_messages`
+ permissions to do this in a non-private channel context.
+
+ Raises
+ -------
+ Forbidden
+ You do not have permissions to unpin the message.
+ NotFound
+ The message or channel was not found or deleted.
+ HTTPException
+ Unpinning the message failed.
+ """
+
+ yield from self._state.http.unpin_message(self.channel.id, self.id)
+ self.pinned = False