不和谐的py 'int not callable'



天哪,我又来了一个伤害系统…所以我对不和谐机器人编码很陌生但我有上面和下面的所有东西,是命令不好。上面说这两条线有巨大的箭头指向它们是罪魁祸首,如果你看到这个,Aditya Tomar。是的,我在做另一个,不,我不知道为什么…我输入的命令是?fight,后面跟着其他15个数字。

discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: 'int' object is not callable是具体的错误。

###Le epic variables###
WWT = 0
AAS = 0
ASTR = 0
ASPD = 0
DAS = 0
AL = 0
DL = 0
TB = 0
DR = 0
AR = 0
DP = 0
SB = 0
DD = 0
ASK = 0
WC = 0
CC = 0
DoubleAtk = 1
critatk = 1

###Le epic command###
@client.command()
async def fight(ctx, WWT : int, ASTR : int, ASPD : int, DAS : int, AL : int, DL : int, TB : int, DR : int, AR : int, DP : int, SB : int, DD : int, ASK : int, WC : int, CC : int):
global AAS
global critatk
if WWT > ASTR():                    <---------------------- this thing
AAS = ASPD - (WWT - ASTR)
else:
AAS = ASPD
global DoubleAtk
if (AAS - DAS) > 4():                 <-------------------- and this thing
DoubleAtk = 2
crit_rate = ((WC + ASK) / 2) + SB + CC
def did_crit():
random.randint(1, 100)
DP = TB + DR + SB
Avoid = AAS + (AL / 2) + TB
for i in range(DoubleAtk):
did_crit()
if did_crit == crit_rate():
critatk = 3
damage = (ASTR - DD) * critatk
await ctx.send(damage)

从我所看到的,我认为你不需要在这些if语句中包括ASTR4之后的括号。试一下:

if WWT > ASTR:                  
AAS = ASPD - (WWT - ASTR)
else:
AAS = ASPD
global DoubleAtk
if (AAS - DAS) > 4:       
DoubleAtk = 2

你试图调用一些参数,如果他们是函数,你的错误基本上是告诉你,你不能调用参数,例如在你的if WWT > ASTR():if (AAS - DAS) > 4():你调用整数作为函数,这是不可调用的。

修改后的代码应该是这样的:

###Le epic variables###
WWT = 0
AAS = 0
ASTR = 0
ASPD = 0
DAS = 0
AL = 0
DL = 0
TB = 0
DR = 0
AR = 0
DP = 0
SB = 0
DD = 0
ASK = 0
WC = 0
CC = 0
DoubleAtk = 1
critatk = 1

###Le epic command###
@client.command()
async def fight(ctx, WWT : int, ASTR : int, ASPD : int, DAS : int, AL : int, DL : int, TB : int, DR : int, AR : int, DP : int, SB : int, DD : int, ASK : int, WC : int, CC : int):
global AAS
global critatk
if WWT > ASTR:                    
AAS = ASPD - (WWT - ASTR)
else:
AAS = ASPD
global DoubleAtk
if (AAS - DAS) > 4:   
DoubleAtk = 2
crit_rate = ((WC + ASK) / 2) + SB + CC
def did_crit():
random.randint(1, 100)
DP = TB + DR + SB
Avoid = AAS + (AL / 2) + TB
for i in range(DoubleAtk):
did_crit()
if did_crit() == crit_rate:
critatk = 3
damage = (ASTR - DD) * critatk
await ctx.send(damage)

注意did_crit()实际上需要作为一个函数调用(因为它是),而crit_rate不需要,因为它是一个整数。

相关内容