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
@ -132,7 +133,23 @@ class BotBase(GroupMixin):
self.help_command = DefaultHelpCommand()
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
@ -155,7 +172,7 @@ class BotBase(GroupMixin):
if owner:
owners.append(owner)
return owners
# internal helpers
def dispatch(self, event_name, *args, **kwargs):

View File

@ -21,7 +21,7 @@ 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.
"""
import re
import re
import discord.abc
import discord.utils
@ -99,7 +99,7 @@ class Context(discord.abc.Messageable):
@property
def clean_prefix(self):
""":class:`str`: The cleaned up invoke prefix. i.e. mentions are ``@name`` instead of ``<@id>``.
.. versionadded:: 1.5.1.4"""
user = self.guild.me if self.guild else self.bot.user
pattern = re.compile(r"<@!?%s>" % user.id)
@ -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):