From e5a6dabe4e551182ed29fbe36cefbb8115b08f4d Mon Sep 17 00:00:00 2001
From: ChrisLovering  An async transport method for statsd communication. Bases:  An async implementation of  Create a new  Use  Useful utilities and tools for Discord bot development. Bases:  A sub-class that implements many common features that Python Discord bots use. Initialise the base bot instance.
 
StatsClientBasestatsd.client.base.StatsClientBase that supports async stat communication.
 
AsyncStatsClient.
 
 
asyncio.loop.create_datagram_endpoint from the loop given on init to create a socket.
 
 
Bot
 
 
Add the given cog to the bot and log the operation.
Add command as normal and then add its root aliases to the bot.
Not implemented! Re-instantiate the bot instead of attempting to re-use a closed one.
Close the Discord connection, and the aiohttp session, connector, statsd client, and resolver.
Load all the extensions within the given module and save them to self.all_extensions.
Log the given message to #dev-log.
Set the internal guild available event when self.guild_id becomes available.
If the cache appears to still be empty (no members, no channels, or no roles), the event will not be set and guild_available_but_cache_empty event will be emitted.
@@ -493,7 +497,7 @@ will not be set and guild_available_but_cache_empty event will be eClear the internal guild available event when self.guild_id becomes unavailable.
Ping all required services on setup to ensure they are up before starting.
Remove a command/alias as normal and then remove its root aliases from the bot.
Individual root aliases cannot be removed by this function. To remove them, either remove the entire command or manually edit bot.all_commands.
@@ -528,7 +532,7 @@ To remove them, either remove the entire command or manually edit bot.all_An async init to startup generic services.
Connects to statsd, and calls
 AsyncStatsClient.create_socket
@@ -542,7 +546,7 @@ and 
 
Wait until the guild that matches the guild_id given at init is available (and the cache is ready).
The on_ready event is inadequate because it only waits 2 seconds for a GUILD_CREATE gateway event before giving up and thus not populating the cache for unavailable guilds.
@@ -557,12 +561,12 @@ gateway event before giving up and thus not populating the cache for unavailableBases: Exception
Exception class for startup errors.
An API wrapper around the Site API.
Bases: object
A wrapper for the Django Site API.
Initialize a new APIClient instance.
Close the aiohttp session.
Send a DELETE request to the site API and return the JSON response.
Equivalent to APIClient.request() with GET passed as the method.
Raise ResponseCodeError for non-OK response if an exception should be raised.
Equivalent to APIClient.request() with PATCH passed as the method.
Equivalent to APIClient.request() with POST passed as the method.
Equivalent to APIClient.request() with PUT passed as the method.
Send an HTTP request to the site API and return the JSON response.
Bases: ValueError
Raised in APIClient.request() when a non-OK HTTP response is received.
Initialize a new ResponseCodeError instance.
Return a string representation of the error.
Utilities related to custom caches.
Bases: object
LRU cache implementation for coroutines.
Once the cache exceeds the maximum size, keys are deleted in FIFO order.
An offset may be optionally provided to be applied to the coroutine’s arguments when creating the cache key.
Decorator for async cache.
Initialise a new AsyncCache instance.
Clear cache instance.
Useful helper functions for interacting with various discord channel objects.
Attempt to get or fetch the given channel_id from the bots cache, and return it.
Return whether the given channel in the the category with the id category_id.
Cleans a text argument or replied message’s content.
Helpers for setting a cooldown on commands.
Bases: CommandError, Generic[P, R]
Raised when a command is invoked while on cooldown.
Run the command this cooldown blocked.
The command’s signature.
The command’s return value.
alias of TypeVar(‘R’)
Prevent duplicate invocations of a command with the same arguments in a channel for cooldown_duration seconds.
Handles discord.Forbidden 90001 errors, or re-raises if error isn’t a 90001 error.
Utils for manipulating functions.
Bases: Exception
Raised on a conflict between the globals used to resolve annotations of a wrapped function and its wrapper.
Update the decorated function to look like wrapped, and update globals for discord.py forwardref evaluation.
See update_wrapper_globals() for more details on how the globals are updated.
Create a copy of wrapper, the copy’s globals are updated with wrapped's globals.
For forwardrefs in command annotations, discord.py uses the __global__ attribute of the function
 to resolve their values. This breaks for decorators that replace the function because they have
diff --git a/main/output/pydis_core.utils.html b/main/output/pydis_core.utils.html
index 795d6859..67ebd164 100644
--- a/main/output/pydis_core.utils.html
+++ b/main/output/pydis_core.utils.html
@@ -211,6 +211,10 @@
                         main
                     
                 
+                    
Useful utilities and tools for Discord bot development.
Applies all common monkey patches for our bots.
Return an unqualified name given a qualified module/package name.
Bases: Button
A button that can be added to a view to delete the message containing the view on click.
This button itself carries out no interaction checks, these should be done by the parent view.
@@ -401,12 +405,12 @@Delete the original message on button click.
Bases: View
A view that allows the original invoker and moderators to interact with it.
None
 
 - 
-__init__(*, allowed_users, allowed_roles, timeout=180.0, message=None)[source]#+__init__(*, allowed_users, allowed_roles, timeout=180.0, message=None)[source]#
 - 
-async interaction_check(interaction)[source]#+async interaction_check(interaction)[source]#
- Ensure the user clicking the button is the view invoker, or a moderator. - 
 - Parameters:@@ -455,7 +459,7 @@ If
- None
 - 
-async on_timeout()[source]#+async on_timeout()[source]#
- Remove the view from - self.messageif set.
 - 
 - Return type:diff --git a/main/output/pydis_core.utils.logging.html b/main/output/pydis_core.utils.logging.html
index 7ca60da9..e271be9d 100644
--- a/main/output/pydis_core.utils.logging.html
+++ b/main/output/pydis_core.utils.logging.html
@@ -211,6 +211,10 @@
                         main
                     
                 
+
 
- 
+                        v9.7.0
+                    +
- 
                         v9.6.0
                     @@ -387,12 +391,12 @@
- Common logging related functions. - 
 - 
-class CustomLogger(name, level=0)[source]#+class CustomLogger(name, level=0)[source]#
- Bases: - Logger
 - Custom implementation of the - logging.Loggerclass with an added- tracemethod.
 - 
 - 
-trace(msg, *args, **kwargs)[source]#+trace(msg, *args, **kwargs)[source]#
- Log the given message with the severity - "TRACE".
 - To pass exception information, use the keyword argument exc_info with a true value: - logger.trace("Houston, we have an %s", "interesting problem", exc_info=1)
@@ -416,7 +420,7 @@
 
  - 
 - 
-get_logger(name=None)[source]#+get_logger(name=None)[source]#
- Utility to make mypy recognise that logger is of type - CustomLogger.
 - 
 - Parameters:diff --git a/main/output/pydis_core.utils.members.html b/main/output/pydis_core.utils.members.html
index 5f776cd6..8e7eca54 100644
--- a/main/output/pydis_core.utils.members.html
+++ b/main/output/pydis_core.utils.members.html
@@ -211,6 +211,10 @@
                         main
                     
                 
+
 
- 
+                        v9.7.0
+                    +
- 
                         v9.6.0
                     @@ -387,7 +391,7 @@
- Useful helper functions for interactin with - discord.Memberobjects.
 - 
 - 
-async get_or_fetch_member(guild, member_id)[source]#+async get_or_fetch_member(guild, member_id)[source]#
- Attempt to get a member from cache; on failure fetch from the API. - 
 - Return type:@@ -401,7 +405,7 @@
- 
 - 
-async handle_role_change(member, coro, role)[source]#+async handle_role_change(member, coro, role)[source]#
- Await the given - corowith- roleas the sole argument.
 - Handle errors that we expect to be raised from
 - discord.Member.add_rolesand- discord.Member.remove_roles.
 diff --git a/main/output/pydis_core.utils.paste_service.html b/main/output/pydis_core.utils.paste_service.html
index f70751c3..b465009c 100644
--- a/main/output/pydis_core.utils.paste_service.html
+++ b/main/output/pydis_core.utils.paste_service.html
@@ -211,6 +211,10 @@
                         main
                     
                 
+
- 
+                        v9.7.0
+                    +
- 
                         v9.6.0
                     @@ -386,13 +390,13 @@
- paste_service#- 
 - 
-MAX_PASTE_SIZE = 131072[source]#+MAX_PASTE_SIZE = 131072[source]#
- The maximum allows size of a paste, in bytes. 
 - 
 - 
-class PasteResponse[source]#+class PasteResponse[source]#
- Bases: - TypedDict
 - A successful response from the paste service. - 
@@ -407,21 +411,21 @@
 
 - 
 - 
-exception PasteTooLongError[source]#+exception PasteTooLongError[source]#
- Bases: - Exception
 - Raised when content is too large to upload to the paste service. 
 - 
 - 
-exception PasteUploadError[source]#+exception PasteUploadError[source]#
- Bases: - Exception
 - Raised when an error is encountered uploading to the paste service. 
 - 
 - 
-async send_to_paste_service(*, contents, paste_url, http_session, file_name='', lexer='python', max_size=131072)[source]#+async send_to_paste_service(*, contents, paste_url, http_session, file_name='', lexer='python', max_size=131072)[source]#
- Upload some contents to the paste service. - 
 - Parameters:diff --git a/main/output/pydis_core.utils.regex.html b/main/output/pydis_core.utils.regex.html
index 8d6a46e0..1d2e3885 100644
--- a/main/output/pydis_core.utils.regex.html
+++ b/main/output/pydis_core.utils.regex.html
@@ -211,6 +211,10 @@
                         main
                     
                 
+
 
- 
+                        v9.7.0
+                    +
- 
                         v9.6.0
                     @@ -387,7 +391,7 @@
- Common regular expressions. - 
 - 
-DISCORD_INVITE[source]#+DISCORD_INVITE[source]#
- Regex for Discord server invites. - Warning @@ -401,7 +405,7 @@ such as
- 
-FORMATTED_CODE_REGEX[source]#+FORMATTED_CODE_REGEX[source]#
- Regex for formatted code, using Discord’s code blocks. - 
  @@ -409,7 +413,7 @@ such as
- 
-RAW_CODE_REGEX[source]#+RAW_CODE_REGEX[source]#
- Regex for raw code, not using Discord’s code blocks. - 
  diff --git a/main/output/pydis_core.utils.scheduling.html b/main/output/pydis_core.utils.scheduling.html
index e282bde0..b81218ec 100644
--- a/main/output/pydis_core.utils.scheduling.html
+++ b/main/output/pydis_core.utils.scheduling.html
@@ -211,6 +211,10 @@
                         main
                     
                 
+
- 
+                        v9.7.0
+                    +
- 
                         v9.6.0
                     @@ -387,7 +391,7 @@
- Generic python scheduler. - 
 - 
-class Scheduler(name)[source]#+class Scheduler(name)[source]#
- Bases: - object
 - Schedule the execution of coroutines and keep track of them. - When instantiating a - Scheduler, a name must be provided. This name is used to distinguish the
@@ -401,7 +405,7 @@ the same ID used to schedule it.
 - Any exception raised in a scheduled task is logged when the task is done. - 
 - 
-__contains__(task_id)[source]#+__contains__(task_id)[source]#
- Return - Trueif a task with the given- task_idis currently scheduled.
 - 
 - Parameters:@@ -418,7 +422,7 @@ the same ID used to schedule it.
- 
 - 
-__init__(name)[source]#+__init__(name)[source]#
- Initialize a new - Schedulerinstance.
 - 
 - Parameters:@@ -429,7 +433,7 @@ the same ID used to schedule it.
- 
 - 
-cancel(task_id)[source]#+cancel(task_id)[source]#
- Unschedule the task identified by - task_id. Log a warning if the task doesn’t exist.
 - 
 - Parameters:@@ -443,7 +447,7 @@ the same ID used to schedule it.
- 
 - 
-cancel_all()[source]#+cancel_all()[source]#
- Unschedule all known tasks. - 
 - Return type:@@ -454,7 +458,7 @@ the same ID used to schedule it.
- 
 - 
-schedule(task_id, coroutine)[source]#+schedule(task_id, coroutine)[source]#
- Schedule the execution of a - coroutine.
 - If a task with - task_idalready exists, close- coroutineinstead of scheduling it. This
 prevents unawaited coroutine warnings. Don’t pass a coroutine that’ll be re-used elsewhere.
 @@ -473,7 +477,7 @@ prevents unawaited coroutine warnings. Don’t pass a coroutine that’ll be re-- 
 - 
