Python Discord.py:如何在频道中等待新消息并将其内容用于其他嵌入

Python Discord.py:如何在频道中等待新消息并将其内容用于其他嵌入,python,discord.py,Python,Discord.py,最近我一直在用一些特殊命令构建一个机器人 上诉命令是目前存在问题的命令 指挥部的工作是什么? 它必须发送一个嵌入,并说明所有的东西都必须输入到通道中,机器人才能获得它。这就是机器人 代码: @nd.command() 异步def上诉(ctx): 如果ctx.channel.id==8368111044296480: appalinfembed=discord.Embed(title=“上诉”,description=f“Hi{ctx.author.notice},您正在请求验证。现在,验证系统是

最近我一直在用一些特殊命令构建一个机器人

上诉命令是目前存在问题的命令

指挥部的工作是什么? 它必须发送一个嵌入,并说明所有的东西都必须输入到通道中,机器人才能获得它。这就是机器人

代码:
@nd.command()
异步def上诉(ctx):
如果ctx.channel.id==8368111044296480:
appalinfembed=discord.Embed(title=“上诉”,description=f“Hi{ctx.author.notice},您正在请求验证。现在,验证系统是这样工作的,除非您经过验证,否则您不能在服务器中发送除此类别以外的邮件。因此,如果您是城镇成员,并且希望发送邮件并使用其他功能,则请获得验证。因此,请使用此命令。\n\n您需要提交以下数据以进行验证得到验证。这些数据将由我们的市议会检查,他们很快会对你进行验证。格式如下:\n``真实姓名:\n游戏名称:\n游戏名称:\n游戏名称:\n游戏名称:\n游戏日期:\n\n加入日期:\n体验:'简单地说,添加你在Towny服务器的体验,无论你在哪里玩。```,color=discord.color.random()
appalinfembed.set_作者(name=“xxmiarax”)
appalinfembed.set\u页脚(text=datetime.datetime.now())
等待ctx.channel.send(嵌入=appalinfembed)
等待ctx.channel.send(“您在此文本之后的下一条消息将被视为之前询问的信息。请在一条消息中输入所有详细信息,否则验证将不起作用。”)
AppalChannel=nd.get_通道(8368111044296480)
如果成员\u详细信息==等待AppalChannel.fetch\u消息(AppalChannel.last\u消息\u id):
memberdetailsembed=discord.Embed(title=f“上诉人-{ctx.author.title}”,description=member_details,color=discord.color.random())
memberdetailsembed.set\u作者(name=“xxmiarax”)
memberdetailsembed.set\u页脚(text=datetime.datetime.now())
等待appealchannel.send(嵌入=memberdetailsembed)
其他:
返回
问题: 上面的代码AppalChannel变量工作正常,因为它是正确的,但它之后的任何代码都不工作。这根本没用。任何信息发布后,它没有被接受,或者我不知道会发生什么。我不知道错误到底在哪里



答案可能不一定是针对该代码的类型。请尽一切努力让我清楚地了解情况并开始工作。

问题是,您的机器人在编写消息时正确地获得了频道中的最新消息,并且没有人能够如此快速地键入消息。要解决此问题,可以使用
wait_for()
,将此添加到
appealchannel=nd.get_频道(8368111044296480)

def检查(msg):
返回msg.author==ctx.author和msg.channel==ctx.channel
尝试:
answer=wait nd.wait_for(“message”,check=check,timeout=600.0)#您可以在那里添加任何秒数的超时,对于上诉机器人,我建议大约15分钟
除asyncio.TimeoutError外:
等待ctx.send(“你的时间到了”)#时间到了,在这里做事
这应该可以解决您的问题,因为我不知道您从哪里获得变量成员的详细信息。因此,使用answer.content代替member\u details,如果member\u details==wait appealchannel.fetch\u message(appealchannel.last\u message\u id): 因此,您的最终代码是:

@nd.command()
异步def上诉(ctx):
如果ctx.channel.id==8368111044296480:
appalinfembed=discord.Embed(title=“上诉”,description=f“Hi{ctx.author.notice},您正在请求验证。现在,验证系统是这样工作的,除非您经过验证,否则您不能在服务器中发送除此类别以外的邮件。因此,如果您是城镇成员,并且希望发送邮件并使用其他功能,则请获得验证。因此,请使用此命令。\n\n您需要提交以下数据以进行验证得到验证。这些数据将由我们的市议会检查,他们很快会对你进行验证。格式如下:\n``真实姓名:\n游戏名称:\n游戏名称:\n游戏名称:\n游戏名称:\n游戏日期:\n\n加入日期:\n体验:'简单地说,添加你在Towny服务器的体验,无论你在哪里玩。```,color=discord.color.random()
appalinfembed.set_作者(name=“xxmiarax”)
appalinfembed.set\u页脚(text=datetime.datetime.now())
等待ctx.channel.send(嵌入=appalinfembed)
等待ctx.channel.send(“您在此文本之后的下一条消息将被视为之前询问的信息。请在一条消息中输入所有详细信息,否则验证将不起作用。”)
def检查(msg):
返回msg.author==ctx.author和msg.channel==ctx.channel
尝试:
answer=wait nd.wait_for(“message”,check=check,timeout=600.0)#您可以在那里添加任何秒数的超时,对于上诉机器人,我建议大约15分钟
除asyncio.TimeoutError外:
等待ctx.send(“你的时间到了”)#时间到了,在这里做事
memberdetailsembed=discord.Embed(title=f“上诉人-{ctx.author.notice}”,description=answer.content,color=discord.color.random())
memberdetailsembed.set\u作者(name=“xxmiarax”)
memberdetailsembed.set\u页脚(text=datetime.datetime.now())
AppalChannel=nd.get_通道(8368111044296480)
等待appealchannel.send(嵌入=memberdetailsembed)
参考资料:

问题是,你的机器人在写消息的时候在频道中正确地获得了最新消息,没有人能这么快键入。要解决此问题,可以使用
wait_for()
,将此添加到
appealchannel=nd.get_频道(8368111044296480)

def检查(msg):
返回msg.author==ctx.author和msg.channel==ctx.channel
尝试:
等我