async def on_message(message):
if message.content.startswith('.info'):
embedVar = discord.Embed(title="Prices", description="T", color=246482)
embedVar.add_field(name="e", value="e", inline=False)
embedVar.add_field(name="e", value="e", inline=False)
embedVar.add_field(name="r", value="r", inline=False)
embedVar.add_field(name="r", value="r", inline=False)
await message.channel.send(embed=embedVar)
@client.event
async def on_message(message):
if message.content.startswith('.info1'):
embedVar = discord.Embed(title="Prices", description="T", color=246482)
embedVar.add_field(name="e", value="e", inline=False)
embedVar.add_field(name="e", value="e", inline=False)
embedVar.add_field(name="r", value="r", inline=False)
embedVar.add_field(name="r", value="r", inline=False)
await message.channel.send(embed=embedVar)
这是我的代码,每次我尝试创建一个新命令时,“.info”不起作用,但“.info1”起作用。有什么办法可以有更多的命令?
问题是,on_message
当你只能拥有一个功能时,你有两个功能。这意味着当您定义第二个on_message
函数时,您将覆盖第一个函数,这会导致第一个on_message
函数中的任何代码都不会运行。要解决此问题,您需要将两段代码放入一个on_message
函数中(无论如何这更简单!):
@client.event
async def on_message(message):
if message.content.startswith('.info'):
embedVar = discord.Embed(title="Prices", description="T", color=246482)
embedVar.add_field(name="e", value="e", inline=False)
embedVar.add_field(name="e", value="e", inline=False)
embedVar.add_field(name="r", value="r", inline=False)
embedVar.add_field(name="r", value="r", inline=False)
await message.channel.send(embed=embedVar)
elif message.content.startswith('.info1'):
embedVar = discord.Embed(title="Prices", description="T", color=246482)
embedVar.add_field(name="e", value="e", inline=False)
embedVar.add_field(name="e", value="e", inline=False)
embedVar.add_field(name="r", value="r", inline=False)
embedVar.add_field(name="r", value="r", inline=False)
await message.channel.send(embed=embedVar)
但是,您可以清楚地看到这里肯定存在重复。要解决这个问题,只需使用or
(甚至更简单!!!):
@client.event
async def on_message(message):
if message.content.startswith('.info') or message.content.startswith('.info1'):
embedVar = discord.Embed(title="Prices", description="T", color=246482)
embedVar.add_field(name="e", value="e", inline=False)
embedVar.add_field(name="e", value="e", inline=False)
embedVar.add_field(name="r", value="r", inline=False)
embedVar.add_field(name="r", value="r", inline=False)
await message.channel.send(embed=embedVar)
但是,如果这只是虚拟代码并且您需要第二个elif
语句,那么您可以使用第一个示例。否则,要么使用单独的函数,要么使用第二个示例。(使用DRY 编码原则!)
另外,感谢@Bagle 对此的原始评论!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句