Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从邮件中删除/自动删除反应?_Python_Events_Discord_Discord.py - Fatal编程技术网

Python 如何从邮件中删除/自动删除反应?

Python 如何从邮件中删除/自动删除反应?,python,events,discord,discord.py,Python,Events,Discord,Discord.py,我正在创建一个问题机器人。在这里,机器人会提出不同的问题,并给出不同的回应方式。我想保留这种可能性。但我需要一个事件,在用户提交消息后,该事件将删除此消息下的反应。不幸的是,我没有发现任何东西,但我会用raw\u reaction事件来做一些事情,我是对的吗?这需要怎么看?我还认为我还需要定义所有代码来获得消息的反应,是这样吗? 到目前为止,我的代码是: @commands.command() 异步def琐事(自身、ctx): 等待ctx.send(“测试,检查您的DMs”) def检查(m):

我正在创建一个问题机器人。在这里,机器人会提出不同的问题,并给出不同的回应方式。我想保留这种可能性。但我需要一个事件,在用户提交消息后,该事件将删除此消息下的反应。不幸的是,我没有发现任何东西,但我会用
raw\u reaction
事件来做一些事情,我是对的吗?这需要怎么看?我还认为我还需要定义所有代码来获得消息的反应,是这样吗? 到目前为止,我的代码是:

@commands.command()
异步def琐事(自身、ctx):
等待ctx.send(“测试,检查您的DMs”)
def检查(m):
返回ctx.author==m.author和isinstance(m.channel,discord.DMChannel)
e=discord.Embed(color=discord.color.gold())
e、 title=“新问题,新运气。”
e、 description=“**史蒂夫·乔布斯是什么时候出生的?**”
e、 添加字段(name=“1️⃣", value=“02/24/1955”,inline=False)
e、 添加字段(name=“2️⃣,value=“03/24/1955”,inline=False)
e、 添加字段(name=“3️⃣,value=“02/24/1965”,inline=False)
e、 设置页脚(text=“你有x-x来回答这个问题。”,icon\u url=self.bot.user.avatar\u url)
e、 timestamp=datetime.datetime.utcnow()
问题=等待ctx.send(嵌入=e)
等待问题。添加反应(“1️⃣")
等待问题。添加反应(“2️⃣")
等待问题。添加反应(“3️⃣")
尝试:
问题=等待self.bot.wait_for('reaction_add',timeout=60.0,check=check)
除asyncio.TimeoutError外:
等待ctx.author.send(“你花了很长时间才做出反应。”)
返回
等待异步睡眠(10)
e2=discord.Embed(color=discord.color.gold())
e2.title=“新问题,新运气。”
e2.description=“Test1”
e2.添加_字段(name=“1️⃣“,value=“02/24/1955”)
e2.添加_字段(name=“2️⃣“,value=“03/24/1955”)
e2.添加_字段(name=“3️⃣“,value=“02/24/1965”)
e2.设置页脚(text=“你有x-x来回答这个问题。”)
e2.timestamp=datetime.datetime.utcnow()
等待问题。编辑(嵌入=e2)
等待问题。添加反应(“1️⃣")
等待问题。添加反应(“2️⃣")
等待问题。添加反应(“3️⃣")
编辑:我想这将是一个只使用DM的命令,还不确定-也许会更容易

我现在得到的错误代码是:

TypeError:check()接受1个位置参数,但给出了2个

如何继续?

您可以立即删除邮件中的所有反应:

question = await ctx.send(embed=e)
await question.clear_reactions()
如果您试图在用户响应后执行此操作,请使用
wait bot.wait\u for(“message”,check=some\u check\u函数)


请参阅:

谢谢您的帮助。您认为DM命令中需要进行此检查吗?对于公共事务,检查是很好的,因为我等待反应,然后直接删除它。
wait\u for
将等待bot看到的任何消息,包括在其他通道中看到的消息。因此,您可能希望在check函数中编写逻辑,以获取消息来自通道,并查看它是否是DMChannel类型(
isinstance(通道,discord.DMChannel)
)将使用
def check(m)检查它:返回ctx.author==m.author和isinstance(m.channel,discord.DMChannel)
在您的本地作用域中没有
ctx
,因此看起来您正在检查发送原始命令的作者是否与发送新消息的作者相同。如果是这样,那么是的!如果我只想检查反应,会是什么情况?检查会是什么样子?我总是得到
check()接受1个位置参数,但给出2个作为错误代码要回答下面的评论,您可以使用
等待(“反应添加”,…)
这实际上适用于任何内置event@effprime实际上,我正在寻找一个只删除用户反应的函数,而不是一个同时删除机器人反应本身的函数。我想我必须处理一个事件,如
等待反应。删除(用户)
只适用于一种反应。您可以循环浏览邮件的反应并将其删除