【问题标题】:How do you stop a double ups in an if statement?如何在 if 语句中停止双倍加倍?
【发布时间】:2020-11-10 18:23:05
【问题描述】:

我创建了一个机器人,当使用 ?give {arg} 命令时,将输出 {arg} has been given!。但是,我添加了一些特定的食物,它们会输出不同的消息(例如,拉面会输出拉面的图像),但是,因为它在技术上仍然是一个 arg,所以机器人会输出这两条消息,我该如何编码,以便如果arg 是特定食物之一,机器人只会输出该特定消息?

我目前的代码:

@client.command()
async def give(ctx, arg, member: discord.Member = None, case_insensitive=True):
    if arg == 'lumpia':
        if member:
            username = ctx.message.author.display_name
            name = member.display_name
            embed = discord.Embed(title=(f'{username} has given lumpia to {name}!'), description =('{|__|}\n( • . •)\n/ >????' ), color=0x83B5E3)
            embed.set_image(url='https://images.summitmedia-digital.com/yummyph/images/2019/10/26/porkandshrimplumpiarecipe2.jpg')

        else:
            embed = discord.Embed(title=('Lumpia has been given!'), description=('{|__|}\n( • . •)\n/ >????' ), color=0x83B5E3)
            embed.set_image(url = 'https://images.summitmedia-digital.com/yummyph/images/2019/10/26/porkandshrimplumpiarecipe2.jpg')
        await ctx.send(embed=embed)
    if arg == 'ramen':
        if member:
            username = ctx.message.author.display_name
            name = member.display_name
            embed = discord.Embed(title=(f'{username} has given a bowl of ramen to {name}!'), description=('{|__|}\n( • . •)\n/ >????'), color=0x83B5E3)
            embed.set_image(url ='https://www.theflavorbender.com/wp-content/uploads/2019/01/Easy-Chicken-Ramen-Featured-500x375.jpg')
        else:
            embed = discord.Embed(title=(f'a bowel of ramen has been given!'), description=('{|__|}\n( • . •)\n/ >????'), color=0x83B5E3)
            embed.set_image(url ='https://www.theflavorbender.com/wp-content/uploads/2019/01/Easy-Chicken-Ramen-Featured-500x375.jpg')
        await ctx.send(embed=embed)
    if arg != 'ramen' or 'prawn' or 'lumpia'or 'bubble-tea' or 'fish' or 'prawn' or 'iced-coffee' or 'americano' or 'latte' or 'ice-cream' or 'cheescake' or 'fast-food-meal' or 'burger' or 'fries' or 'ramen':
        if member:
            username = ctx.message.author.display_name
            name = member.display_name
            embed = discord.Embed(title=(f'{username} has given (a) {arg} to {name}!'), description='uwu', color=0x83B5E3)
        else:
            embed = discord.Embed(title=(f'(A) {arg} has been given!'), description='uwu', color=0x83B5E3)

    await ctx.send(embed=embed)

【问题讨论】:

  • 这能回答你的问题吗? Comparing a string to multiple items in Python
  • arg != 'ramen' or 'prawn' 表示If arg is different than "ramen" or the string "prawn" is not empty(并且“虾”总是不为空)。查看上面的链接问题如何正确完成与多个字符串的比较

标签: python discord bots discord.py discord.py-rewrite


【解决方案1】:

您可以使用if/elif 链,以便评估从第一场比赛开始:

if arg == 'lumpia':
    # do something
elif arg == 'ramen':
    # do something
else:
    # general case

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-28
    • 2012-10-31
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 2013-03-30
    相关资源
    最近更新 更多