所以我有一段代码,它需要用户多次输入(输入的内容并不总是一样)。与其将代码传递给不和谐的所有人,我不希望将其直接放入不和谐的bot中,以便每个人都可以使用它。给出代码后,我所有的机器人如何接收用户味精
这是我想要的例子:
-。botcalc
-这是不和谐的机器人,请输入第一个数字:
-1
-输入第二个数字:
-2
--1 + 2 = 3
答案 0 :(得分:0)
使用wait_for
async def botcalc(self, ctx):
author = ctx.author
numbers = []
def check(m):
return m.author == author
for _ in ('first', 'second'):
await ctx.send(f"enter {_} number")
num = ""
while not num.isdigit():
num = await client.wait_for('message', check=check)
numbers.append[int(num)]
await channel.send(f'{numbers[0]}+{numbers[1]}={sum{numbers)}')
修改
添加了支票
答案 1 :(得分:0)
如果您要启动新的漫游器,请使用the rewrite version of discord.py。您可以找到the documentation here。
您可以通过两种方式编写此命令:一种是在问题中使用“对话”风格
from discord.ext.commands import Bot
bot = Bot("!")
def check(ctx):
return lambda m: m.author == ctx.author and m.channel == ctx.channel
async def get_input_of_type(func, ctx):
while True:
try:
msg = await bot.wait_for('message', check=check(ctx))
return func(msg.content)
except ValueError:
continue
@bot.command()
async def calc(ctx):
await ctx.send("What is the first number?")
firstnum = await get_input_of_type(int, ctx)
await ctx.send("What is the second number?")
secondnum = await get_input_of_type(int, ctx)
await ctx.send(f"{firstnum} + {secondnum} = {firstnum+secondnum}")
第二种方法是使用converters接受参数作为命令调用的一部分
@bot.command()
async def calc(ctx, firstnum: int, secondnum: int):
await ctx.send(f"{firstnum} + {secondnum} = {firstnum+secondnum}")