【问题标题】:How can I make a message from discord into an input on the command prompt on discord.py?如何将来自 discord 的消息输入到 discord.py 的命令提示符中?
【发布时间】:2020-09-13 18:32:22
【问题描述】:

我正在尝试让机器人使用命令用户的不和谐消息作为输入,但我似乎无法弄清楚。我仍然坚持使用命令提示符版本,(请注意,我是这方面的初学者。)

Rawdamage=int(input("input damage dealt here. "))
Defense=int(input("input defense of victim here. "))
HP=int(input("input HP of victim."))
Pierce=int(input("input pierce amount here. "))
n = random.randint(1,4)
print(n)
var6= n
var1= Rawdamage
var2= Defense
var3= HP
var4= Pierce
v= 4
V= 3
if (var6==1):
    (var1 - var2 + var4)
    var5= (var1 * v // V)
    print ("damage dealt:")
    print(var5)
    print("hp left:")
    print(var3 - var5)
else:
    var5= (var1 - var2 + var4)
    print("damage dealt:")
    print(var5)
    print("hp left:")
    print(var3 - var5)

【问题讨论】:

    标签: input bots discord.py


    【解决方案1】:

    使用多个输入Docs 发出信号命令并使用如下数据。

    你可以这样称呼它$game 4 8 21 3,其中的顺序是这样的:

    • 原始伤害
    • 防御
    • 马力
    • 刺穿
    import discord
    from discord.ext import commands
    
    bot = commands.Bot(command_prefix="$")
    
    @bot.command()
    async def game(ctx, rawdamage: int, defense: int, hp: int, pierce: int):
        n = random.randint(1, 4)
        embed = discord.Embed(title='Fight')
        if n == rawdamage:
            damage_done = rawdamage * 4//3
            embed.add_field(name='Damage dealt', value=damage_done)
            embed.add_field(name='HP left', value=hp-damage_done)
    
        else:
            damage_done = rawdamage-defense+pierce
            embed.add_field(name='Damage dealt', value=damage_done)
            embed.add_field(name='HP left', value=hp-damage_done)
    
        await ctx.send(embed=embed)
    
    bot.run('TOKEN HERE')
    

    注意:请确保数学

    【讨论】:

    • 这给我造成了混乱:我遇到了一个错误循环,他们希望在“来自 discord.ext 导入命令”处缩进,但是当我添加一个时,它告诉我那里有一个意外的缩进...
    • 请按原样尝试,只需添加令牌并尝试。
    • 等等,没关系,那只是我以前的不幸,谢谢!
    【解决方案2】:

    这不是永久修复,当我记得它时,我会编辑它以获得更好的解决方案,我以前做过类似的事情。

    但现在你只能使用命令

    它们的外观如下:

    from discord.ext import commands
    
    client = commands.Bot(command_prefix="Your chosen command prefix")
    token = 'Your token'
    
    
    @client.command()
    async def Rawdamage(ctx, *, rawdamage=None):
        var1 = rawdamage
    
    @client.command()
    async def Defense(ctx, *, defense=None):
        var2 = defense
    
    @client.command()
    async def HP(ctx, *, hp=None):
        var3 = hp
    
    @client.command()
    async def Pierce(ctx, *, pierce=None):
        var4 = pierce
    
    @client.command()
    async def N(ctx, *, n=None):
        var5 = n
        
        
    # Your damage system here #
    
    
    
    client.run(token)
    

    这样做的目的是,每次以您的命令前缀开始发送消息时,在这些命令之一的前缀之后,它下面的代码就会运行。

    你看还有几个参数。 (ctx, *, rawdamage=None) ctx 表示 ctx。而 * 表示后面的任何内容都将存储在 rawdamage 变量中。

    因此,如果我在 discord 中执行 /Rawdamage 10,您的机器人会将 10 放入 var1

    【讨论】:

    • 虽然现在我认为如果你做的游戏对游戏有好处,那么并不是所有的东西都会被存储为输入
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 2023-03-31
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    相关资源
    最近更新 更多