【问题标题】:Sending a message when prefix was send discord.py发送前缀时发送消息 discord.py
【发布时间】:2021-05-02 10:21:00
【问题描述】:

我正在制作一个前缀为“!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 后面有东西,我需要一个解决方案来删除 !c 嵌入

问候, 赤塔

【问题讨论】:

    标签: discord bots discord.py


    【解决方案1】:

    您可以使用 on_message 事件侦听器进行检查。

    @client.listen('on_message')
    async def foo(message):
       await client.wait_until_ready()
       ctx = await client.get_context(message)
       if message.content == '!c':
           await ctx.send(embed=embed) # send your embed here
           return #makes sure that we dont reply twice to `!c`
    

    我们使用client.wait_until_ready(),这样客户端在连接之前不会响应消息。

    您可以选择添加

    if message.author.bot:
        return
    

    确保我们不会回复机器人。

    资源: on_message wait_until_ready

    【讨论】:

    • 是的,我改进了答案以包含您的建议,您可以删除旧组或仅传递组功能
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-08
      • 1970-01-01
      • 2020-11-10
      • 2020-10-31
      • 2017-08-15
      • 2021-07-18
      • 2021-10-15
      • 1970-01-01
      相关资源
      最近更新 更多