-schedule_at(time, task_id, coroutine)[source]#+schedule_at(time, task_id, coroutine)[source]#
- Schedule - coroutineto be executed at the given- time.
 - If - timeis timezone aware, then use that timezone to calculate now() when subtracting.
 If- timeis naïve, then use UTC.
 @@ -496,7 +500,7 @@ prevents unawaited coroutine warnings. Don’t pass a coroutine that’ll be re-- 
 - 
-schedule_later(delay, task_id, coroutine)[source]#+schedule_later(delay, task_id, coroutine)[source]#
- Schedule - coroutineto be executed after- delayseconds.
 - If a task with - task_idalready exists, close- coroutineinstead of scheduling it. This
 prevents unawaited coroutine warnings. Don’t pass a coroutine that’ll be re-used elsewhere.
 @@ -518,7 +522,7 @@ prevents unawaited coroutine warnings. Don’t pass a coroutine that’ll be re-- 
 - 
-create_task(coro, *, suppressed_exceptions=(), event_loop=None, **kwargs)[source]#+create_task(coro, *, suppressed_exceptions=(), event_loop=None, **kwargs)[source]#
- Wrapper for creating an - asyncio.Taskwhich logs exceptions raised in the task.
 - If the - event_loopkwarg is provided, the task is created from that event loop,
 otherwise the running loop is used.
 diff --git a/main/py-modindex.html b/main/py-modindex.html
index b30796c7..d5546fa4 100644
--- a/main/py-modindex.html
+++ b/main/py-modindex.html
@@ -209,6 +209,10 @@
                         main
                     
                 
+
- 
+                        v9.7.0
+                    +
- 
                         v9.6.0
                     diff --git a/main/search.html b/main/search.html
index d7751f61..a313073e 100644
--- a/main/search.html
+++ b/main/search.html
@@ -208,6 +208,10 @@
                         main
                     
                 
+
- 
+                        v9.7.0
+                    +
- 
                         v9.6.0
                     diff --git a/main/searchindex.js b/main/searchindex.js
