不一致派克
我试图让我的机器人检测机器人的嵌入消息(获取玩家的游戏货币)使用
等待客户。等待
然而,它不知何故没有检测到机器人发送的嵌入。只要它有与嵌入一起发送的纯文本,或者它自己发送纯文本,它仍然承认它。该
@client.event
async def on_message(message):
如果bot发送了包含或不包含文本的嵌入,则代码仍然有效。
1.
❌已经测试并证明不是原因❌我的机器人无法读取来自机器人的消息
2
可能:我的bot比我正在测试的bot慢,因此一旦我的bot检测到用户发送的消息让bot做出反应,bot已经用另一条消息做出响应,因此bot仍在等待一条不存在的消息。我还没有找到一种可行的、不费时的方法来测试这一点
3
可能:{这个问题}
所有的帮助将不胜感激!请在此指出我的代码中的任何错误,以及我是否使用正确的代码来检测机器人程序的嵌入和/或消息。我也希望有其他方法来编写我的代码。
我当前代码的一部分是:
def pred(m):
return m.author == client.get_user(490707751832649738)
try:
msg = await client.wait_for('message', check=pred, timeout=10.0)
except asyncio.TimeoutError:
await message.channel.send('Looks like Taco-shack is down :/')
else:
await message.channel.send('You said {0.content}, {0.author}.'.format(msg))
请忽略缩进。这是我代码中的新副本。我从API中修改了它https://discordpy.readthedocs.io/en/latest/migrating.html#waiting-事件
输出:
看起来塔可小屋关闭了
,这是异步IO超时错误的输出
这是我创建堆栈溢出帐户后的第一个问题,我意识到我可以参考的文章已经很多了。所以我一直在寻找,但我无法找到这个问题的答案。请忽略我糟糕的格式!
作为对我的评论的回应,我将把它说得更清楚
由于埃里克的帮助,我已经修改了上面的代码。他评论了一些让我改进代码的东西;)
作为对Patrick评论的回应(非常感谢您指导我访问https://stackoverflow.com/help/minimal-reproducible-examrple帮助页面,非常感谢;),这里有几个步骤可以让您重现代码。
步骤1:转到Discord开发人员门户,创建两个机器人,一个用于发送嵌入,另一个用于此测试(如果您有一个随机机器人可以发送嵌入,则创建一个)
步骤2:邀请bot到您的服务器
第3步:编码第一个机器人发送嵌入一旦你在任何渠道内发送消息也许一个简单的嵌入就像我如何通过我的不和谐机器人,w/python发送嵌入?也可能添加了一个其他的代码,并且该代码发送一些纯文本。记得使用
client.run()
!
步骤4对第二个bot进行如下编码:
@client.event
async def on_message(message):
def pred(m):
return m.author == client.get_user(490707751832649738)
try:
msg = await client.wait_for('message', check=pred, timeout=10.0)
except asyncio.TimeoutError:
await message.channel.send('Looks like Taco-shack is down :/')
else:
await message.channel.send('You said {0.content}, {0.author}.'.format(msg))
client.run('token')
第五步:运行两个机器人!
我似乎不明白用短信有什么用。嵌入。我正在尝试等待在on下发送消息。有人键入
后继续线程的消息。余额
查看其帐户的价值,以便bot可以获取信息。但是,它无法识别bot发送的消息
这部分是为了查看用户还剩下多少钱以及这个人是否成功地发送了捐赠,以便虚假捐赠不会扰乱渠道
不应该被认为是一个整体。
我编辑了我的on_消息,以便在它听到消息时检测响应。谢谢你的帮助:)这是我排除的第二件事
我不能复制这个。这就是我要做的
@bot.event
async def on_message(message):
if message.author.id == bot.user.id:
print(message.content)
print(message.embeds)
await bot.process_commands(message)
@bot.command()
async def comm(ctx):
msg = await bot.wait_for('message', check=lambda m: m.author.id == bot.user.id)
await ctx.send(f"{msg.content} {msg.embeds}")
@bot.command()
async def send_content(ctx):
await ctx.send("content1")
@bot.command()
async def send_embed(ctx):
embed = Embed(title="Title1")
await ctx.send(embed=embed)
@bot.command()
async def send_both(ctx):
embed = Embed(title="Title2")
await ctx.send("content2", embed=embed)
我只有一个机器人,所以也许这就是问题所在,但是通过运行!通信
然后是!发送嵌入
,bot将从等待
检测自己的仅嵌入消息。在这段代码中,我做的一件事是通过id而不是简单的等式来比较对象。
问题内容: 我正在尝试用Java倒计时。 这是我的HTML 而我的JS: 但是由于某种原因,它不会等待超时时间,而是立即执行,以便在刷新页面时立即显示“完成”。我知道它实际上被执行了多次,因为如果我这样做,它会从45开始递减计数。为什么会绕过超时? 问题答案: 执行带有该参数的函数,并将结果传递给。你不要那样 相反,执行一个匿名函数来调用您的函数:
我目前正在尝试制作一个“反自我机器人”机器人。我想为不和谐社区做点好事。因此,我尝试在消息上创建一个
问题内容: 我正在编写一个Python程序,用于在Linux服务器上运行用户上传的任意代码(因此,在最坏的情况下,就是不安全,错误和崩溃的代码)。除了安全性问题外,我的目标是确定代码(可能以任何语言编写,编译或解释的)是否将正确的内容写入,以及是否将给定输入的其他文件写入程序的。之后,我需要向用户显示结果。 目前,我的解决办法是使用产卵子进程与文件句柄,和。后面的文件句柄包含了操作过程中的程序读取
我正在努力学习如何正确使用async Wait,但我对它有点共同的想法。 在片段中,我试图构建一个对象数组,其中包含我需要的关于我在组件中上传的文件的信息。问题是this.fileInfo中的对象并没有完全等待返回编码图像的promise,而是在我console.logthis.fileInfo时返回此输出: 如您所见,关键图像是一个值未定义的ZoneAwarePromise。你能帮我修一下吗?
问题内容: 因此,我遇到了多个未知长度的promise链的情况。我希望在处理所有链条后执行一些操作。那有可能吗?这是一个例子: 在此示例中,我设置了一个承诺1,,2和3,这些承诺会在某个随机时间得到解决。然后,我将诺言添加到第一和第三的结尾。我想在所有链条都解决后解决。这是运行此代码时的输出: 有没有办法等待连锁解决? 问题答案: 当所有链条都解决后,我希望所有人解决。 当然,然后将每个链的承诺传
所以我有一个情况,我有多个未知长度的promise链。我希望在处理完所有链后运行一些操作。这可能吗?这里有一个例子: 在本例中,我为promise一、promise二和promise三设置了一个,这些promise将在某个随机时间得到解决。然后,我在第一和第三段的末尾加上promise。我希望在解析所有链后解析。以下是我运行此代码时的输出: 有没有办法等待锁链解决?