Discord 机器人 python 数学
Discord bot python math
我试图在我的 discord 机器人中制作一个简单的计算器,但它不起作用,
它给出了一个错误。
顺便说一下,我使用 discord.py(discord bot 在 python 中编写脚本)
谁能帮帮我?
这是我的代码
@bot.command()
async def calc(ctx):
await ctx.send("Number 1: ")
number_1 = await bot.wait_for("message" )
await ctx.send("Operator: ")
operator = await bot.wait_for("message" )
await ctx.send("number 2: ")
number_2 = await bot.wait_for("message" )
number_1 = float(number_1)
number_2 = float(number_2)
ouput = none
if operator == "+":
ouput = number_1 + number_2
elif operator == "-":
output = number_1 - number_2
elif operator == "/":
output = number_1 / number_2
elif operator == "*":
output = number_1 * number_2
else :
ctx.send(f"invalid input")
ctx.send(f"Answer: " + str(output))
你误解了一些事情:
wait_for
函数需要 check
来查看您 等待 的东西是否就是您得到的东西,
number_1
、number_2
& operator
将是消息对象而不是消息内容,因此您必须从该对象获取 content
属性,
- 在你的代码变量
output
有时是名称 ouput
并且你将 none
分配给它这是完全错误的,它应该是 None
大写字母,
- 你最后的 2
ctx.send()
开头没有 await
- 您必须
return
在无效输入后,否则机器人将发送“应答消息”
- 你的代码中有一些不必要的
f"strings"
我想就是这样。您的代码应如下所示:
@bot.command()
async def calc(ctx):
def check(m):
return len(m.content) >= 1 and m.author != bot.user
await ctx.send("Number 1: ")
number_1 = await bot.wait_for("message", check=check)
await ctx.send("Operator: ")
operator = await bot.wait_for("message", check=check)
await ctx.send("number 2: ")
number_2 = await bot.wait_for("message", check=check)
try:
number_1 = float(number_1.content)
operator = operator.content
number_2 = float(number_2.content)
except:
await ctx.send("invalid input")
return
output = None
if operator == "+":
output = number_1 + number_2
elif operator == "-":
output = number_1 - number_2
elif operator == "/":
output = number_1 / number_2
elif operator == "*":
output = number_1 * number_2
else:
await ctx.send("invalid input")
return
await ctx.send("Answer: " + str(output))
此外 - 你在那里犯了一些非常像初学者的错误,首先你应该学习 python 的基础知识而不是尝试编写不和谐的机器人。我知道这很酷,但当你真正知道自己在做什么时,它会更有趣。
这是一种更简单的计算器制作方法
import sympy
import numpy
@bot.command()
async def calc(ctx,arg): #arg is desired calculation(since this code is simple make sure u dont leave any spaces
answer=N(arg) #this will calculate the result
ans=np.format_float_positional(answer,trim='-') #this will remove extra zeros from float
tu=discord.Embed(title='{0}={1}'.format(arg,ans),color=0XEDAF65)
await ctx.send(embed=tu)
我试图在我的 discord 机器人中制作一个简单的计算器,但它不起作用, 它给出了一个错误。
顺便说一下,我使用 discord.py(discord bot 在 python 中编写脚本)
谁能帮帮我?
这是我的代码
@bot.command()
async def calc(ctx):
await ctx.send("Number 1: ")
number_1 = await bot.wait_for("message" )
await ctx.send("Operator: ")
operator = await bot.wait_for("message" )
await ctx.send("number 2: ")
number_2 = await bot.wait_for("message" )
number_1 = float(number_1)
number_2 = float(number_2)
ouput = none
if operator == "+":
ouput = number_1 + number_2
elif operator == "-":
output = number_1 - number_2
elif operator == "/":
output = number_1 / number_2
elif operator == "*":
output = number_1 * number_2
else :
ctx.send(f"invalid input")
ctx.send(f"Answer: " + str(output))
你误解了一些事情:
wait_for
函数需要check
来查看您 等待 的东西是否就是您得到的东西,number_1
、number_2
&operator
将是消息对象而不是消息内容,因此您必须从该对象获取content
属性,- 在你的代码变量
output
有时是名称ouput
并且你将none
分配给它这是完全错误的,它应该是None
大写字母, - 你最后的 2
ctx.send()
开头没有await
- 您必须
return
在无效输入后,否则机器人将发送“应答消息” - 你的代码中有一些不必要的
f"strings"
我想就是这样。您的代码应如下所示:
@bot.command()
async def calc(ctx):
def check(m):
return len(m.content) >= 1 and m.author != bot.user
await ctx.send("Number 1: ")
number_1 = await bot.wait_for("message", check=check)
await ctx.send("Operator: ")
operator = await bot.wait_for("message", check=check)
await ctx.send("number 2: ")
number_2 = await bot.wait_for("message", check=check)
try:
number_1 = float(number_1.content)
operator = operator.content
number_2 = float(number_2.content)
except:
await ctx.send("invalid input")
return
output = None
if operator == "+":
output = number_1 + number_2
elif operator == "-":
output = number_1 - number_2
elif operator == "/":
output = number_1 / number_2
elif operator == "*":
output = number_1 * number_2
else:
await ctx.send("invalid input")
return
await ctx.send("Answer: " + str(output))
此外 - 你在那里犯了一些非常像初学者的错误,首先你应该学习 python 的基础知识而不是尝试编写不和谐的机器人。我知道这很酷,但当你真正知道自己在做什么时,它会更有趣。
这是一种更简单的计算器制作方法
import sympy
import numpy
@bot.command()
async def calc(ctx,arg): #arg is desired calculation(since this code is simple make sure u dont leave any spaces
answer=N(arg) #this will calculate the result
ans=np.format_float_positional(answer,trim='-') #this will remove extra zeros from float
tu=discord.Embed(title='{0}={1}'.format(arg,ans),color=0XEDAF65)
await ctx.send(embed=tu)