index 4ed9f018..e3ff930c 100644
--- a/main/searchindex.js
+++ b/main/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["changelog", "development", "index", "output/pydis_core", "output/pydis_core.async_stats", "output/pydis_core.exts", "output/pydis_core.site_api", "output/pydis_core.utils", "output/pydis_core.utils.caching", "output/pydis_core.utils.channel", "output/pydis_core.utils.commands", "output/pydis_core.utils.cooldown", "output/pydis_core.utils.error_handling", "output/pydis_core.utils.function", "output/pydis_core.utils.interactions", "output/pydis_core.utils.logging", "output/pydis_core.utils.members", "output/pydis_core.utils.paste_service", "output/pydis_core.utils.regex", "output/pydis_core.utils.scheduling"], "filenames": ["changelog.rst", "development.rst", "index.rst", "output/pydis_core.rst", "output/pydis_core.async_stats.rst", "output/pydis_core.exts.rst", "output/pydis_core.site_api.rst", "output/pydis_core.utils.rst", "output/pydis_core.utils.caching.rst", "output/pydis_core.utils.channel.rst", "output/pydis_core.utils.commands.rst", "output/pydis_core.utils.cooldown.rst", "output/pydis_core.utils.error_handling.rst", "output/pydis_core.utils.function.rst", "output/pydis_core.utils.interactions.rst", "output/pydis_core.utils.logging.rst", "output/pydis_core.utils.members.rst", "output/pydis_core.utils.paste_service.rst", "output/pydis_core.utils.regex.rst", "output/pydis_core.utils.scheduling.rst"], "titles": ["Changelog", "Local Development & Testing", "Bot Core Project Documentation", "Pydis Core", "async_stats", "Exts", "site_api", "Utils", "caching", "channel", "commands", "cooldown", "error_handling", "function", "interactions", "logging", "members", "paste_service", "regex", "scheduling"], "terms": {"9": 0, "7": 0, "0": [0, 8, 14, 15], "10th": 0, "june": 0, "2023": 0, "featur": [0, 1, 3], "176": 0, "migrat": 0, "repo": 0, "us": [0, 1, 3, 4, 6, 7, 9, 11, 13, 15, 16, 17, 18, 19], "ruff": 0, "lint": 0, "177": 0, "automat": 0, "handl": [0, 12, 16, 19], "discord": [0, 1, 3, 5, 7, 9, 10, 12, 13, 16, 18], "forbidden": [0, 9, 12], "90001": [0, 12], "error": [0, 3, 6, 7, 12, 16, 17], "all": [0, 1, 3, 4, 7, 19], "schedul": [0, 3, 7], "179": 0, "add": [0, 3, 11], "past": [0, 17, 19], "servic": [0, 1, 3, 17], "util": [0, 1, 2, 3, 8, 13, 14, 15], "upload": [0, 17], "text": [0, 6, 10], "our": [0, 1, 7], "6": 0, "6th": 0, "mai": [0, 8], "175": 0, "log": [0, 3, 7, 12, 16, 19], "when": [0, 3, 4, 6, 7, 8, 11, 13, 17, 19], "wait": [0, 3, 19], "guild": [0, 1, 3, 16], "avail": [0, 3], "befor": [0, 3, 14, 19], "load": [0, 1, 3, 7], "cog": [0, 3, 5], "support": [0, 4, 7, 19], "bump": 0, "py": [0, 13], "2": [0, 3, 14], "3": 0, "5": [0, 11], "1": [0, 15], "2nd": 0, "march": 0, "bug": 0, "174": 0, "28th": 0, "februari": 0, "173": 0, "4": 0, "9th": 0, "172": 0, "24th": 0, "decemb": 0, "2022": 0, "171": 0, "sync": [0, 3], "app": [0, 3], "command": [0, 1, 3, 7, 9, 11, 13], "after": [0, 3, 14, 19], "extens": [0, 3], "have": [0, 9, 13, 15], "been": 0, "thi": [0, 1, 3, 7, 9, 11, 13, 14, 16, 18, 19], "releas": 0, "also": [0, 7, 13, 14], "remov": [0, 3, 14, 17], "need": [0, 1], "run": [0, 1, 11, 19], "pydis_cor": [0, 1, 3, 14], "botbas": [0, 2, 3], "load_extens": [0, 2, 3], "task": [0, 19], "23rd": 0, "170": 0, "save": [0, 3, 17], "refer": 0, "newli": 0, "creat": [0, 3, 4, 8, 11, 13, 19], "13th": 0, "169": 0, "return": [0, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19], "none": [0, 3, 4, 6, 7, 8, 10, 11, 12, 14, 15, 16, 19], "upon": 0, "receiv": [0, 6, 9], "bad": 0, "request": [0, 3, 6, 18], "from": [0, 1, 3, 4, 6, 7, 9, 13, 14, 16, 17, 19], "member": [0, 3, 7], "get_or_fetch_memb": [0, 3, 7, 16], "17th": 0, "novemb": 0, "151": 0, "python": [0, 1, 3, 17, 19], "11": 0, "14th": 0, "162": 0, "being": [0, 7, 16], "abl": 0, "delet": [0, 3, 6, 8, 14, 17], "interact": [0, 3, 7, 9], "messag": [0, 3, 10, 11, 12, 14, 15, 19], "button": [0, 14], "press": 0, "timeout": [0, 14], "88": 0, "decor": [0, 8, 11, 13], "stop": 0, "success": [0, 17], "duplic": [0, 11], "invoc": [0, 11], "158": 0, "5th": 0, "break": [0, 13], "157": 0, "renam": 0, "project": [0, 1], "allow": [0, 1, 3, 14, 17], "publish": 0, "pypi": 0, "8": 0, "18th": 0, "septemb": 0, "138": 0, "august": 0, "125": 0, "stabl": 0, "16th": 0, "124": 0, "updat": [0, 13], "regex": [0, 3, 7], "discord_invit": [0, 3, 7, 18], "option": [0, 3, 6, 8, 10, 11, 12, 14, 15, 16], "match": [0, 3], "lead": 0, "http": [0, 6, 18], "": [0, 1, 7, 8, 10, 11, 13, 14, 15, 18, 19], "www": 0, "27th": 0, "juli": 0, "110": 0, "async": [0, 3, 4, 6, 8, 9, 10, 11, 12, 14, 16, 17], "rediscach": 0, "v1": 0, "rc2": 0, "107": 0, "declar": 0, "aiodn": 0, "depend": [0, 9], "sampl": 0, "boilerpl": 0, "document": 0, "explain": 0, "how": [0, 8, 13, 19], "develop": [0, 2, 3, 7], "bot": [0, 1, 3, 7, 9], "core": [0, 1], "108": 0, "version": [0, 10], "10": 0, "101": 0, "clean": [0, 10], "string": [0, 6], "referenc": 0, "content": [0, 6, 10, 17], "106": 0, "an": [0, 1, 3, 4, 6, 7, 8, 9, 15, 17, 19], "attr": 0, "viewwithuserandrolecheck": [0, 3, 7, 14], "On": 0, "view": [0, 14], "ha": [0, 7], "its": [0, 3, 11, 13], "set": [0, 1, 3, 11, 13, 14], "104": 0, "fix": 0, "deletemessagebutton": [0, 3, 7, 14], "work": [0, 1], "due": 0, "wrong": 0, "method": [0, 4, 6, 7, 15], "103": 0, "attach": 0, "parent": [0, 14], "gener": [0, 3, 11, 19], "onli": [0, 3], "specifi": [0, 11, 14], "user": [0, 11, 14], "role": [0, 1, 3, 14, 16], "98": 0, "close": [0, 2, 3, 6, 19], "stat": [0, 4], "_transport": 0, "wa": [0, 9, 19], "30th": 0, "91": 0, "miss": 0, "await": [0, 11, 14, 16], "ping_servic": [0, 2, 3], "some": [0, 17], "case": 0, "pass": [0, 6, 15, 16, 19], "self": [0, 3, 14], "paramet": [0, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19], "incorrect": 0, "docstr": 0, "handle_role_chang": [0, 3, 7, 16], "96": 0, "attempt": [0, 3, 9, 16], "connect": [0, 3, 4], "statsd_url": [0, 3], "i": [0, 1, 3, 6, 7, 9, 11, 12, 13, 14, 15, 16, 17, 19], "93": 0, "0eb3d26": 0, "auto": 0, "mod": 0, "which": [0, 1, 7, 11, 19], "new": [0, 1, 4, 6, 8, 13, 19], "auto_mod": 0, "message_typ": 0, "filter": 0, "system": [0, 1], "79": 0, "restor": 0, "site": [0, 6], "sphinx": 0, "multivers": 0, "make": [0, 1, 15], "older": 0, "doc": 0, "78": 0, "4cbe8f5": 0, "permiss": [0, 9], "resolut": 0, "deal": 0, "time": [0, 19], "out": [0, 1, 14], "75": 0, "invit": [0, 18], "longer": [0, 14], "url": [0, 3, 6, 17], "safe": 0, "result": [0, 19], "captur": [0, 13, 18], "charact": 0, "up": [0, 1, 3], "whitespac": [0, 18], "26th": 0, "april": 0, "72": 0, "5a06fa5": 0, "notabl": 0, "one": [0, 3], "commit": 0, "dynam": 0, "extend": 0, "chunk": 0, "base": [0, 3, 4, 6, 8, 11, 13, 14, 15, 17, 19], "number": [0, 17], "so": [0, 1, 7], "should": [0, 1, 6, 14], "actual": 0, "now": [0, 1, 19], "25th": 0, "69": 0, "get": [0, 3, 6, 9, 16], "21st": 0, "68": 0, "correct": [0, 1], "pyproject": [0, 1], "toml": [0, 1], "directli": [0, 13], "main": 0, "don": [0, 19], "t": [0, 10, 12, 13, 19], "modul": [0, 3, 7, 13, 19], "start": [0, 3, 19], "_": 0, "66": 0, "each": 0, "own": [0, 13], "avoid": 0, "singl": 0, "crash": 0, "entir": [0, 3], "process": 0, "20th": 0, "65": 0, "unqualifi": [0, 2, 3, 7], "namespac": [0, 19], "manipul": [0, 13], "19th": 0, "64": 0, "987235d": 0, "revert": 0, "chang": [0, 1, 13], "help": [0, 1], "behaviour": 0, "broke": 0, "custom": [0, 8, 15], "pagin": 0, "basic": [0, 14], "forum": 0, "channel": [0, 3, 7, 11], "63": 0, "api_cli": [0, 3], "__init__": [0, 2, 3, 4, 6, 7, 8, 11, 14, 19], "site_api": [0, 2, 3], "apicli": [0, 2, 3, 6], "instanc": [0, 3, 6, 8, 9, 15, 19], "61": 0, "reconnect": 0, "redi": 0, "session": [0, 3, 6, 17], "setup": [0, 3], "56": 0, "move": 0, "creation": 0, "asyncio": [0, 4, 19], "event": [0, 3, 4, 19], "_guild_avail": 0, "within": [0, 3], "hook": 0, "deprec": 0, "notic": 0, "dummi": [0, 3], "asyncstatsdcli": 0, "real": 0, "cannot": [0, 3], "made": 0, "init": [0, 3, 4], "54": 0, "aiohttp": [0, 3, 6, 17], "asyncresolv": 0, "42": 0, "public": 0, "statsd": [0, 3, 4], "client": [0, 3, 4], "ext": [0, 2, 3, 7, 9, 10], "sub": [0, 3], "class": [0, 3, 4, 6, 8, 11, 14, 15, 17, 19], "abstract": 0, "lot": 0, "logic": 0, "share": [0, 13], "between": [0, 1, 13], "latest": 0, "alpha": 0, "39": 0, "back": 0, "37": 0, "trace": [0, 7, 15], "import": 0, "can": [0, 1, 14, 19], "function": [0, 3, 7, 8, 9, 11, 15, 16, 19], "3rd": 0, "35": 0, "apply_monkey_patch": [0, 2, 3, 7], "34": 0, "port": [0, 4], "api": [0, 6, 16], "wrapper": [0, 6, 11, 13, 19], "22nd": 0, "32": 0, "0a0": 0, "disnak": 0, "29": 0, "mani": [0, 3, 8], "common": [0, 1, 3, 7, 15, 18], "cach": [0, 3, 7, 9, 16], "logger": [0, 15], "monkei": [0, 7], "patch": [0, 3, 6, 7], "ad": [0, 1, 7, 14, 15], "intersphinx": 0, "januari": 0, "12": 0, "code": [0, 1, 18], "block": [0, 11, 18], "detect": 0, "2021": 0, "autogener": 0, "packag": [0, 7], "poetri": [0, 1], "ci": 0, "To": [1, 3, 15], "your": 1, "ar": [1, 3, 8, 13, 14, 18], "few": 1, "possibl": 1, "approach": 1, "instal": 1, "copi": [1, 13], "pre": 1, "exist": [1, 19], "provid": [1, 8, 10, 12, 19], "templat": 1, "dev": [1, 3], "folder": 1, "see": [1, 13, 14], "below": 1, "more": [1, 13], "info": 1, "both": [1, 17], "what": 1, "go": 1, "them": [1, 3, 13, 19], "you": [1, 9, 18], "ll": [1, 19], "write": 1, "might": 1, "mean": 1, "modifi": [1, 16], "ones": 1, "etc": 1, "The": [1, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19], "step": 1, "most": 1, "groundwork": 1, "exact": 1, "requir": [1, 3, 19], "vari": 1, "re": [1, 3, 12, 19], "navig": 1, "want": 1, "sir": 1, "lancebot": 1, "pip": 1, "path": 1, "environ": 1, "root": [1, 3, 7], "directori": 1, "machin": 1, "That": 1, "contain": [1, 14, 17, 19], "file": [1, 17], "sure": 1, "again": 1, "git": 1, "ignor": [1, 7, 13], "free": 1, "howev": 1, "like": [1, 13], "m": 1, "docker": 1, "compos": 1, "d": [1, 13], "configur": 1, "variabl": 1, "program": 1, "env": 1, "bot_token": 1, "token": [1, 6], "intent": 1, "enabl": 1, "guild_id": [1, 3], "monitor": 1, "prefix": [1, 4], "invok": [1, 11, 14], "default": 1, "mention": [1, 3], "allowed_rol": [1, 3, 14], "A": [1, 3, 6, 7, 8, 9, 11, 13, 14, 17, 19], "comma": 1, "seper": 1, "list": [1, 3], "id": [1, 3, 9, 14, 19], "do": [1, 9], "anyth": [1, 17], "reinstal": 1, "librari": 1, "includ": [1, 12], "other": [1, 19], "applic": 1, "certain": 1, "pydi": 2, "add_cog": [2, 3], "add_command": [2, 3], "clear": [2, 3, 7, 8], "log_to_dev_log": [2, 3], "on_guild_avail": [2, 3], "on_guild_unavail": [2, 3], "remove_command": [2, 3], "setup_hook": [2, 3], "wait_until_guild_avail": [2, 3], "startuperror": [2, 3], "subpackag": 2, "submodul": 2, "async_stat": [2, 3], "asyncstatscli": [2, 3, 4], "responsecodeerror": [2, 3, 6], "index": 2, "search": 2, "page": 2, "inform": [2, 15], "local": 2, "test": 2, "changelog": 2, "tool": [3, 7], "arg": [3, 11, 15], "http_session": [3, 17], "redis_sess": 3, "kwarg": [3, 6, 11, 14, 15, 19], "sourc": [3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "implement": [3, 4, 8, 14, 15], "initialis": [3, 8], "int": [3, 4, 8, 9, 14, 17, 19], "clientsess": [3, 6, 17], "redissess": 3, "async_rediscach": 3, "str": [3, 4, 6, 7, 10, 13, 14, 15, 17, 19], "server": [3, 18], "If": [3, 6, 11, 13, 14, 19], "given": [3, 4, 7, 9, 10, 15, 16, 19], "oper": [3, 19], "type": [3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19], "normal": 3, "alias": [3, 7], "Not": 3, "instanti": [3, 14, 19], "instead": [3, 11, 19], "connector": 3, "resolv": [3, 13], "sync_app_command": 3, "true": [3, 6, 11, 15, 19], "all_extens": 3, "bool": [3, 6, 9, 11, 14, 19], "whether": [3, 6, 9], "intern": [3, 7], "becom": 3, "appear": 3, "still": 3, "empti": 3, "guild_available_but_cache_empti": 3, "emit": 3, "unavail": 3, "ping": 3, "ensur": [3, 14, 18], "thei": [3, 13], "name": [3, 7, 13, 15, 17, 19], "alia": [3, 7, 11], "individu": 3, "either": 3, "manual": 3, "edit": 3, "all_command": 3, "startup": 3, "call": [3, 11, 13, 19], "create_socket": [3, 4], "until": [3, 18], "readi": 3, "on_readi": 3, "inadequ": 3, "becaus": [3, 13], "second": [3, 11, 14, 19], "guild_creat": 3, "gatewai": 3, "give": 3, "thu": 3, "popul": 3, "except": [3, 6, 11, 13, 15, 17, 19], "asynccach": [3, 7, 8], "get_or_fetch_channel": [3, 7, 9], "is_in_categori": [3, 7, 9], "clean_text_or_repli": [3, 7, 10], "cooldown": [3, 7], "commandoncooldown": [3, 7, 11], "p": [3, 7, 11], "r": [3, 7, 11], "block_duplicate_invoc": [3, 7, 11], "error_handl": [3, 7], "handle_forbidden_from_block": [3, 7, 12], "globalnameconflicterror": [3, 7, 13], "command_wrap": [3, 7, 13], "update_wrapper_glob": [3, 7, 13], "customlogg": [3, 7, 15], "get_logg": [3, 7, 15], "paste_servic": [3, 7], "max_paste_s": [3, 7, 17], "pasterespons": [3, 7, 17], "pastetoolongerror": [3, 7, 17], "pasteuploaderror": [3, 7, 17], "send_to_paste_servic": [3, 7, 17], "formatted_code_regex": [3, 7, 18], "raw_code_regex": [3, 7, 18], "create_task": [3, 7, 19], "maybe_raise_for_statu": [3, 6], "post": [3, 6, 17], "put": [3, 6], "__str__": [3, 6], "transport": 4, "commun": 4, "loop": [4, 19], "host": 4, "localhost": 4, "8125": 4, "statsclientbas": 4, "abstracteventloop": [4, 19], "create_datagram_endpoint": 4, "socket": 4, "reusabl": 5, "around": 6, "site_api_url": 6, "site_api_token": 6, "session_kwarg": 6, "object": [6, 7, 8, 9, 11, 16, 19], "django": 6, "initi": [6, 19], "authent": 6, "keyword": [6, 7, 15], "argument": [6, 7, 8, 10, 11, 15, 16], "constructor": 6, "endpoint": 6, "raise_for_statu": 6, "send": [6, 14], "json": 6, "respons": [6, 17], "rais": [6, 9, 10, 11, 12, 13, 16, 17, 19], "ok": 6, "ani": [6, 18, 19], "extra": 6, "dict": 6, "204": 6, "No": 6, "equival": 6, "static": 6, "should_rais": 6, "non": 6, "clientrespons": 6, "check": [6, 9, 11, 12, 14, 19], "response_json": 6, "response_text": 6, "valueerror": [6, 17], "represent": 6, "appli": [7, 8, 11], "group": [7, 18], "root_alias": 7, "two": 7, "sequenc": [7, 13, 14], "act": 7, "top": 7, "level": [7, 15], "rather": 7, "than": [7, 17], "It": 7, "store": [7, 8], "attribut": [7, 13], "send_typ": 7, "403": 7, "under": 7, "heavi": 7, "cloudflar": 7, "worker": 7, "rout": 7, "caus": 7, "thrown": 7, "qualifi": 7, "__call__": [7, 8], "call_without_cooldown": [7, 11], "callback": [7, 14], "interaction_check": [7, 14], "on_timeout": [7, 14], "__contains__": [7, 19], "cancel": [7, 19], "cancel_al": [7, 19], "schedule_at": [7, 19], "schedule_lat": [7, 19], "relat": [8, 15], "max_siz": [8, 17], "128": 8, "lru": 8, "coroutin": [8, 16, 19], "onc": 8, "exce": 8, "maximum": [8, 17], "size": [8, 17], "kei": 8, "fifo": 8, "order": [8, 19], "offset": 8, "arg_offset": 8, "posit": 8, "callabl": [8, 11, 13, 16], "wrap": [8, 13, 19], "target": 8, "item": 8, "helper": [9, 11, 16], "variou": 9, "channel_id": 9, "fetch": [9, 16], "invaliddata": 9, "unknown": 9, "httpexcept": 9, "retriev": 9, "fail": [9, 17], "notfound": 9, "invalid": 9, "guildchannel": 9, "category_id": 9, "categori": 9, "textchannel": 9, "ctx": [10, 14], "repli": [10, 11, 12], "context": 10, "badargu": 10, "wasn": 10, "els": 10, "commanderror": 11, "while": 11, "typevar": [11, 13, 19], "valu": [11, 13, 15], "signatur": 11, "cooldown_dur": 11, "send_notic": 11, "fals": 11, "args_preprocessor": 11, "prevent": [11, 19], "same": [11, 19], "float": [11, 14, 19], "length": 11, "notifi": 11, "about": 11, "paramspec": [11, 13], "iter": 11, "raw": [11, 18], "isn": 12, "conflict": 13, "global": 13, "annot": 13, "assign": 13, "__module__": 13, "__name__": 13, "__qualname__": 13, "__doc__": 13, "__annotations__": 13, "__dict__": 13, "ignored_conflict_nam": 13, "frozenset": 13, "look": [13, 19], "forwardref": 13, "evalu": 13, "detail": 13, "_p": 13, "_r": 13, "found": [13, 16, 19], "behav": 13, "functool": 13, "replac": 13, "For": 13, "__global__": 13, "state": 13, "won": 13, "reflect": 13, "typehint": 13, "style": 14, "buttonstyl": 14, "secondari": 14, "label": 14, "click": 14, "itself": 14, "carri": 14, "done": [14, 19], "origin": 14, "allowed_us": 14, "180": 14, "moder": 14, "who": 14, "last": 14, "ui": 14, "accept": 14, "input": 14, "similar": [14, 18], "occur": 14, "msg": 15, "sever": 15, "exc_info": 15, "houston": 15, "we": [15, 16], "interest": 15, "problem": 15, "mypi": 15, "recognis": 15, "interactin": 16, "member_id": 16, "failur": 16, "indic": 16, "could": 16, "coro": [16, 19], "sole": 16, "expect": 16, "add_rol": 16, "remove_rol": 16, "purpos": 16, "intend": 16, "131072": 17, "byte": 17, "typeddict": 17, "link": 17, "too": 17, "larg": 17, "encount": 17, "paste_url": 17, "file_nam": 17, "lexer": 17, "max": 17, "larger": 17, "reject": 17, "max_length": 17, "greater": 17, "long": [17, 19], "regular": 18, "express": 18, "pattern": 18, "pleas": 18, "sanitis": 18, "output": 18, "someth": 18, "urllib": 18, "pars": 18, "quot": 18, "format": 18, "execut": 19, "keep": 19, "track": 19, "must": 19, "distinguish": 19, "suggest": 19, "immedi": 19, "futur": 19, "uniqu": 19, "prematur": 19, "current": 19, "task_id": 19, "hashabl": 19, "unschedul": 19, "identifi": 19, "warn": 19, "doesn": 19, "known": 19, "alreadi": 19, "unawait": 19, "elsewher": 19, "timezon": 19, "awar": 19, "calcul": 19, "subtract": 19, "na\u00efv": 19, "utc": 19, "datetim": 19, "delai": 19, "suppressed_except": 19, "event_loop": 19, "otherwis": 19, "task_return": 19, "tupl": 19}, "objects": {"": [[3, 0, 0, "-", "pydis_core"]], "pydis_core": [[3, 1, 1, "", "BotBase"], [3, 3, 1, "", "StartupError"], [4, 0, 0, "-", "async_stats"], [5, 0, 0, "-", "exts"], [6, 0, 0, "-", "site_api"], [7, 0, 0, "-", "utils"]], "pydis_core.BotBase": [[3, 2, 1, "", "__init__"], [3, 2, 1, "", "add_cog"], [3, 2, 1, "", "add_command"], [3, 2, 1, "", "clear"], [3, 2, 1, "", "close"], [3, 2, 1, "", "load_extensions"], [3, 2, 1, "", "log_to_dev_log"], [3, 2, 1, "", "on_guild_available"], [3, 2, 1, "", "on_guild_unavailable"], [3, 2, 1, "", "ping_services"], [3, 2, 1, "", "remove_command"], [3, 2, 1, "", "setup_hook"], [3, 2, 1, "", "wait_until_guild_available"]], "pydis_core.StartupError": [[3, 2, 1, "", "__init__"]], "pydis_core.async_stats": [[4, 1, 1, "", "AsyncStatsClient"]], "pydis_core.async_stats.AsyncStatsClient": [[4, 2, 1, "", "__init__"], [4, 2, 1, "", "create_socket"]], "pydis_core.site_api": [[6, 1, 1, "", "APIClient"], [6, 3, 1, "", "ResponseCodeError"]], "pydis_core.site_api.APIClient": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "close"], [6, 2, 1, "", "delete"], [6, 2, 1, "", "get"], [6, 2, 1, "", "maybe_raise_for_status"], [6, 2, 1, "", "patch"], [6, 2, 1, "", "post"], [6, 2, 1, "", "put"], [6, 2, 1, "", "request"]], "pydis_core.site_api.ResponseCodeError": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "__str__"]], "pydis_core.utils": [[7, 4, 1, "", "apply_monkey_patches"], [8, 0, 0, "-", "caching"], [9, 0, 0, "-", "channel"], [10, 0, 0, "-", "commands"], [11, 0, 0, "-", "cooldown"], [12, 0, 0, "-", "error_handling"], [13, 0, 0, "-", "function"], [14, 0, 0, "-", "interactions"], [15, 0, 0, "-", "logging"], [16, 0, 0, "-", "members"], [17, 0, 0, "-", "paste_service"], [18, 0, 0, "-", "regex"], [19, 0, 0, "-", "scheduling"], [7, 4, 1, "", "unqualify"]], "pydis_core.utils.caching": [[8, 1, 1, "", "AsyncCache"]], "pydis_core.utils.caching.AsyncCache": [[8, 2, 1, "", "__call__"], [8, 2, 1, "", "__init__"], [8, 2, 1, "", "clear"]], "pydis_core.utils.channel": [[9, 4, 1, "", "get_or_fetch_channel"], [9, 4, 1, "", "is_in_category"]], "pydis_core.utils.commands": [[10, 4, 1, "", "clean_text_or_reply"]], "pydis_core.utils.cooldown": [[11, 3, 1, "", "CommandOnCooldown"], [11, 5, 1, "", "P"], [11, 1, 1, "", "R"], [11, 4, 1, "", "block_duplicate_invocations"]], "pydis_core.utils.cooldown.CommandOnCooldown": [[11, 2, 1, "", "__init__"], [11, 2, 1, "", "call_without_cooldown"]], "pydis_core.utils.error_handling": [[12, 4, 1, "", "handle_forbidden_from_block"]], "pydis_core.utils.function": [[13, 3, 1, "", "GlobalNameConflictError"], [13, 4, 1, "", "command_wraps"], [13, 4, 1, "", "update_wrapper_globals"]], "pydis_core.utils.interactions": [[14, 1, 1, "", "DeleteMessageButton"], [14, 1, 1, "", "ViewWithUserAndRoleCheck"]], "pydis_core.utils.interactions.DeleteMessageButton": [[14, 2, 1, "", "__init__"], [14, 2, 1, "", "callback"]], "pydis_core.utils.interactions.ViewWithUserAndRoleCheck": [[14, 2, 1, "", "__init__"], [14, 2, 1, "", "interaction_check"], [14, 2, 1, "", "on_timeout"]], "pydis_core.utils.logging": [[15, 1, 1, "", "CustomLogger"], [15, 4, 1, "", "get_logger"]], "pydis_core.utils.logging.CustomLogger": [[15, 2, 1, "", "trace"]], "pydis_core.utils.members": [[16, 4, 1, "", "get_or_fetch_member"], [16, 4, 1, "", "handle_role_change"]], "pydis_core.utils.paste_service": [[17, 5, 1, "", "MAX_PASTE_SIZE"], [17, 1, 1, "", "PasteResponse"], [17, 3, 1, "", "PasteTooLongError"], [17, 3, 1, "", "PasteUploadError"], [17, 4, 1, "", "send_to_paste_service"]], "pydis_core.utils.regex": [[18, 5, 1, "", "DISCORD_INVITE"], [18, 5, 1, "", "FORMATTED_CODE_REGEX"], [18, 5, 1, "", "RAW_CODE_REGEX"]], "pydis_core.utils.scheduling": [[19, 1, 1, "", "Scheduler"], [19, 4, 1, "", "create_task"]], "pydis_core.utils.scheduling.Scheduler": [[19, 2, 1, "", "__contains__"], [19, 2, 1, "", "__init__"], [19, 2, 1, "", "cancel"], [19, 2, 1, "", "cancel_all"], [19, 2, 1, "", "schedule"], [19, 2, 1, "", "schedule_at"], [19, 2, 1, "", "schedule_later"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:exception", "4": "py:function", "5": "py:data"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "exception", "Python exception"], "4": ["py", "function", "Python function"], "5": ["py", "data", "Python data"]}, "titleterms": {"changelog": 0, "local": 1, "develop": 1, "test": 1, "option": 1, "1": 1, "2": 1, "bot": 2, "core": [2, 3], "project": 2, "document": 2, "refer": 2, "modul": 2, "extra": 2, "pydi": 3, "subpackag": 3, "submodul": [3, 7], "async_stat": 4, "ext": 5, "site_api": 6, "util": 7, "cach": 8, "channel": 9, "command": 10, "cooldown": 11, "error_handl": 12, "function": 13, "interact": 14, "log": 15, "member": 16, "paste_servic": 17, "regex": 18, "schedul": 19}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx": 57}, "alltitles": {"Bot Core Project Documentation": [[2, "bot-core-project-documentation"]], "Reference": [[2, "reference"]], "Modules:": [[2, null]], "Extras": [[2, "extras"]], "caching": [[8, "module-pydis_core.utils.caching"]], "site_api": [[6, "module-pydis_core.site_api"]], "Local Development & Testing": [[1, "local-development-testing"]], "Option 1": [[1, "option-1"]], "Option 2": [[1, "option-2"]], "Exts": [[5, "module-pydis_core.exts"]], "async_stats": [[4, "module-pydis_core.async_stats"]], "Utils": [[7, "module-pydis_core.utils"]], "Submodules": [[7, "submodules"], [3, "submodules"]], "Changelog": [[0, "changelog"]], "channel": [[9, "module-pydis_core.utils.channel"]], "Pydis Core": [[3, "module-pydis_core"]], "Subpackages": [[3, "subpackages"]], "cooldown": [[11, "module-pydis_core.utils.cooldown"]], "commands": [[10, "module-pydis_core.utils.commands"]], "members": [[16, "module-pydis_core.utils.members"]], "function": [[13, "module-pydis_core.utils.function"]], "logging": [[15, "module-pydis_core.utils.logging"]], "paste_service": [[17, "module-pydis_core.utils.paste_service"]], "interactions": [[14, "module-pydis_core.utils.interactions"]], "regex": [[18, "module-pydis_core.utils.regex"]], "error_handling": [[12, "module-pydis_core.utils.error_handling"]], "scheduling": [[19, "module-pydis_core.utils.scheduling"]]}, "indexentries": {"botbase (class in pydis_core)": [[3, "pydis_core.BotBase"]], "startuperror": [[3, "pydis_core.StartupError"]], "__init__() (botbase method)": [[3, "pydis_core.BotBase.__init__"]], "__init__() (startuperror method)": [[3, "pydis_core.StartupError.__init__"]], "add_cog() (botbase method)": [[3, "pydis_core.BotBase.add_cog"]], "add_command() (botbase method)": [[3, "pydis_core.BotBase.add_command"]], "clear() (botbase method)": [[3, "pydis_core.BotBase.clear"]], "close() (botbase method)": [[3, "pydis_core.BotBase.close"]], "load_extensions() (botbase method)": [[3, "pydis_core.BotBase.load_extensions"]], "log_to_dev_log() (botbase method)": [[3, "pydis_core.BotBase.log_to_dev_log"]], "module": [[3, "module-pydis_core"], [4, "module-pydis_core.async_stats"], [5, "module-pydis_core.exts"], [6, "module-pydis_core.site_api"], [7, "module-pydis_core.utils"], [8, "module-pydis_core.utils.caching"], [9, "module-pydis_core.utils.channel"], [10, "module-pydis_core.utils.commands"], [11, "module-pydis_core.utils.cooldown"], [12, "module-pydis_core.utils.error_handling"], [13, "module-pydis_core.utils.function"], [14, "module-pydis_core.utils.interactions"], [15, "module-pydis_core.utils.logging"], [16, "module-pydis_core.utils.members"], [17, "module-pydis_core.utils.paste_service"], [18, "module-pydis_core.utils.regex"], [19, "module-pydis_core.utils.scheduling"]], "on_guild_available() (botbase method)": [[3, "pydis_core.BotBase.on_guild_available"]], "on_guild_unavailable() (botbase method)": [[3, "pydis_core.BotBase.on_guild_unavailable"]], "ping_services() (botbase method)": [[3, "pydis_core.BotBase.ping_services"]], "pydis_core": [[3, "module-pydis_core"]], "remove_command() (botbase method)": [[3, "pydis_core.BotBase.remove_command"]], "setup_hook() (botbase method)": [[3, "pydis_core.BotBase.setup_hook"]], "wait_until_guild_available() (botbase method)": [[3, "pydis_core.BotBase.wait_until_guild_available"]], "asyncstatsclient (class in pydis_core.async_stats)": [[4, "pydis_core.async_stats.AsyncStatsClient"]], "__init__() (asyncstatsclient method)": [[4, "pydis_core.async_stats.AsyncStatsClient.__init__"]], "create_socket() (asyncstatsclient method)": [[4, "pydis_core.async_stats.AsyncStatsClient.create_socket"]], "pydis_core.async_stats": [[4, "module-pydis_core.async_stats"]], "pydis_core.exts": [[5, "module-pydis_core.exts"]], "apiclient (class in pydis_core.site_api)": [[6, "pydis_core.site_api.APIClient"]], "responsecodeerror": [[6, "pydis_core.site_api.ResponseCodeError"]], "__init__() (apiclient method)": [[6, "pydis_core.site_api.APIClient.__init__"]], "__init__() (responsecodeerror method)": [[6, "pydis_core.site_api.ResponseCodeError.__init__"]], "__str__() (responsecodeerror method)": [[6, "pydis_core.site_api.ResponseCodeError.__str__"]], "close() (apiclient method)": [[6, "pydis_core.site_api.APIClient.close"]], "delete() (apiclient method)": [[6, "pydis_core.site_api.APIClient.delete"]], "get() (apiclient method)": [[6, "pydis_core.site_api.APIClient.get"]], "maybe_raise_for_status() (apiclient static method)": [[6, "pydis_core.site_api.APIClient.maybe_raise_for_status"]], "patch() (apiclient method)": [[6, "pydis_core.site_api.APIClient.patch"]], "post() (apiclient method)": [[6, "pydis_core.site_api.APIClient.post"]], "put() (apiclient method)": [[6, "pydis_core.site_api.APIClient.put"]], "pydis_core.site_api": [[6, "module-pydis_core.site_api"]], "request() (apiclient method)": [[6, "pydis_core.site_api.APIClient.request"]], "apply_monkey_patches() (in module pydis_core.utils)": [[7, "pydis_core.utils.apply_monkey_patches"]], "pydis_core.utils": [[7, "module-pydis_core.utils"]], "unqualify() (in module pydis_core.utils)": [[7, "pydis_core.utils.unqualify"]], "asynccache (class in pydis_core.utils.caching)": [[8, "pydis_core.utils.caching.AsyncCache"]], "__call__() (asynccache method)": [[8, "pydis_core.utils.caching.AsyncCache.__call__"]], "__init__() (asynccache method)": [[8, "pydis_core.utils.caching.AsyncCache.__init__"]], "clear() (asynccache method)": [[8, "pydis_core.utils.caching.AsyncCache.clear"]], "pydis_core.utils.caching": [[8, "module-pydis_core.utils.caching"]], "get_or_fetch_channel() (in module pydis_core.utils.channel)": [[9, "pydis_core.utils.channel.get_or_fetch_channel"]], "is_in_category() (in module pydis_core.utils.channel)": [[9, "pydis_core.utils.channel.is_in_category"]], "pydis_core.utils.channel": [[9, "module-pydis_core.utils.channel"]], "clean_text_or_reply() (in module pydis_core.utils.commands)": [[10, "pydis_core.utils.commands.clean_text_or_reply"]], "pydis_core.utils.commands": [[10, "module-pydis_core.utils.commands"]], "commandoncooldown": [[11, "pydis_core.utils.cooldown.CommandOnCooldown"]], "p (in module pydis_core.utils.cooldown)": [[11, "pydis_core.utils.cooldown.P"]], "r (class in pydis_core.utils.cooldown)": [[11, "pydis_core.utils.cooldown.R"]], "__init__() (commandoncooldown method)": [[11, "pydis_core.utils.cooldown.CommandOnCooldown.__init__"]], "block_duplicate_invocations() (in module pydis_core.utils.cooldown)": [[11, "pydis_core.utils.cooldown.block_duplicate_invocations"]], "call_without_cooldown() (commandoncooldown method)": [[11, "pydis_core.utils.cooldown.CommandOnCooldown.call_without_cooldown"]], "pydis_core.utils.cooldown": [[11, "module-pydis_core.utils.cooldown"]], "handle_forbidden_from_block() (in module pydis_core.utils.error_handling)": [[12, "pydis_core.utils.error_handling.handle_forbidden_from_block"]], "pydis_core.utils.error_handling": [[12, "module-pydis_core.utils.error_handling"]], "globalnameconflicterror": [[13, "pydis_core.utils.function.GlobalNameConflictError"]], "command_wraps() (in module pydis_core.utils.function)": [[13, "pydis_core.utils.function.command_wraps"]], "pydis_core.utils.function": [[13, "module-pydis_core.utils.function"]], "update_wrapper_globals() (in module pydis_core.utils.function)": [[13, "pydis_core.utils.function.update_wrapper_globals"]], "deletemessagebutton (class in pydis_core.utils.interactions)": [[14, "pydis_core.utils.interactions.DeleteMessageButton"]], "viewwithuserandrolecheck (class in pydis_core.utils.interactions)": [[14, "pydis_core.utils.interactions.ViewWithUserAndRoleCheck"]], "__init__() (deletemessagebutton method)": [[14, "pydis_core.utils.interactions.DeleteMessageButton.__init__"]], "__init__() (viewwithuserandrolecheck method)": [[14, "pydis_core.utils.interactions.ViewWithUserAndRoleCheck.__init__"]], "callback() (deletemessagebutton method)": [[14, "pydis_core.utils.interactions.DeleteMessageButton.callback"]], "interaction_check() (viewwithuserandrolecheck method)": [[14, "pydis_core.utils.interactions.ViewWithUserAndRoleCheck.interaction_check"]], "on_timeout() (viewwithuserandrolecheck method)": [[14, "pydis_core.utils.interactions.ViewWithUserAndRoleCheck.on_timeout"]], "pydis_core.utils.interactions": [[14, "module-pydis_core.utils.interactions"]], "customlogger (class in pydis_core.utils.logging)": [[15, "pydis_core.utils.logging.CustomLogger"]], "get_logger() (in module pydis_core.utils.logging)": [[15, "pydis_core.utils.logging.get_logger"]], "pydis_core.utils.logging": [[15, "module-pydis_core.utils.logging"]], "trace() (customlogger method)": [[15, "pydis_core.utils.logging.CustomLogger.trace"]], "get_or_fetch_member() (in module pydis_core.utils.members)": [[16, "pydis_core.utils.members.get_or_fetch_member"]], "handle_role_change() (in module pydis_core.utils.members)": [[16, "pydis_core.utils.members.handle_role_change"]], "pydis_core.utils.members": [[16, "module-pydis_core.utils.members"]], "max_paste_size (in module pydis_core.utils.paste_service)": [[17, "pydis_core.utils.paste_service.MAX_PASTE_SIZE"]], "pasteresponse (class in pydis_core.utils.paste_service)": [[17, "pydis_core.utils.paste_service.PasteResponse"]], "pastetoolongerror": [[17, "pydis_core.utils.paste_service.PasteTooLongError"]], "pasteuploaderror": [[17, "pydis_core.utils.paste_service.PasteUploadError"]], "pydis_core.utils.paste_service": [[17, "module-pydis_core.utils.paste_service"]], "send_to_paste_service() (in module pydis_core.utils.paste_service)": [[17, "pydis_core.utils.paste_service.send_to_paste_service"]], "discord_invite (in module pydis_core.utils.regex)": [[18, "pydis_core.utils.regex.DISCORD_INVITE"]], "formatted_code_regex (in module pydis_core.utils.regex)": [[18, "pydis_core.utils.regex.FORMATTED_CODE_REGEX"]], "raw_code_regex (in module pydis_core.utils.regex)": [[18, "pydis_core.utils.regex.RAW_CODE_REGEX"]], "pydis_core.utils.regex": [[18, "module-pydis_core.utils.regex"]], "scheduler (class in pydis_core.utils.scheduling)": [[19, "pydis_core.utils.scheduling.Scheduler"]], "__contains__() (scheduler method)": [[19, "pydis_core.utils.scheduling.Scheduler.__contains__"]], "__init__() (scheduler method)": [[19, "pydis_core.utils.scheduling.Scheduler.__init__"]], "cancel() (scheduler method)": [[19, "pydis_core.utils.scheduling.Scheduler.cancel"]], "cancel_all() (scheduler method)": [[19, "pydis_core.utils.scheduling.Scheduler.cancel_all"]], "create_task() (in module pydis_core.utils.scheduling)": [[19, "pydis_core.utils.scheduling.create_task"]], "pydis_core.utils.scheduling": [[19, "module-pydis_core.utils.scheduling"]], "schedule() (scheduler method)": [[19, "pydis_core.utils.scheduling.Scheduler.schedule"]], "schedule_at() (scheduler method)": [[19, "pydis_core.utils.scheduling.Scheduler.schedule_at"]], "schedule_later() (scheduler method)": [[19, "pydis_core.utils.scheduling.Scheduler.schedule_later"]]}})
\ No newline at end of file
+Search.setIndex({"docnames": ["changelog", "development", "index", "output/pydis_core", "output/pydis_core.async_stats", "output/pydis_core.exts", "output/pydis_core.site_api", "output/pydis_core.utils", "output/pydis_core.utils.caching", "output/pydis_core.utils.channel", "output/pydis_core.utils.commands", "output/pydis_core.utils.cooldown", "output/pydis_core.utils.error_handling", "output/pydis_core.utils.function", "output/pydis_core.utils.interactions", "output/pydis_core.utils.logging", "output/pydis_core.utils.members", "output/pydis_core.utils.paste_service", "output/pydis_core.utils.regex", "output/pydis_core.utils.scheduling"], "filenames": ["changelog.rst", "development.rst", "index.rst", "output/pydis_core.rst", "output/pydis_core.async_stats.rst", "output/pydis_core.exts.rst", "output/pydis_core.site_api.rst", "output/pydis_core.utils.rst", "output/pydis_core.utils.caching.rst", "output/pydis_core.utils.channel.rst", "output/pydis_core.utils.commands.rst", "output/pydis_core.utils.cooldown.rst", "output/pydis_core.utils.error_handling.rst", "output/pydis_core.utils.function.rst", "output/pydis_core.utils.interactions.rst", "output/pydis_core.utils.logging.rst", "output/pydis_core.utils.members.rst", "output/pydis_core.utils.paste_service.rst", "output/pydis_core.utils.regex.rst", "output/pydis_core.utils.scheduling.rst"], "titles": ["Changelog", "Local Development & Testing", "Bot Core Project Documentation", "Pydis Core", "async_stats", "Exts", "site_api", "Utils", "caching", "channel", "commands", "cooldown", "error_handling", "function", "interactions", "logging", "members", "paste_service", "regex", "scheduling"], "terms": {"9": 0, "7": 0, "0": [0, 8, 14, 15], "10th": 0, "june": 0, "2023": 0, "featur": [0, 1, 3], "176": 0, "migrat": 0, "repo": 0, "us": [0, 1, 3, 4, 6, 7, 9, 11, 13, 15, 16, 17, 18, 19], "ruff": 0, "lint": 0, "177": 0, "automat": 0, "handl": [0, 12, 16, 19], "discord": [0, 1, 3, 5, 7, 9, 10, 12, 13, 16, 18], "forbidden": [0, 9, 12], "90001": [0, 12], "error": [0, 3, 6, 7, 12, 16, 17], "all": [0, 1, 3, 4, 7, 19], "schedul": [0, 3, 7], "179": 0, "add": [0, 3, 11], "past": [0, 17, 19], "servic": [0, 1, 3, 17], "util": [0, 1, 2, 3, 8, 13, 14, 15], "upload": [0, 17], "text": [0, 6, 10], "our": [0, 1, 7], "6": 0, "6th": 0, "mai": [0, 8], "175": 0, "log": [0, 3, 7, 12, 16, 19], "when": [0, 3, 4, 6, 7, 8, 11, 13, 17, 19], "wait": [0, 3, 19], "guild": [0, 1, 3, 16], "avail": [0, 3], "befor": [0, 3, 14, 19], "load": [0, 1, 3, 7], "cog": [0, 3, 5], "support": [0, 4, 7, 19], "bump": 0, "py": [0, 13], "2": [0, 3, 14], "3": 0, "5": [0, 11], "1": [0, 15], "2nd": 0, "march": 0, "bug": 0, "174": 0, "28th": 0, "februari": 0, "173": 0, "4": 0, "9th": 0, "172": 0, "24th": 0, "decemb": 0, "2022": 0, "171": 0, "sync": [0, 3], "app": [0, 3], "command": [0, 1, 3, 7, 9, 11, 13], "after": [0, 3, 14, 19], "extens": [0, 3], "have": [0, 9, 13, 15], "been": 0, "thi": [0, 1, 3, 7, 9, 11, 13, 14, 16, 18, 19], "releas": 0, "also": [0, 7, 13, 14], "remov": [0, 3, 14, 17], "need": [0, 1], "run": [0, 1, 11, 19], "pydis_cor": [0, 1, 3, 14], "botbas": [0, 2, 3], "load_extens": [0, 2, 3], "task": [0, 19], "23rd": 0, "170": 0, "save": [0, 3, 17], "refer": 0, "newli": 0, "creat": [0, 3, 4, 8, 11, 13, 19], "13th": 0, "169": 0, "return": [0, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19], "none": [0, 3, 4, 6, 7, 8, 10, 11, 12, 14, 15, 16, 19], "upon": 0, "receiv": [0, 6, 9], "bad": 0, "request": [0, 3, 6, 18], "from": [0, 1, 3, 4, 6, 7, 9, 13, 14, 16, 17, 19], "member": [0, 3, 7], "get_or_fetch_memb": [0, 3, 7, 16], "17th": 0, "novemb": 0, "151": 0, "python": [0, 1, 3, 17, 19], "11": 0, "14th": 0, "162": 0, "being": [0, 7, 16], "abl": 0, "delet": [0, 3, 6, 8, 14, 17], "interact": [0, 3, 7, 9], "messag": [0, 3, 10, 11, 12, 14, 15, 19], "button": [0, 14], "press": 0, "timeout": [0, 14], "88": 0, "decor": [0, 8, 11, 13], "stop": 0, "success": [0, 17], "duplic": [0, 11], "invoc": [0, 11], "158": 0, "5th": 0, "break": [0, 13], "157": 0, "renam": 0, "project": [0, 1], "allow": [0, 1, 3, 14, 17], "publish": 0, "pypi": 0, "8": 0, "18th": 0, "septemb": 0, "138": 0, "august": 0, "125": 0, "stabl": 0, "16th": 0, "124": 0, "updat": [0, 13], "regex": [0, 3, 7], "discord_invit": [0, 3, 7, 18], "option": [0, 3, 6, 8, 10, 11, 12, 14, 15, 16], "match": [0, 3], "lead": 0, "http": [0, 6, 18], "": [0, 1, 7, 8, 10, 11, 13, 14, 15, 18, 19], "www": 0, "27th": 0, "juli": 0, "110": 0, "async": [0, 3, 4, 6, 8, 9, 10, 11, 12, 14, 16, 17], "rediscach": 0, "v1": 0, "rc2": 0, "107": 0, "declar": 0, "aiodn": 0, "depend": [0, 9], "sampl": 0, "boilerpl": 0, "document": 0, "explain": 0, "how": [0, 8, 13, 19], "develop": [0, 2, 3, 7], "bot": [0, 1, 3, 7, 9], "core": [0, 1], "108": 0, "version": [0, 10], "10": 0, "101": 0, "clean": [0, 10], "string": [0, 6], "referenc": 0, "content": [0, 6, 10, 17], "106": 0, "an": [0, 1, 3, 4, 6, 7, 8, 9, 15, 17, 19], "attr": 0, "viewwithuserandrolecheck": [0, 3, 7, 14], "On": 0, "view": [0, 14], "ha": [0, 7], "its": [0, 3, 11, 13], "set": [0, 1, 3, 11, 13, 14], "104": 0, "fix": 0, "deletemessagebutton": [0, 3, 7, 14], "work": [0, 1], "due": 0, "wrong": 0, "method": [0, 4, 6, 7, 15], "103": 0, "attach": 0, "parent": [0, 14], "gener": [0, 3, 11, 19], "onli": [0, 3], "specifi": [0, 11, 14], "user": [0, 11, 14], "role": [0, 1, 3, 14, 16], "98": 0, "close": [0, 2, 3, 6, 19], "stat": [0, 4], "_transport": 0, "wa": [0, 9, 19], "30th": 0, "91": 0, "miss": 0, "await": [0, 11, 14, 16], "ping_servic": [0, 2, 3], "some": [0, 17], "case": 0, "pass": [0, 6, 15, 16, 19], "self": [0, 3, 14], "paramet": [0, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19], "incorrect": 0, "docstr": 0, "handle_role_chang": [0, 3, 7, 16], "96": 0, "attempt": [0, 3, 9, 16], "connect": [0, 3, 4], "statsd_url": [0, 3], "i": [0, 1, 3, 6, 7, 9, 11, 12, 13, 14, 15, 16, 17, 19], "93": 0, "0eb3d26": 0, "auto": 0, "mod": 0, "which": [0, 1, 7, 11, 19], "new": [0, 1, 4, 6, 8, 13, 19], "auto_mod": 0, "message_typ": 0, "filter": 0, "system": [0, 1], "79": 0, "restor": 0, "site": [0, 6], "sphinx": 0, "multivers": 0, "make": [0, 1, 15], "older": 0, "doc": 0, "78": 0, "4cbe8f5": 0, "permiss": [0, 9], "resolut": 0, "deal": 0, "time": [0, 19], "out": [0, 1, 14], "75": 0, "invit": [0, 18], "longer": [0, 14], "url": [0, 3, 6, 17], "safe": 0, "result": [0, 19], "captur": [0, 13, 18], "charact": 0, "up": [0, 1, 3], "whitespac": [0, 18], "26th": 0, "april": 0, "72": 0, "5a06fa5": 0, "notabl": 0, "one": [0, 3], "commit": 0, "dynam": 0, "extend": 0, "chunk": 0, "base": [0, 3, 4, 6, 8, 11, 13, 14, 15, 17, 19], "number": [0, 17], "so": [0, 1, 7], "should": [0, 1, 6, 14], "actual": 0, "now": [0, 1, 19], "25th": 0, "69": 0, "get": [0, 3, 6, 9, 16], "21st": 0, "68": 0, "correct": [0, 1], "pyproject": [0, 1], "toml": [0, 1], "directli": [0, 13], "main": 0, "don": [0, 19], "t": [0, 10, 12, 13, 19], "modul": [0, 3, 7, 13, 19], "start": [0, 3, 19], "_": 0, "66": 0, "each": 0, "own": [0, 13], "avoid": 0, "singl": 0, "crash": 0, "entir": [0, 3], "process": 0, "20th": 0, "65": 0, "unqualifi": [0, 2, 3, 7], "namespac": [0, 19], "manipul": [0, 13], "19th": 0, "64": 0, "987235d": 0, "revert": 0, "chang": [0, 1, 13], "help": [0, 1], "behaviour": 0, "broke": 0, "custom": [0, 8, 15], "pagin": 0, "basic": [0, 14], "forum": 0, "channel": [0, 3, 7, 11], "63": 0, "api_cli": [0, 3], "__init__": [0, 2, 3, 4, 6, 7, 8, 11, 14, 19], "site_api": [0, 2, 3], "apicli": [0, 2, 3, 6], "instanc": [0, 3, 6, 8, 9, 15, 19], "61": 0, "reconnect": 0, "redi": 0, "session": [0, 3, 6, 17], "setup": [0, 3], "56": 0, "move": 0, "creation": 0, "asyncio": [0, 4, 19], "event": [0, 3, 4, 19], "_guild_avail": 0, "within": [0, 3], "hook": 0, "deprec": 0, "notic": 0, "dummi": [0, 3], "asyncstatsdcli": 0, "real": 0, "cannot": [0, 3], "made": 0, "init": [0, 3, 4], "54": 0, "aiohttp": [0, 3, 6, 17], "asyncresolv": 0, "42": 0, "public": 0, "statsd": [0, 3, 4], "client": [0, 3, 4], "ext": [0, 2, 3, 7, 9, 10], "sub": [0, 3], "class": [0, 3, 4, 6, 8, 11, 14, 15, 17, 19], "abstract": 0, "lot": 0, "logic": 0, "share": [0, 13], "between": [0, 1, 13], "latest": 0, "alpha": 0, "39": 0, "back": 0, "37": 0, "trace": [0, 7, 15], "import": 0, "can": [0, 1, 14, 19], "function": [0, 3, 7, 8, 9, 11, 15, 16, 19], "3rd": 0, "35": 0, "apply_monkey_patch": [0, 2, 3, 7], "34": 0, "port": [0, 4], "api": [0, 6, 16], "wrapper": [0, 6, 11, 13, 19], "22nd": 0, "32": 0, "0a0": 0, "disnak": 0, "29": 0, "mani": [0, 3, 8], "common": [0, 1, 3, 7, 15, 18], "cach": [0, 3, 7, 9, 16], "logger": [0, 15], "monkei": [0, 7], "patch": [0, 3, 6, 7], "ad": [0, 1, 7, 14, 15], "intersphinx": 0, "januari": 0, "12": 0, "code": [0, 1, 18], "block": [0, 11, 18], "detect": 0, "2021": 0, "autogener": 0, "packag": [0, 7], "poetri": [0, 1], "ci": 0, "To": [1, 3, 15], "your": 1, "ar": [1, 3, 8, 13, 14, 18], "few": 1, "possibl": 1, "approach": 1, "instal": 1, "copi": [1, 13], "pre": 1, "exist": [1, 19], "provid": [1, 8, 10, 12, 19], "templat": 1, "dev": [1, 3], "folder": 1, "see": [1, 13, 14], "below": 1, "more": [1, 13], "info": 1, "both": [1, 17], "what": 1, "go": 1, "them": [1, 3, 13, 19], "you": [1, 9, 18], "ll": [1, 19], "write": 1, "might": 1, "mean": 1, "modifi": [1, 16], "ones": 1, "etc": 1, "The": [1, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19], "step": 1, "most": 1, "groundwork": 1, "exact": 1, "requir": [1, 3, 19], "vari": 1, "re": [1, 3, 12, 19], "navig": 1, "want": 1, "sir": 1, "lancebot": 1, "pip": 1, "path": 1, "environ": 1, "root": [1, 3, 7], "directori": 1, "machin": 1, "That": 1, "contain": [1, 14, 17, 19], "file": [1, 17], "sure": 1, "again": 1, "git": 1, "ignor": [1, 7, 13], "free": 1, "howev": 1, "like": [1, 13], "m": 1, "docker": 1, "compos": 1, "d": [1, 13], "configur": 1, "variabl": 1, "program": 1, "env": 1, "bot_token": 1, "token": [1, 6], "intent": 1, "enabl": 1, "guild_id": [1, 3], "monitor": 1, "prefix": [1, 4], "invok": [1, 11, 14], "default": 1, "mention": [1, 3], "allowed_rol": [1, 3, 14], "A": [1, 3, 6, 7, 8, 9, 11, 13, 14, 17, 19], "comma": 1, "seper": 1, "list": [1, 3], "id": [1, 3, 9, 14, 19], "do": [1, 9], "anyth": [1, 17], "reinstal": 1, "librari": 1, "includ": [1, 12], "other": [1, 19], "applic": 1, "certain": 1, "pydi": 2, "add_cog": [2, 3], "add_command": [2, 3], "clear": [2, 3, 7, 8], "log_to_dev_log": [2, 3], "on_guild_avail": [2, 3], "on_guild_unavail": [2, 3], "remove_command": [2, 3], "setup_hook": [2, 3], "wait_until_guild_avail": [2, 3], "startuperror": [2, 3], "subpackag": 2, "submodul": 2, "async_stat": [2, 3], "asyncstatscli": [2, 3, 4], "responsecodeerror": [2, 3, 6], "index": 2, "search": 2, "page": 2, "inform": [2, 15], "local": 2, "test": 2, "changelog": 2, "tool": [3, 7], "arg": [3, 11, 15], "http_session": [3, 17], "redis_sess": 3, "kwarg": [3, 6, 11, 14, 15, 19], "sourc": [3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "implement": [3, 4, 8, 14, 15], "initialis": [3, 8], "int": [3, 4, 8, 9, 14, 17, 19], "clientsess": [3, 6, 17], "redissess": 3, "async_rediscach": 3, "str": [3, 4, 6, 7, 10, 13, 14, 15, 17, 19], "server": [3, 18], "If": [3, 6, 11, 13, 14, 19], "given": [3, 4, 7, 9, 10, 15, 16, 19], "oper": [3, 19], "type": [3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19], "normal": 3, "alias": [3, 7], "Not": 3, "instanti": [3, 14, 19], "instead": [3, 11, 19], "connector": 3, "resolv": [3, 13], "sync_app_command": 3, "true": [3, 6, 11, 15, 19], "all_extens": 3, "bool": [3, 6, 9, 11, 14, 19], "whether": [3, 6, 9], "intern": [3, 7], "becom": 3, "appear": 3, "still": 3, "empti": 3, "guild_available_but_cache_empti": 3, "emit": 3, "unavail": 3, "ping": 3, "ensur": [3, 14, 18], "thei": [3, 13], "name": [3, 7, 13, 15, 17, 19], "alia": [3, 7, 11], "individu": 3, "either": 3, "manual": 3, "edit": 3, "all_command": 3, "startup": 3, "call": [3, 11, 13, 19], "create_socket": [3, 4], "until": [3, 18], "readi": 3, "on_readi": 3, "inadequ": 3, "becaus": [3, 13], "second": [3, 11, 14, 19], "guild_creat": 3, "gatewai": 3, "give": 3, "thu": 3, "popul": 3, "except": [3, 6, 11, 13, 15, 17, 19], "asynccach": [3, 7, 8], "get_or_fetch_channel": [3, 7, 9], "is_in_categori": [3, 7, 9], "clean_text_or_repli": [3, 7, 10], "cooldown": [3, 7], "commandoncooldown": [3, 7, 11], "p": [3, 7, 11], "r": [3, 7, 11], "block_duplicate_invoc": [3, 7, 11], "error_handl": [3, 7], "handle_forbidden_from_block": [3, 7, 12], "globalnameconflicterror": [3, 7, 13], "command_wrap": [3, 7, 13], "update_wrapper_glob": [3, 7, 13], "customlogg": [3, 7, 15], "get_logg": [3, 7, 15], "paste_servic": [3, 7], "max_paste_s": [3, 7, 17], "pasterespons": [3, 7, 17], "pastetoolongerror": [3, 7, 17], "pasteuploaderror": [3, 7, 17], "send_to_paste_servic": [3, 7, 17], "formatted_code_regex": [3, 7, 18], "raw_code_regex": [3, 7, 18], "create_task": [3, 7, 19], "maybe_raise_for_statu": [3, 6], "post": [3, 6, 17], "put": [3, 6], "__str__": [3, 6], "transport": 4, "commun": 4, "loop": [4, 19], "host": 4, "localhost": 4, "8125": 4, "statsclientbas": 4, "abstracteventloop": [4, 19], "create_datagram_endpoint": 4, "socket": 4, "reusabl": 5, "around": 6, "site_api_url": 6, "site_api_token": 6, "session_kwarg": 6, "object": [6, 7, 8, 9, 11, 16, 19], "django": 6, "initi": [6, 19], "authent": 6, "keyword": [6, 7, 15], "argument": [6, 7, 8, 10, 11, 15, 16], "constructor": 6, "endpoint": 6, "raise_for_statu": 6, "send": [6, 14], "json": 6, "respons": [6, 17], "rais": [6, 9, 10, 11, 12, 13, 16, 17, 19], "ok": 6, "ani": [6, 18, 19], "extra": 6, "dict": 6, "204": 6, "No": 6, "equival": 6, "static": 6, "should_rais": 6, "non": 6, "clientrespons": 6, "check": [6, 9, 11, 12, 14, 19], "response_json": 6, "response_text": 6, "valueerror": [6, 17], "represent": 6, "appli": [7, 8, 11], "group": [7, 18], "root_alias": 7, "two": 7, "sequenc": [7, 13, 14], "act": 7, "top": 7, "level": [7, 15], "rather": 7, "than": [7, 17], "It": 7, "store": [7, 8], "attribut": [7, 13], "send_typ": 7, "403": 7, "under": 7, "heavi": 7, "cloudflar": 7, "worker": 7, "rout": 7, "caus": 7, "thrown": 7, "qualifi": 7, "__call__": [7, 8], "call_without_cooldown": [7, 11], "callback": [7, 14], "interaction_check": [7, 14], "on_timeout": [7, 14], "__contains__": [7, 19], "cancel": [7, 19], "cancel_al": [7, 19], "schedule_at": [7, 19], "schedule_lat": [7, 19], "relat": [8, 15], "max_siz": [8, 17], "128": 8, "lru": 8, "coroutin": [8, 16, 19], "onc": 8, "exce": 8, "maximum": [8, 17], "size": [8, 17], "kei": 8, "fifo": 8, "order": [8, 19], "offset": 8, "arg_offset": 8, "posit": 8, "callabl": [8, 11, 13, 16], "wrap": [8, 13, 19], "target": 8, "item": 8, "helper": [9, 11, 16], "variou": 9, "channel_id": 9, "fetch": [9, 16], "invaliddata": 9, "unknown": 9, "httpexcept": 9, "retriev": 9, "fail": [9, 17], "notfound": 9, "invalid": 9, "guildchannel": 9, "category_id": 9, "categori": 9, "textchannel": 9, "ctx": [10, 14], "repli": [10, 11, 12], "context": 10, "badargu": 10, "wasn": 10, "els": 10, "commanderror": 11, "while": 11, "typevar": [11, 13, 19], "valu": [11, 13, 15], "signatur": 11, "cooldown_dur": 11, "send_notic": 11, "fals": 11, "args_preprocessor": 11, "prevent": [11, 19], "same": [11, 19], "float": [11, 14, 19], "length": 11, "notifi": 11, "about": 11, "paramspec": [11, 13], "iter": 11, "raw": [11, 18], "isn": 12, "conflict": 13, "global": 13, "annot": 13, "assign": 13, "__module__": 13, "__name__": 13, "__qualname__": 13, "__doc__": 13, "__annotations__": 13, "__dict__": 13, "ignored_conflict_nam": 13, "frozenset": 13, "look": [13, 19], "forwardref": 13, "evalu": 13, "detail": 13, "_p": 13, "_r": 13, "found": [13, 16, 19], "behav": 13, "functool": 13, "replac": 13, "For": 13, "__global__": 13, "state": 13, "won": 13, "reflect": 13, "typehint": 13, "style": 14, "buttonstyl": 14, "secondari": 14, "label": 14, "click": 14, "itself": 14, "carri": 14, "done": [14, 19], "origin": 14, "allowed_us": 14, "180": 14, "moder": 14, "who": 14, "last": 14, "ui": 14, "accept": 14, "input": 14, "similar": [14, 18], "occur": 14, "msg": 15, "sever": 15, "exc_info": 15, "houston": 15, "we": [15, 16], "interest": 15, "problem": 15, "mypi": 15, "recognis": 15, "interactin": 16, "member_id": 16, "failur": 16, "indic": 16, "could": 16, "coro": [16, 19], "sole": 16, "expect": 16, "add_rol": 16, "remove_rol": 16, "purpos": 16, "intend": 16, "131072": 17, "byte": 17, "typeddict": 17, "link": 17, "too": 17, "larg": 17, "encount": 17, "paste_url": 17, "file_nam": 17, "lexer": 17, "max": 17, "larger": 17, "reject": 17, "max_length": 17, "greater": 17, "long": [17, 19], "regular": 18, "express": 18, "pattern": 18, "pleas": 18, "sanitis": 18, "output": 18, "someth": 18, "urllib": 18, "pars": 18, "quot": 18, "format": 18, "execut": 19, "keep": 19, "track": 19, "must": 19, "distinguish": 19, "suggest": 19, "immedi": 19, "futur": 19, "uniqu": 19, "prematur": 19, "current": 19, "task_id": 19, "hashabl": 19, "unschedul": 19, "identifi": 19, "warn": 19, "doesn": 19, "known": 19, "alreadi": 19, "unawait": 19, "elsewher": 19, "timezon": 19, "awar": 19, "calcul": 19, "subtract": 19, "na\u00efv": 19, "utc": 19, "datetim": 19, "delai": 19, "suppressed_except": 19, "event_loop": 19, "otherwis": 19, "task_return": 19, "tupl": 19}, "objects": {"": [[3, 0, 0, "-", "pydis_core"]], "pydis_core": [[3, 1, 1, "", "BotBase"], [3, 3, 1, "", "StartupError"], [4, 0, 0, "-", "async_stats"], [5, 0, 0, "-", "exts"], [6, 0, 0, "-", "site_api"], [7, 0, 0, "-", "utils"]], "pydis_core.BotBase": [[3, 2, 1, "", "__init__"], [3, 2, 1, "", "add_cog"], [3, 2, 1, "", "add_command"], [3, 2, 1, "", "clear"], [3, 2, 1, "", "close"], [3, 2, 1, "", "load_extensions"], [3, 2, 1, "", "log_to_dev_log"], [3, 2, 1, "", "on_guild_available"], [3, 2, 1, "", "on_guild_unavailable"], [3, 2, 1, "", "ping_services"], [3, 2, 1, "", "remove_command"], [3, 2, 1, "", "setup_hook"], [3, 2, 1, "", "wait_until_guild_available"]], "pydis_core.StartupError": [[3, 2, 1, "", "__init__"]], "pydis_core.async_stats": [[4, 1, 1, "", "AsyncStatsClient"]], "pydis_core.async_stats.AsyncStatsClient": [[4, 2, 1, "", "__init__"], [4, 2, 1, "", "create_socket"]], "pydis_core.site_api": [[6, 1, 1, "", "APIClient"], [6, 3, 1, "", "ResponseCodeError"]], "pydis_core.site_api.APIClient": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "close"], [6, 2, 1, "", "delete"], [6, 2, 1, "", "get"], [6, 2, 1, "", "maybe_raise_for_status"], [6, 2, 1, "", "patch"], [6, 2, 1, "", "post"], [6, 2, 1, "", "put"], [6, 2, 1, "", "request"]], "pydis_core.site_api.ResponseCodeError": [[6, 2, 1, "", "__init__"], [6, 2, 1, "", "__str__"]], "pydis_core.utils": [[7, 4, 1, "", "apply_monkey_patches"], [8, 0, 0, "-", "caching"], [9, 0, 0, "-", "channel"], [10, 0, 0, "-", "commands"], [11, 0, 0, "-", "cooldown"], [12, 0, 0, "-", "error_handling"], [13, 0, 0, "-", "function"], [14, 0, 0, "-", "interactions"], [15, 0, 0, "-", "logging"], [16, 0, 0, "-", "members"], [17, 0, 0, "-", "paste_service"], [18, 0, 0, "-", "regex"], [19, 0, 0, "-", "scheduling"], [7, 4, 1, "", "unqualify"]], "pydis_core.utils.caching": [[8, 1, 1, "", "AsyncCache"]], "pydis_core.utils.caching.AsyncCache": [[8, 2, 1, "", "__call__"], [8, 2, 1, "", "__init__"], [8, 2, 1, "", "clear"]], "pydis_core.utils.channel": [[9, 4, 1, "", "get_or_fetch_channel"], [9, 4, 1, "", "is_in_category"]], "pydis_core.utils.commands": [[10, 4, 1, "", "clean_text_or_reply"]], "pydis_core.utils.cooldown": [[11, 3, 1, "", "CommandOnCooldown"], [11, 5, 1, "", "P"], [11, 1, 1, "", "R"], [11, 4, 1, "", "block_duplicate_invocations"]], "pydis_core.utils.cooldown.CommandOnCooldown": [[11, 2, 1, "", "__init__"], [11, 2, 1, "", "call_without_cooldown"]], "pydis_core.utils.error_handling": [[12, 4, 1, "", "handle_forbidden_from_block"]], "pydis_core.utils.function": [[13, 3, 1, "", "GlobalNameConflictError"], [13, 4, 1, "", "command_wraps"], [13, 4, 1, "", "update_wrapper_globals"]], "pydis_core.utils.interactions": [[14, 1, 1, "", "DeleteMessageButton"], [14, 1, 1, "", "ViewWithUserAndRoleCheck"]], "pydis_core.utils.interactions.DeleteMessageButton": [[14, 2, 1, "", "__init__"], [14, 2, 1, "", "callback"]], "pydis_core.utils.interactions.ViewWithUserAndRoleCheck": [[14, 2, 1, "", "__init__"], [14, 2, 1, "", "interaction_check"], [14, 2, 1, "", "on_timeout"]], "pydis_core.utils.logging": [[15, 1, 1, "", "CustomLogger"], [15, 4, 1, "", "get_logger"]], "pydis_core.utils.logging.CustomLogger": [[15, 2, 1, "", "trace"]], "pydis_core.utils.members": [[16, 4, 1, "", "get_or_fetch_member"], [16, 4, 1, "", "handle_role_change"]], "pydis_core.utils.paste_service": [[17, 5, 1, "", "MAX_PASTE_SIZE"], [17, 1, 1, "", "PasteResponse"], [17, 3, 1, "", "PasteTooLongError"], [17, 3, 1, "", "PasteUploadError"], [17, 4, 1, "", "send_to_paste_service"]], "pydis_core.utils.regex": [[18, 5, 1, "", "DISCORD_INVITE"], [18, 5, 1, "", "FORMATTED_CODE_REGEX"], [18, 5, 1, "", "RAW_CODE_REGEX"]], "pydis_core.utils.scheduling": [[19, 1, 1, "", "Scheduler"], [19, 4, 1, "", "create_task"]], "pydis_core.utils.scheduling.Scheduler": [[19, 2, 1, "", "__contains__"], [19, 2, 1, "", "__init__"], [19, 2, 1, "", "cancel"], [19, 2, 1, "", "cancel_all"], [19, 2, 1, "", "schedule"], [19, 2, 1, "", "schedule_at"], [19, 2, 1, "", "schedule_later"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:exception", "4": "py:function", "5": "py:data"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "exception", "Python exception"], "4": ["py", "function", "Python function"], "5": ["py", "data", "Python data"]}, "titleterms": {"changelog": 0, "local": 1, "develop": 1, "test": 1, "option": 1, "1": 1, "2": 1, "bot": 2, "core": [2, 3], "project": 2, "document": 2, "refer": 2, "modul": 2, "extra": 2, "pydi": 3, "subpackag": 3, "submodul": [3, 7], "async_stat": 4, "ext": 5, "site_api": 6, "util": 7, "cach": 8, "channel": 9, "command": 10, "cooldown": 11, "error_handl": 12, "function": 13, "interact": 14, "log": 15, "member": 16, "paste_servic": 17, "regex": 18, "schedul": 19}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx": 57}, "alltitles": {"Bot Core Project Documentation": [[2, "bot-core-project-documentation"]], "Reference": [[2, "reference"]], "Modules:": [[2, null]], "Extras": [[2, "extras"]], "Local Development & Testing": [[1, "local-development-testing"]], "Option 1": [[1, "option-1"]], "Option 2": [[1, "option-2"]], "Pydis Core": [[3, "module-pydis_core"]], "Subpackages": [[3, "subpackages"]], "Submodules": [[3, "submodules"], [7, "submodules"]], "async_stats": [[4, "module-pydis_core.async_stats"]], "site_api": [[6, "module-pydis_core.site_api"]], "Utils": [[7, "module-pydis_core.utils"]], "caching": [[8, "module-pydis_core.utils.caching"]], "Exts": [[5, "module-pydis_core.exts"]], "Changelog": [[0, "changelog"]], "channel": [[9, "module-pydis_core.utils.channel"]], "scheduling": [[19, "module-pydis_core.utils.scheduling"]], "members": [[16, "module-pydis_core.utils.members"]], "paste_service": [[17, "module-pydis_core.utils.paste_service"]], "cooldown": [[11, "module-pydis_core.utils.cooldown"]], "logging": [[15, "module-pydis_core.utils.logging"]], "function": [[13, "module-pydis_core.utils.function"]], "interactions": [[14, "module-pydis_core.utils.interactions"]], "regex": [[18, "module-pydis_core.utils.regex"]], "error_handling": [[12, "module-pydis_core.utils.error_handling"]], "commands": [[10, "module-pydis_core.utils.commands"]]}, "indexentries": {"botbase (class in pydis_core)": [[3, "pydis_core.BotBase"]], "startuperror": [[3, "pydis_core.StartupError"]], "__init__() (botbase method)": [[3, "pydis_core.BotBase.__init__"]], "__init__() (startuperror method)": [[3, "pydis_core.StartupError.__init__"]], "add_cog() (botbase method)": [[3, "pydis_core.BotBase.add_cog"]], "add_command() (botbase method)": [[3, "pydis_core.BotBase.add_command"]], "clear() (botbase method)": [[3, "pydis_core.BotBase.clear"]], "close() (botbase method)": [[3, "pydis_core.BotBase.close"]], "load_extensions() (botbase method)": [[3, "pydis_core.BotBase.load_extensions"]], "log_to_dev_log() (botbase method)": [[3, "pydis_core.BotBase.log_to_dev_log"]], "module": [[3, "module-pydis_core"], [4, "module-pydis_core.async_stats"], [5, "module-pydis_core.exts"], [6, "module-pydis_core.site_api"], [7, "module-pydis_core.utils"], [8, "module-pydis_core.utils.caching"], [9, "module-pydis_core.utils.channel"], [10, "module-pydis_core.utils.commands"], [11, "module-pydis_core.utils.cooldown"], [12, "module-pydis_core.utils.error_handling"], [13, "module-pydis_core.utils.function"], [14, "module-pydis_core.utils.interactions"], [15, "module-pydis_core.utils.logging"], [16, "module-pydis_core.utils.members"], [17, "module-pydis_core.utils.paste_service"], [18, "module-pydis_core.utils.regex"], [19, "module-pydis_core.utils.scheduling"]], "on_guild_available() (botbase method)": [[3, "pydis_core.BotBase.on_guild_available"]], "on_guild_unavailable() (botbase method)": [[3, "pydis_core.BotBase.on_guild_unavailable"]], "ping_services() (botbase method)": [[3, "pydis_core.BotBase.ping_services"]], "pydis_core": [[3, "module-pydis_core"]], "remove_command() (botbase method)": [[3, "pydis_core.BotBase.remove_command"]], "setup_hook() (botbase method)": [[3, "pydis_core.BotBase.setup_hook"]], "wait_until_guild_available() (botbase method)": [[3, "pydis_core.BotBase.wait_until_guild_available"]], "asyncstatsclient (class in pydis_core.async_stats)": [[4, "pydis_core.async_stats.AsyncStatsClient"]], "__init__() (asyncstatsclient method)": [[4, "pydis_core.async_stats.AsyncStatsClient.__init__"]], "create_socket() (asyncstatsclient method)": [[4, "pydis_core.async_stats.AsyncStatsClient.create_socket"]], "pydis_core.async_stats": [[4, "module-pydis_core.async_stats"]], "pydis_core.exts": [[5, "module-pydis_core.exts"]], "apiclient (class in pydis_core.site_api)": [[6, "pydis_core.site_api.APIClient"]], "responsecodeerror": [[6, "pydis_core.site_api.ResponseCodeError"]], "__init__() (apiclient method)": [[6, "pydis_core.site_api.APIClient.__init__"]], "__init__() (responsecodeerror method)": [[6, "pydis_core.site_api.ResponseCodeError.__init__"]], "__str__() (responsecodeerror method)": [[6, "pydis_core.site_api.ResponseCodeError.__str__"]], "close() (apiclient method)": [[6, "pydis_core.site_api.APIClient.close"]], "delete() (apiclient method)": [[6, "pydis_core.site_api.APIClient.delete"]], "get() (apiclient method)": [[6, "pydis_core.site_api.APIClient.get"]], "maybe_raise_for_status() (apiclient static method)": [[6, "pydis_core.site_api.APIClient.maybe_raise_for_status"]], "patch() (apiclient method)": [[6, "pydis_core.site_api.APIClient.patch"]], "post() (apiclient method)": [[6, "pydis_core.site_api.APIClient.post"]], "put() (apiclient method)": [[6, "pydis_core.site_api.APIClient.put"]], "pydis_core.site_api": [[6, "module-pydis_core.site_api"]], "request() (apiclient method)": [[6, "pydis_core.site_api.APIClient.request"]], "apply_monkey_patches() (in module pydis_core.utils)": [[7, "pydis_core.utils.apply_monkey_patches"]], "pydis_core.utils": [[7, "module-pydis_core.utils"]], "unqualify() (in module pydis_core.utils)": [[7, "pydis_core.utils.unqualify"]], "asynccache (class in pydis_core.utils.caching)": [[8, "pydis_core.utils.caching.AsyncCache"]], "__call__() (asynccache method)": [[8, "pydis_core.utils.caching.AsyncCache.__call__"]], "__init__() (asynccache method)": [[8, "pydis_core.utils.caching.AsyncCache.__init__"]], "clear() (asynccache method)": [[8, "pydis_core.utils.caching.AsyncCache.clear"]], "pydis_core.utils.caching": [[8, "module-pydis_core.utils.caching"]], "get_or_fetch_channel() (in module pydis_core.utils.channel)": [[9, "pydis_core.utils.channel.get_or_fetch_channel"]], "is_in_category() (in module pydis_core.utils.channel)": [[9, "pydis_core.utils.channel.is_in_category"]], "pydis_core.utils.channel": [[9, "module-pydis_core.utils.channel"]], "clean_text_or_reply() (in module pydis_core.utils.commands)": [[10, "pydis_core.utils.commands.clean_text_or_reply"]], "pydis_core.utils.commands": [[10, "module-pydis_core.utils.commands"]], "commandoncooldown": [[11, "pydis_core.utils.cooldown.CommandOnCooldown"]], "p (in module pydis_core.utils.cooldown)": [[11, "pydis_core.utils.cooldown.P"]], "r (class in pydis_core.utils.cooldown)": [[11, "pydis_core.utils.cooldown.R"]], "__init__() (commandoncooldown method)": [[11, "pydis_core.utils.cooldown.CommandOnCooldown.__init__"]], "block_duplicate_invocations() (in module pydis_core.utils.cooldown)": [[11, "pydis_core.utils.cooldown.block_duplicate_invocations"]], "call_without_cooldown() (commandoncooldown method)": [[11, "pydis_core.utils.cooldown.CommandOnCooldown.call_without_cooldown"]], "pydis_core.utils.cooldown": [[11, "module-pydis_core.utils.cooldown"]], "handle_forbidden_from_block() (in module pydis_core.utils.error_handling)": [[12, "pydis_core.utils.error_handling.handle_forbidden_from_block"]], "pydis_core.utils.error_handling": [[12, "module-pydis_core.utils.error_handling"]], "globalnameconflicterror": [[13, "pydis_core.utils.function.GlobalNameConflictError"]], "command_wraps() (in module pydis_core.utils.function)": [[13, "pydis_core.utils.function.command_wraps"]], "pydis_core.utils.function": [[13, "module-pydis_core.utils.function"]], "update_wrapper_globals() (in module pydis_core.utils.function)": [[13, "pydis_core.utils.function.update_wrapper_globals"]], "deletemessagebutton (class in pydis_core.utils.interactions)": [[14, "pydis_core.utils.interactions.DeleteMessageButton"]], "viewwithuserandrolecheck (class in pydis_core.utils.interactions)": [[14, "pydis_core.utils.interactions.ViewWithUserAndRoleCheck"]], "__init__() (deletemessagebutton method)": [[14, "pydis_core.utils.interactions.DeleteMessageButton.__init__"]], "__init__() (viewwithuserandrolecheck method)": [[14, "pydis_core.utils.interactions.ViewWithUserAndRoleCheck.__init__"]], "callback() (deletemessagebutton method)": [[14, "pydis_core.utils.interactions.DeleteMessageButton.callback"]], "interaction_check() (viewwithuserandrolecheck method)": [[14, "pydis_core.utils.interactions.ViewWithUserAndRoleCheck.interaction_check"]], "on_timeout() (viewwithuserandrolecheck method)": [[14, "pydis_core.utils.interactions.ViewWithUserAndRoleCheck.on_timeout"]], "pydis_core.utils.interactions": [[14, "module-pydis_core.utils.interactions"]], "customlogger (class in pydis_core.utils.logging)": [[15, "pydis_core.utils.logging.CustomLogger"]], "get_logger() (in module pydis_core.utils.logging)": [[15, "pydis_core.utils.logging.get_logger"]], "pydis_core.utils.logging": [[15, "module-pydis_core.utils.logging"]], "trace() (customlogger method)": [[15, "pydis_core.utils.logging.CustomLogger.trace"]], "get_or_fetch_member() (in module pydis_core.utils.members)": [[16, "pydis_core.utils.members.get_or_fetch_member"]], "handle_role_change() (in module pydis_core.utils.members)": [[16, "pydis_core.utils.members.handle_role_change"]], "pydis_core.utils.members": [[16, "module-pydis_core.utils.members"]], "max_paste_size (in module pydis_core.utils.paste_service)": [[17, "pydis_core.utils.paste_service.MAX_PASTE_SIZE"]], "pasteresponse (class in pydis_core.utils.paste_service)": [[17, "pydis_core.utils.paste_service.PasteResponse"]], "pastetoolongerror": [[17, "pydis_core.utils.paste_service.PasteTooLongError"]], "pasteuploaderror": [[17, "pydis_core.utils.paste_service.PasteUploadError"]], "pydis_core.utils.paste_service": [[17, "module-pydis_core.utils.paste_service"]], "send_to_paste_service() (in module pydis_core.utils.paste_service)": [[17, "pydis_core.utils.paste_service.send_to_paste_service"]], "discord_invite (in module pydis_core.utils.regex)": [[18, "pydis_core.utils.regex.DISCORD_INVITE"]], "formatted_code_regex (in module pydis_core.utils.regex)": [[18, "pydis_core.utils.regex.FORMATTED_CODE_REGEX"]], "raw_code_regex (in module pydis_core.utils.regex)": [[18, "pydis_core.utils.regex.RAW_CODE_REGEX"]], "pydis_core.utils.regex": [[18, "module-pydis_core.utils.regex"]], "scheduler (class in pydis_core.utils.scheduling)": [[19, "pydis_core.utils.scheduling.Scheduler"]], "__contains__() (scheduler method)": [[19, "pydis_core.utils.scheduling.Scheduler.__contains__"]], "__init__() (scheduler method)": [[19, "pydis_core.utils.scheduling.Scheduler.__init__"]], "cancel() (scheduler method)": [[19, "pydis_core.utils.scheduling.Scheduler.cancel"]], "cancel_all() (scheduler method)": [[19, "pydis_core.utils.scheduling.Scheduler.cancel_all"]], "create_task() (in module pydis_core.utils.scheduling)": [[19, "pydis_core.utils.scheduling.create_task"]], "pydis_core.utils.scheduling": [[19, "module-pydis_core.utils.scheduling"]], "schedule() (scheduler method)": [[19, "pydis_core.utils.scheduling.Scheduler.schedule"]], "schedule_at() (scheduler method)": [[19, "pydis_core.utils.scheduling.Scheduler.schedule_at"]], "schedule_later() (scheduler method)": [[19, "pydis_core.utils.scheduling.Scheduler.schedule_later"]]}})
\ No newline at end of file
diff --git a/main/versions.html b/main/versions.html
index 16c3147d..2fb19c14 100644
--- a/main/versions.html
+++ b/main/versions.html
@@ -210,6 +210,10 @@
                         main
                     
                 
+
- 
+                        v9.7.0
+                    +
- 
                         v9.6.0
                     @@ -393,6 +397,12 @@
                         - latest
                     
                 
+
- 
+                        v9.7.0
+                        
+                        
+                    +
- 
                         v9.6.0
                         
-- 
cgit v1.2.3