Discord.py 在我从 Nextcord 切换到 Discord v2 后,命令将无法工作

Discord.py commands wont work after i switched from Nextcord to Discord v2

在使用 nextcord 切换 1 或 2 个月后,我刚刚切换到 Discord.py v2。

我遇到了一个命令无效的问题 就像根本没有命令

我将所有内容从“nextcord”更改为“discord”,甚至将 cogs 中的设置更改为新的异步版本

事件有效,但命令本身无效

我已经尝试了我所知道的一切,但仍然没有解决它 我试着查看 discord 文档,但仍然找不到解决方案

我当前的代码:

import discord
from discord.ext import commands
from discord.ext.commands.core import has_permissions

import asyncio
import os


intents = discord.Intents.default()
intents.members = True

bot = commands.Bot(command_prefix='+', intents=intents)



##COGS


@bot.event
async def on_ready():
    await asyncio.sleep(1)
    print(f'We have logged in as {bot.user}')

    await bot.change_presence(activity=discord.Game(name="in the Mountains"))

@bot.command()
@has_permissions(administrator = True)
async def load(ctx, arg, extension):
    if ctx.author.id == 498839148904579092:
        bot.load_extension(f"{arg}.{extension}")
        embed = discord.Embed(description=f"{extension} module loaded!", colour=discord.Colour.dark_green())
        await ctx.send(embed = embed)
        print(f"{extension} loaded")

@bot.command()
@has_permissions(administrator = True)
async def unload(ctx, arg, extension):
    if ctx.author.id == 498839148904579092:
        bot.unload_extension(f"{arg}.{extension}")
        embed = discord.Embed(description=f"{extension} module unloaded!", colour=discord.Colour.dark_green())
        await ctx.send(embed = embed)
        print(f"{extension} unloaded")
    
@bot.command()
@has_permissions(administrator = True)
async def reload(ctx, arg, extension):
    if ctx.author.id == 498839148904579092:
        bot.reload_extension(f"{arg}.{extension}")
        embed = discord.Embed(description=f"{extension} module reloaded!", colour=discord.Colour.dark_green())
        await ctx.send(embed = embed)
        print(f"{extension} reloaded")

@load.error
async def alreadyloaded(ctx, error):
    if isinstance(error, commands.CommandInvokeError):
        embed = discord.Embed(colour=discord.Colour.dark_red())
        embed.set_author(icon_url="https://cdn.discordapp.com/attachments/883349890921545748/927946906271887430/W0019f8UlvqD3dDC5.png", name="Command Invoke Error! [LOAD]")
        embed.set_thumbnail(url="https://cdn.discordapp.com/attachments/883349890921545748/927946906271887430/W0019f8UlvqD3dDC5.png")
        embed.add_field(name="commands.CommandInvokeError", value=error, inline=True)
        embed.add_field(name="Maybe...", value="The Extension is Non-Exsistant or cannot be Loaded", inline=True)
        embed.set_footer(text="get a list of Modules with [+modules]!")
        await ctx.send(embed = embed, delete_after = 10)
    elif isinstance(error, commands.MissingPermissions):
        await ctx.message.delete()
        await ctx.send(f"{ctx.author.mention}, that Command is Admin only!", delete_after = 3)
        return

@unload.error
async def alreadyunloaded(ctx, error):
    if isinstance(error, commands.CommandInvokeError):
        embed = discord.Embed(colour=discord.Colour.dark_red())
        embed.set_author(icon_url="https://cdn.discordapp.com/attachments/883349890921545748/927946906271887430/W0019f8UlvqD3dDC5.png", name="Command Invoke Error! [UNLOAD]")
        embed.set_thumbnail(url="https://cdn.discordapp.com/attachments/883349890921545748/927946906271887430/W0019f8UlvqD3dDC5.png")
        embed.add_field(name="commands.CommandInvokeError", value=error, inline=True)
        embed.add_field(name="Maybe...", value="The Extension is Non-Exsistant or cannot be Unloaded", inline=True)
        embed.set_footer(text="get a list of Modules with [+modules]!")
        await ctx.send(embed = embed, delete_after = 10)
        return
    elif isinstance(error, commands.MissingPermissions):
        await ctx.message.delete()
        await ctx.send(f"{ctx.author.mention}, that Command is Admin only!", delete_after = 3)
        return

@bot.command()
async def online(ctx):
    print("1")
    await ctx.channel.send("online")
    print("hello")

async def main():
    async with bot:
        #await load_extensions()
        await bot.start("bot auth code")

asyncio.run(main())

Discord.py v2.0 已迁移到 api v10,随之而来的是引入了默认禁用的 Intents.message_content。 这意味着您需要在代码和面板中明确启用它,位于 https://discord.com/developers/applications.

intents = discord.Intents.default()
intents.members = True
intents.message_content = True

bot = commands.Bot(command_prefix='+', intents=intents)