[commands] First pass in making commands ext work again.
This commit is contained in:
		@@ -24,14 +24,18 @@ DEALINGS IN THE SOFTWARE.
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
import asyncio
 | 
			
		||||
import discord.abc
 | 
			
		||||
import discord.utils
 | 
			
		||||
 | 
			
		||||
class Context:
 | 
			
		||||
class Context(discord.abc.MessageChannel):
 | 
			
		||||
    """Represents the context in which a command is being invoked under.
 | 
			
		||||
 | 
			
		||||
    This class contains a lot of meta data to help you understand more about
 | 
			
		||||
    the invocation context. This class is not created manually and is instead
 | 
			
		||||
    passed around to commands by passing in :attr:`Command.pass_context`.
 | 
			
		||||
 | 
			
		||||
    This class implements the :class:`abc.MessageChannel` ABC.
 | 
			
		||||
 | 
			
		||||
    Attributes
 | 
			
		||||
    -----------
 | 
			
		||||
    message : :class:`discord.Message`
 | 
			
		||||
@@ -76,6 +80,7 @@ class Context:
 | 
			
		||||
        self.invoked_with = attrs.pop('invoked_with', None)
 | 
			
		||||
        self.invoked_subcommand = attrs.pop('invoked_subcommand', None)
 | 
			
		||||
        self.subcommand_passed = attrs.pop('subcommand_passed', None)
 | 
			
		||||
        self._state = self.message._state
 | 
			
		||||
 | 
			
		||||
    @asyncio.coroutine
 | 
			
		||||
    def invoke(self, command, *args, **kwargs):
 | 
			
		||||
@@ -112,6 +117,9 @@ class Context:
 | 
			
		||||
        ret = yield from command.callback(*arguments, **kwargs)
 | 
			
		||||
        return ret
 | 
			
		||||
 | 
			
		||||
    def _get_destination(self):
 | 
			
		||||
        return self.channel.id, getattr(self.guild, 'id', None)
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def cog(self):
 | 
			
		||||
        """Returns the cog associated with this context's command. None if it does not exist."""
 | 
			
		||||
@@ -119,3 +127,25 @@ class Context:
 | 
			
		||||
        if self.command is None:
 | 
			
		||||
            return None
 | 
			
		||||
        return self.command.instance
 | 
			
		||||
 | 
			
		||||
    @discord.utils.cached_property
 | 
			
		||||
    def id(self):
 | 
			
		||||
        # we need this to meet MessageChannel abc
 | 
			
		||||
        # it is purposefully undocumented because it makes no logistic sense
 | 
			
		||||
        # outside of providing the sugar of the main class.
 | 
			
		||||
        return self.channel.id
 | 
			
		||||
 | 
			
		||||
    @discord.utils.cached_property
 | 
			
		||||
    def guild(self):
 | 
			
		||||
        """Returns the guild associated with this context's command. None if not available."""
 | 
			
		||||
        return self.message.guild
 | 
			
		||||
 | 
			
		||||
    @discord.utils.cached_property
 | 
			
		||||
    def channel(self):
 | 
			
		||||
        """Returns the channel associated with this context's command. Shorthand for :attr:`Message.channel`."""
 | 
			
		||||
        return self.message.channel
 | 
			
		||||
 | 
			
		||||
    @discord.utils.cached_property
 | 
			
		||||
    def author(self):
 | 
			
		||||
        """Returns the author associated with this context's command. Shorthand for :attr:`Message.author`"""
 | 
			
		||||
        return self.message.author
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user