几年前,我经常收到一些代码的错误,需要修复。那时,我认为注解没有用,所以我没有做任何注解。现在,我收到了来自那段代码的错误,我需要帮助。为了方便,我使用python为朋友的服务器做了一个discord bot。下面是代码:
def calculator(Input_List):
try:
global numvar1
global numvar2
global signal
numvar1 = ""
numvar2 = ""
if "+" in Input_List:
signpos = int(Input_List.index("+"))
for i in range(0, signpos):
numvar1 = numvar1 + Input_List[i]
for i in range(signpos + 1, len(Input_List)):
numvar2 = numvar2 + Input_List[i]
return int(numvar1) + int(numvar2)
elif "-" in Input_List:
signpos = int(Input_List.index("-"))
for i in range(0, signpos):
numvar1 = numvar1 + Input_List[i]
for i in range(signpos + 1, len(Input_List)):
numvar2 = numvar2 + Input_List[i]
return int(numvar1) - int(numvar2)
elif "/" in Input_List:
signpos = int(Input_List.index("/"))
for i in range(0, signpos):
numvar1 = numvar1 + Input_List[i]
for i in range(signpos + 1, len(Input_List)):
numvar2 = numvar2 + Input_List[i]
return int(numvar1) / int(numvar2)
elif "*" in Input_List:
signpos = int(Input_List.index("*"))
for i in range(0, signpos):
numvar1 = numvar1 + Input_List[i]
for i in range(signpos + 1, len(Input_List)):
numvar2 = numvar2 + Input_List[i]
return int(numvar1) * int(numvar2)
equationlist.clear()
except Exception as e:
print(e)
return "No Answer, If you did a valid calculation, please contact the owner of this bot at Mintysharky#1496 and send him the dev stuff | DEV STUFF: " + str(
e)
class CalculatorButton(Button):
try:
global equation
equation = "0"
def __init__(self, number, style=discord.ButtonStyle.gray):
super().__init__(label=number, style=style)
async def callback(self, interaction):
global equation
if not self.label == "Done":
equationlist.append(str(self.label))
for i in equationlist:
equation += str(i)
await interaction.message.edit(content=equation)
equation = ""
if self.label == "Clear":
equationlist.clear()
await interaction.message.edit(content=equation)
if self.label == "Done":
print(equationlist)
CalculatorButton.callback()
await interaction.message.edit(content=calculator(equationlist))
except:
pass
@bot.command(description="Calculates something (+,-,/,*) One instance at a time[BETA]")
async def calculate(ctx):
calcbuttons = []
view = View()
for i in range(0, 10):
calcbuttons.append(CalculatorButton(i))
calcbuttons.append(CalculatorButton("+", discord.ButtonStyle.blurple))
calcbuttons.append(CalculatorButton("-", discord.ButtonStyle.blurple))
calcbuttons.append(CalculatorButton("/", discord.ButtonStyle.blurple))
calcbuttons.append(CalculatorButton("*", discord.ButtonStyle.blurple))
calcbuttons.append(CalculatorButton("Clear", discord.ButtonStyle.red))
calcbuttons.append(CalculatorButton("Done", discord.ButtonStyle.green))
for i in calcbuttons:
view.add_item(i)
await ctx.respond("0", view=view)
Token = os.environ['TOKEN']
bot.run(Token)
keep_alive()
我得到这个错误:
Ignoring exception in view <View timeout=180.0 children=16> for item <CalculatorButton style=<ButtonStyle.success: 3> url=None disabled=False label='Done' emoji=None row=None>:
Traceback (most recent call last):
File "/home/runner/roboticraft/venv/lib/python3.8/site-packages/discord/ui/view.py", line 414, in _scheduled_task
await item.callback(interaction)
File "main.py", line 123, in callback
CalculatorButton.callback()
TypeError: callback() missing 2 required positional arguments: 'self' and 'interaction'
请帮帮我。
1条答案
按热度按时间d5vmydt91#
它看起来很简单--调用一个需要两个参数的func函数,但不传入任何参数。
然后你叫道
在没有真正理解您的代码的情况下,我很快想到了更改:
致:
这可能足以解决你的问题。