first attempt to shortcuts

This commit is contained in:
iDutchy 2021-07-13 19:28:52 -05:00
parent 2df88ccc27
commit 8e6601c2c5
3 changed files with 32 additions and 11 deletions

View File

@ -13,7 +13,7 @@ __title__ = 'discord'
__author__ = 'Rapptz'
__license__ = 'MIT'
__copyright__ = 'Copyright 2015-present Rapptz'
__version__ = '1.7.3.7'
__version__ = '1.7.3.7.post1'
__path__ = __import__('pkgutil').extend_path(__path__, __name__)

View File

@ -24,8 +24,8 @@ DEALINGS IN THE SOFTWARE.
import asyncio
import collections
import inspect
import importlib.util
import inspect
import itertools
import sys
import traceback
@ -33,12 +33,12 @@ import types
import discord
from .core import GroupMixin
from .view import StringView
from .context import Context
from . import errors
from .help import HelpCommand, DefaultHelpCommand
from .cog import Cog
from .context import Context
from .core import GroupMixin
from .help import DefaultHelpCommand, HelpCommand
from .view import StringView
__all__ = (
'when_mentioned',
@ -107,6 +107,7 @@ class BotBase(GroupMixin):
self.extra_events = {}
self.__cogs = {}
self.__extensions = {}
self.__shortcuts = {}
self._checks = []
self._check_once = []
self._before_invoke = None
@ -133,6 +134,22 @@ class BotBase(GroupMixin):
else:
self.help_command = help_command
def add_guild_shortcut(self, name, config_dict):
"""Add a shortcut attribute to context.guild
Parameters
-----------
name: :class:`str`
The name of the shortcut you want to add to context.guild
config_dict: :class:`dict`
The dict of {guild.id: other_data} where context.guild.<shortcut> will get the data from
"""
if not isinstance(name, str):
raise ValueError("Name must be a string")
if not isinstance(config_dict, dict):
raise ValueError("config_dict must be a dict")
self.__shortcuts[name] = config_dict
@property
def owner(self):
""":class:`discord.User`: The owner, retrieved from owner_id. In case of improper caching, this can return None

View File

@ -227,7 +227,11 @@ class Context(discord.abc.Messageable):
@discord.utils.cached_property
def guild(self):
"""Optional[:class:`.Guild`]: Returns the guild associated with this context's command. None if not available."""
return self.message.guild
guild = self.message.guild
if self.bot.__shortcuts:
for name, config in self.bot.__shortcuts.keys():
setattr(guild, name, config.get(guild.id))
return guild
@discord.utils.cached_property
def channel(self):