Unknown error in latest discord.py rewrite


I am trying to create a discord bot in the new version of discord.py (latest version). I have been following an old tutorial for how to use cogs, but then used the discord.py API in order to update it with intents, etc. I cannot seem to shake the error in my code once it starts up. The error is

  File "C:\Users\MyUsername\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\discord\ext\commands\bot.py", line 946, in _load_from_module_spec
    await setup(self)
TypeError: object NoneType can't be used in 'await' expression

Here is the code for my main.py file:

import discord
import os
from discord.ext import commands

# Create bot
client = commands.Bot(command_prefix=">", intents=discord.Intents.all())

# Load commands
async def load(ctx, extension):
    await client.load_extension(f"Cogs.{extension}")

# Unload commands
async def unload(ctx, extension):
    await client.unload_extension(f"Cogs.{extension}")

# On start
async def on_ready():
    # Import all commands on start
    for filename in os.listdir("./Cogs"):
        if filename.endswith(".py"):
            await client.load_extension(f"Cogs.{filename[:-3]}")

Client.run() excluded for obvious reasons, it is at the end though.

The only cog I have is this (Ping.py):

import discord
from discord.ext import commands
import time

class Ping(commands.Cog):
    def __init__(self, client):
        self.client = client

    async def on_ready(self):
        print("Bot is online")
        await self.client.change_presence(
            activity=discord.Game('SuperBot, >help for help')

    async def ping(self, ctx):
        embed = discord.Embed(
            description=f"I'm up! The bot latency is {self.client.latency}",
            text=time.strftime("%a : %H : %M")
        await ctx.channel.send(embed=embed)

def setup(client):

I have tried moving loading the cogs in the main file out of the on_ready func but that errors too. How can I resolve this error?

>Solution :

setup is async now.

Change it to this:

async def setup(client):
    await client.add_cog(Ping(client))

Read the changelog: https://discordpy.readthedocs.io/en/latest/migrating.html#migrating-2-0-commands-extension-cog-async

Leave a Reply Cancel reply