首页 > 解决方案 > python中的Discord bot,检查命令是否为空

问题描述

我有一个简单的问题,我想向机器人添加一个命令,如果用户使用该命令回复消息,机器人会获取该消息以及用户回复的消息的作者并将其保存到数据库中,这个很容易完成。现在我还想向这个函数添加一个条件,如果用户使用相同的命令而不回复,而是编写消息并标记另一个用户,它将消息和标记的用户存储在一个变量中以用于数据库。如果用户在没有任何消息且仅标记用户的情况下使用该命令,则它会告诉用户他们需要添加消息,或者相反,他们需要标记用户。

@bot.command()
async def commandme(ctx,*member=None,message=None):
   if message: 
        if member: 
             #here I execute the command using message and member
   else
     await ctx.send("Please either reply using the command or write a message while tagging a user using teh command")

这是我到目前为止的想法,但它似乎不起作用,因为在测试时查看会发生什么,即使我使用相同的方法为其他命令标记用户,消息总是返回 none,并且成员只返回对象。我在文档中遗漏了什么吗?

标签: pythondiscord

解决方案


你的问题有点不清楚。但我会在阅读时尝试回答。

我认为该模块不能很好地与您定义参数的方式配合使用。应该是commandme(ctx, member=None, *message)。因为您希望将message其收集在一个元组中。

的调用者commandme必须像这样传递参数ctx, Member, message=Message。那就是将“消息”参数作为关键字传递并且只有 1 个对象,而该member参数将收集元组中的所有内容。


推荐阅读