diff options
| author | Rapptz <[email protected]> | 2015-09-04 23:23:47 -0400 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2015-09-04 23:23:47 -0400 |
| commit | 80eb567520d2f20b383cf680f14b07c8f3728ac2 (patch) | |
| tree | 9de4b97ed1c2bebd211d0d7b59acc3f8e3bb4cb0 /discord/invite.py | |
| parent | Refactor parse_time into its own utils file. (diff) | |
| download | discord.py-80eb567520d2f20b383cf680f14b07c8f3728ac2.tar.xz discord.py-80eb567520d2f20b383cf680f14b07c8f3728ac2.zip | |
Add support for creating invites.
Diffstat (limited to 'discord/invite.py')
| -rw-r--r-- | discord/invite.py | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/discord/invite.py b/discord/invite.py new file mode 100644 index 00000000..39897b44 --- /dev/null +++ b/discord/invite.py @@ -0,0 +1,86 @@ +# -*- coding: utf-8 -*- + +""" +The MIT License (MIT) + +Copyright (c) 2015 Rapptz + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +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 .user import User +from .utils import parse_time + +class Invite(object): + """Represents a Discord :class:`Server` or :class:`Channel` invite. + + Instance attributes: + + .. attribute:: max_age + + How long the before the invite expires in seconds. A value of 0 indicates that it doesn't expire. + .. attribute:: code + + The URL fragment used for the invite. :attr:`xkcd` is also a possible fragment. + .. attribute:: server + + The :class:`Server` the invite is for. + .. attribute:: revoked + + A boolean indicating if the invite has been revoked. + .. attribute:: created_at + + A datetime object denoting the time the invite was created. + .. attribute:: temporary + + A boolean indicating that the invite grants temporary membership. If True, members who joined via this invite will be kicked upon disconnect. + .. attribute:: uses + + How many times the invite has been used. + .. attribute:: max_uses + + How many times the invite can be used. + .. attribute:: xkcd + + The URL fragment used for the invite if it is human readable. + .. attribute:: inviter + + The :class:`User` who created the invite. + .. attribute:: channel + + The :class:`Channel` the invite is for. + """ + + def __init__(self, **kwargs): + self.max_age = kwargs.get('max_age') + self.code = kwargs.get('code') + self.server = kwargs.get('server') + self.revoked = kwargs.get('revoked') + self.created_at = parse_time(kwargs.get('created_at')) + self.temporary = kwargs.get('temporary') + self.uses = kwargs.get('uses') + self.max_uses = kwargs.get('max_uses') + self.xkcd = kwargs.get('xkcdpass') + self.inviter = User(**kwargs.get('inviter', {})) + self.channel = kwargs.get('channel') + + @property + def url(self): + """A property that retrieves the invite URL.""" + return 'http://discord.gg/{}'.format(self.xkcd if self.xkcd else self.code) |