Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';我不能在discord.py中使用这个石头剪刀之后的其他命令吗?_Discord_Discord.py_Discord.py Rewrite - Fatal编程技术网

为什么可以';我不能在discord.py中使用这个石头剪刀之后的其他命令吗?

为什么可以';我不能在discord.py中使用这个石头剪刀之后的其他命令吗?,discord,discord.py,discord.py-rewrite,Discord,Discord.py,Discord.py Rewrite,我正在编写一个Discord机器人,但每当我使用这个命令,rockpaperscissors命令,在游戏结束后,我就不能使用任何其他命令,如“帮助”。为什么会这样 elif message.content == ",rockpaperscissors": await message.channel.send("```\nRock Paper Scissors\n~~~~~~~~~~~~~~~~~~~~~\nSend your move in the format

我正在编写一个Discord机器人,但每当我使用这个命令,rockpaperscissors命令,在游戏结束后,我就不能使用任何其他命令,如“帮助”。为什么会这样

        elif message.content == ",rockpaperscissors":
        await message.channel.send("```\nRock Paper Scissors\n~~~~~~~~~~~~~~~~~~~~~\nSend your move in the format ,[move] e.g. ,rock\n```")
        @client.event
        async def on_message(message):
            _ = str(message.content).lower()[1::]
            computer = random.choice(RPS)
            await rockPaperScissorsChecker(message, _, computer)
            return

从您给出的代码中无法判断,但这里有几种可能的原因


场景#1
消息上有多个
事件

当使用事件时,您不需要编写多个事件-您可以使用
if
/
elif
语句来发挥您的优势。如果您选择有多个,那么脚本中最新定义的一个将是“活动”的一个

下面是如何在消息上的
中分离命令:

@client.event
异步def on_消息(消息):
如果message.author.bot:
返回
elif message.content.lower().startswith(“,rockpaperscissors”):
#这里是cmd的代码
elif message.content.lower().startswith(“,cmd2”):
#这里是第二个cmd代码
#等等等等。

场景#2
您在消息上使用命令装饰器和
,而不处理命令

重写(编写自己的)消息事件上的
时,需要调用
Bot.process\u commands()
,以使注册的命令正常工作。在幕后有一个默认的
on_message
事件,它已经完成了,但是因为您正在重写自己的,所以您需要添加它:

@client.event
异步def on_消息(消息):
等待客户端处理命令(消息)
#其余的on_消息代码

参考文献:

  • -“默认情况下,此协同程序在
    on_message()
    事件中调用。如果选择覆盖
    on_message()
    事件,则也应调用此协同程序。”
  • -命令装饰器

从您给出的代码中无法判断,但这里有几种可能的原因


场景#1
消息上有多个
事件

当使用事件时,您不需要编写多个事件-您可以使用
if
/
elif
语句来发挥您的优势。如果您选择有多个,那么脚本中最新定义的一个将是“活动”的一个

下面是如何在消息上的
中分离命令:

@client.event
异步def on_消息(消息):
如果message.author.bot:
返回
elif message.content.lower().startswith(“,rockpaperscissors”):
#这里是cmd的代码
elif message.content.lower().startswith(“,cmd2”):
#这里是第二个cmd代码
#等等等等。

场景#2
您在消息上使用命令装饰器和
,而不处理命令

重写(编写自己的)消息事件上的
时,需要调用
Bot.process\u commands()
,以使注册的命令正常工作。在幕后有一个默认的
on_message
事件,它已经完成了,但是因为您正在重写自己的,所以您需要添加它:

@client.event
异步def on_消息(消息):
等待客户端处理命令(消息)
#其余的on_消息代码

参考文献:

  • -“默认情况下,此协同程序在
    on_message()
    事件中调用。如果选择覆盖
    on_message()
    事件,则也应调用此协同程序。”
  • -命令装饰器