diff --git a/discord/abc.py b/discord/abc.py index 1ad6fb507..d0ddd42dd 100644 --- a/discord/abc.py +++ b/discord/abc.py @@ -776,3 +776,25 @@ class Messageable(metaclass=abc.ABCMeta): counter += 1 """ return HistoryIterator(self, limit=limit, before=before, after=after, around=around, reverse=reverse) + + @asyncio.coroutine + def ack(self): + """|coro| + + Marks this channel as read. + + The user must not be a bot user. + + Raises + ------- + HTTPException + Acking failed. + ClientException + You must not be a bot user. + """ + + state = self._state + if state.is_bot: + raise ClientException('Must not be a bot account to ack messages.') + channel = yield from self._get_channel() + yield from state.http.ack_channel(channel.id) diff --git a/discord/http.py b/discord/http.py index 29f4fdfc2..3b80b1285 100644 --- a/discord/http.py +++ b/discord/http.py @@ -329,6 +329,12 @@ class HTTPClient: data = yield from self.request(r, json={'token': self._ack_token}) self._ack_token = data['token'] + @asyncio.coroutine + def ack_channel(self, channel_id): + r = Route('POST', '/channels/{channel_id}/ack', channel_id=channel_id) + data = yield from self.request(r, json={'token': self._ack_token}) + self._ack_token = data['token'] + def ack_guild(self, guild_id): return self.request(Route('POST', '/guilds/{guild_id}/ack', guild_id=guild_id))