Using AutoShardedClient with a loaded extension causes the application to dispatch (not crash on, fortunately) an error in async-extension-loader. For typical extensions with slash commands, this is not a big issue - commands inside the extension still load. However, in the case of the builtin jurigged extension, this issue causes the extension to fail to hot-reload the bot code. More generally, the client is unable to call extensions' async_start() methods.
Steps to Reproduce
Create and run a bot with AutoShardedClient and an extension. The MRC below uses the builtin jurigged.
The slash command is not needed to reproduce the error dispatch, but it does show the consequence of the error. In the case of using jurigged, while the bot is running, try calling the main command before and after editing the content of ctx.send().
Expected Results
Extension(s) load without errors. In the case of the jurigged extension, the bot is able to be hot-reload, for example from editing the contents of ctx.send().
Minimal Reproducible Code
from interactions import AutoShardedClient, Intents
bot = AutoShardedClient(intents=Intents.DEFAULT)
@slash_command(name="main", description="Main command")
async def main_cmd(ctx):
await ctx.send("Sent from main")
bot.load_extension("interactions.ext.jurigged")
bot.start("token")
Traceback
Ignoring exception in async-extension-loader:
Traceback (most recent call last):
await asyncio.gather(*self.async_startup_tasks)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "...\Python\Python311\Lib\asyncio\tasks.py", line 826, in gather
if arg not in arg_to_fut:
^^^^^^^^^^^^^^^^^^^^^
TypeError: unhashable type: 'dict'
Checklist
[X] I have searched the open issues for duplicates.
[X] I have shown the entire traceback, if possible.
[X] I have removed my token from display, if visible.
[X] I have attempted to debug this myself, and I believe this issue is with the library
My own investigation shows that AutoShardedClient unpacks its inherited attribute async_startup_tasks the wrong way compared to how Client does. A pull request will be made to fix this issue.
Library Version
unstable @ fecf3d31
Describe the Bug
Using
AutoShardedClient
with a loaded extension causes the application to dispatch (not crash on, fortunately) an error inasync-extension-loader
. For typical extensions with slash commands, this is not a big issue - commands inside the extension still load. However, in the case of the builtinjurigged
extension, this issue causes the extension to fail to hot-reload the bot code. More generally, the client is unable to call extensions'async_start()
methods.Steps to Reproduce
Create and run a bot with
AutoShardedClient
and an extension. The MRC below uses the builtinjurigged
.The slash command is not needed to reproduce the error dispatch, but it does show the consequence of the error. In the case of using
jurigged
, while the bot is running, try calling the main command before and after editing the content ofctx.send()
.Expected Results
Extension(s) load without errors. In the case of the
jurigged
extension, the bot is able to be hot-reload, for example from editing the contents ofctx.send()
.Minimal Reproducible Code
Traceback
Checklist
Additional Information
This issue was first raised in the library Discord server in a thread: https://discord.com/channels/789032594456576001/1242911095753019422
My own investigation shows that
AutoShardedClient
unpacks its inherited attributeasync_startup_tasks
the wrong way compared to howClient
does. A pull request will be made to fix this issue.