我正在建立一个用于不和谐游戏的机器人,而我正在制作的第一款游戏是石头,纸,剪刀,因为我是discord.py的新手,这似乎是一种开始制作不和谐游戏的好方法。
我遇到的麻烦显然是用户可以在不同时间输入答案,因此我希望漫游器在发送后立即删除用户给出的答案。
我会使用ctx.channel.purge(limit=1)
,但是我不知道这是否适用于繁忙的服务器,在这些服务器中可以立即发送一条消息,而用户的响应将不会被删除。
当我右键单击聊天时,我可以看到选项copy id
,并且想知道机器人是否可以访问此选项,还可以使用特定ID删除聊天。
此外,如果用户可以通过PM发送响应并能够以这种方式处理数据,那将更好,因此,如果有人可以解释如何做到这一点,那就更好了!
答案 0 :(得分:3)
您可以使用wait_for()
获得特定的答复。
@bot.command()
async def hello(ctx):
await ctx.send(f"Hey {ctx.author.mention}! Send a message for me to delete!")
def check(m):
return m.author == ctx.author # you can also check m.content for specific keywords
# if the check returns true, the message is plopped into the reply variable \/
try:
reply = await bot.wait_for("message", check=check, timeout=30)
# times out after 30 seconds if no response matching the check is received
# reply is just a message object, meaning you can get .content, .id etc.
# this means you can also perform functions if the bot has the permissions
await reply.delete() # this won't be necessary if you're using the bot in DMs
await ctx.send("Message deleted!")
except asyncio.TimeoutError: # this is the error thrown when it times out
await ctx.send("You didn't reply in time :(")
如上面的代码中所述,您还可以获取答复的内容,因此,根据您的情况,您可以检查reply.content.lower()
是否等于rock
,{{1 }}等。
文档还显示了等待反应的情况,因此您可以使游戏与用户一起使用R / P / S表情符号对消息做出反应。
paper