我想用python命令制作一个不和谐的机器人,从而启动游戏,在该游戏中,您必须编写给定的单词,并在用户正确拼写后停止,但是return
在我的情况下不起作用
async def joc(ctx):
a=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'0','1','2','3','4','5','6','7','8','9']
cuv=random.sample(a,10)
cuvant=''
for x in cuv:
cuvant+=x
await ctx.send('The game begins in: ')
await ctx.send('3')
time.sleep(1)
await ctx.send('2')
time.sleep(1)
await ctx.send('1')
time.sleep(1)
await ctx.send('Start!')
await ctx.send(cuvant)
@bot.event
async def on_message(message):
if message.content==cuvant:
await message.channel.send(message.author)
await message.channel.send("Nice")
return
return
我可以通过访问历史记录来做到这一点,但我想知道如何做到这一点
答案 0 :(得分:1)
哦,我也遇到了同样的问题
通过将此添加到 on_message() 的最后一行来修复
await client.process_commands(message)
# Replace the client with own bot or something that you have started with
答案 1 :(得分:0)
您不应该将事件放在命令内,它不能那样工作。您正在寻找的是wait_for,链接中包含了如何使用它的示例。基本上,您创建一个check
来查看邮件是否采用某种格式或是否符合您的要求,以检查邮件是否为正确的单词。
答案 2 :(得分:0)
这是stijndcl告诉我们的wait_for
修订后的代码
async def joc(ctx):
a=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'0','1','2','3','4','5','6','7','8','9']
cuv=random.sample(a,10)
cuvant=''
for x in cuv:
cuvant+=x
await ctx.send('The game begins in: ')
await ctx.send('3')
time.sleep(1)
await ctx.send('2')
time.sleep(1)
await ctx.send('1')
time.sleep(1)
await ctx.send('Start!')
await ctx.send(cuvant)
content = ""
while content != cuvant:
msg = await bot.wait_for("message", check=lambda m: m.author == ctx.author and m.channel.id == ctx.channel.id)
content = msg.content
await ctx.send(message.author)
await ctx.send(cuvant)