【发布时间】:2021-09-28 03:06:02
【问题描述】:
所以我做了一个命令,你需要猜测冒名顶替者是谁。 但机器人似乎没有选择用户的响应,即他们选择谁是冒名顶替者..
代码-
@commands.command(aliases=['gti'])
async def impostor(self, ctx):
def check(message):
return message.author == ctx.author and message.channel == ctx.channel
impostor_list = ['red', 'yellow', 'white', 'purple', 'pink', 'orange', 'lime', 'green', 'cyan', 'brown', 'blue']
impostor = random.choice(impostor_list)
embed = discord.Embed(title="Guess the impostor!", description="Who is sussy? Write their color in chat within 20s to continue!", color = discord.Color.random())
embed.add_field(name="The people are:", value="```red, yellow, white, purple, pink, orange, lime, green, cyan, blue, brown```")
send_em = await ctx.send(embed=embed)
try:
user_response = await self.client.wait_for("message", timeout=20, check=check)
except asyncio.TimeoutError:
return await ctx.send("You took too long to answer.")
else:
if user_response.content == impostor:
correct_em = discord.Embed(title=f"{user_response} was ejected.", description=f"{user_response} was the Impostor. Well done!", color = discord.Color.random())
return await ctx.send(embed=correct_em)
else:
wrong_em = discord.Embed(title=f"{user_response} was ejected.", description=f"{user_response} was not the Impostor.\nYou lose! {impostor} was the Impostor.")
return await ctx.send(embed=wrong_em)
如果您有解决方案,请回答。 提前致谢。
【问题讨论】:
-
尽量不要返回等待,而只是等待它们
-
不...它仍然不起作用。即使我在聊天中写了颜色,它也没有响应,也没有在 CMD 中显示任何错误。
-
您使用的是哪个 Python 版本?您还定义了
send_em,但从未使用它,为什么? -
为什么在你的
try-except声明之后有一个else?您之前没有使用任何if或elif,您的意思是改写finally吗?
标签: python python-3.x discord.py bots