Python 我目前正在学习制作discord机器人。我想创建一个switch语句

Python 我目前正在学习制作discord机器人。我想创建一个switch语句,python,discord.py,Python,Discord.py,我想做的是做switch语句,因为许多专业人士说这比做if语句要好,因为Python没有switch-case语句。无论如何,这在您的情况下是不必要的,因为您的代码已经可读,并且开关大小写将不适用,因为您正在使用函数(.startswith())。Switch case语句仅在特定情况下“更好”。考虑到您只检查了两个条件,这种方法已经是最好的了 但是,如果要增加条件的数量,那么应该通过将字符串放在数据结构(如字典)中进行重构,这样就不会重复代码 命令={ “$Hello”:“Hello!编写“$

我想做的是做switch语句,因为许多专业人士说这比做if语句要好,因为Python没有switch-case语句。无论如何,这在您的情况下是不必要的,因为您的代码已经可读,并且开关大小写将不适用,因为您正在使用函数(
.startswith()
)。Switch case语句仅在特定情况下“更好”。考虑到您只检查了两个条件,这种方法已经是最好的了

但是,如果要增加条件的数量,那么应该通过将字符串放在数据结构(如字典)中进行重构,这样就不会重复代码

命令={
“$Hello”:“Hello!编写“$Help”以查找有关Noriku机器人的更多信息”,
“$Help”:“您好!noriku机器人仍处于测试阶段……仅有的5个命令是$Hello、$Help、$Test1、$Test2和$Test3”,
“$Test1”:“这是Test1”,
“$Test2”:“这是Test2”,
“$Test3”:“这是Test3”
}
...
@客户端事件
异步def on_消息(消息):
如果message.author==client.user:
返回
对于键,commands.items()中的值:
如果message.content.startswith(键):
等待消息.channel.send(值)
这样,您就不必为所执行的每个命令生成额外的if语句


一旦您对这些有点熟悉,您可能会想查看。

只是为了添加此结构模式匹配(基本上是切换),已在3.10版中引入。哦,新功能!谢谢你提供的信息。对于OP,我仍然不认为match case适用于您的用例。是否有帮助?
import os
import discord

client = discord.Client()

@client.event
async def on_ready():
  print('we have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
  if message.author == client.user: 
    return

  if message.content.startswith('$Hello'):
    await message.channel.send('Hello! write "$Help" to find more about the Noriku bot ')
  
  if message.content.startswith('$Help'):
    await message.channel.send('Hi again! The noriku bot is still in beta stages...the only 2 commands are $Hello and $Help')
  

client.run(os.getenv('token'))