在前缀为send discord.py时发送消息

在前缀为send discord.py时发送消息,discord,bots,discord.py,Discord,Bots,Discord.py,我正在制作一个前缀为“!c”的不和谐机器人,但我希望如果有人发送“!c”,就会出现一个嵌入,因此我通过这样做来修复它: client = commands.Bot(command_prefix='!') client.remove_command("help") @client.group() async def c(ctx): YourEmbedCodeHere 我想添加一个命令“!c help”,它会发送相同的嵌入。我试着这样做: @c.group(invok

我正在制作一个前缀为“!c”的不和谐机器人,但我希望如果有人发送“!c”,就会出现一个嵌入,因此我通过这样做来修复它:

client = commands.Bot(command_prefix='!')
client.remove_command("help")

@client.group()
async def c(ctx):
    YourEmbedCodeHere
我想添加一个命令“!c help”,它会发送相同的嵌入。我试着这样做:

@c.group(invoke_without_command= True)
async def help(ctx):
   embed = discord.Embed(title="ChiBot", description="ChiBot by Chita! A very usefull moderation, level, invite and misc bot!", color=0x62e3f9)
   embed.add_field(name="Commands:", value="Do !help (command) to get help on that command!", inline=False)
   embed.add_field(name="Misc", value="!c help    !c randomimage    !c invite    !c echo", inline=False)
   embed.add_field(name="Moderation", value="!c ban    !c kick    !c warn    !c mute    !c unmute    !c warns      !c warnings", inline=False)
   embed.add_field(name="Levels", value="!c rank    !c dashboard   ", inline=False)
   embed.add_field(name="Invites", value="!c invites (help with setting it up)", inline=False)
   embed.set_footer(text="Created by Chita#8005")
   await ctx.send(embed=embed)
但当我尝试这样做时,它会发送双精度,因为“!c”仍然是同一嵌入的命令。我怎样才能使它只发送1个嵌入?我还想添加其他“!c”命令,所以我需要一个解决方案来删除!如果有什么东西在后面,请嵌入!c

问候,,
Chita

您可以使用on_消息事件侦听器来检查这一点

@client.listen('on_message')
异步def foo(消息):
等待客户端。等待,直到准备就绪()
ctx=等待客户端。获取上下文(消息)
如果message.content=='!c':
等待ctx.send(嵌入=嵌入)#将您的嵌入发送到此处
return#确保我们不会两次回复`!c`
我们正在使用
客户端。请等到\u ready()
,以便客户端在连接之前不响应消息

或者,您可以添加

if message.author.bot:
    return
确保我们不会回复机器人

资源:

您可以尝试将前缀保留为“!c”,并使用on_消息事件来侦听“!c”以发送嵌入。像这样的

@client.event
async def on_message(message):
    if message.content == "!c":
        #Your embed code here
    await client.process_commands(message)

我希望这可能会有所帮助。

是的,我改进了我的答案,加入了您的建议,您可以删除您的旧组或只是传递组功能