机器人会预先反应两个反应(滴答声和交叉声),以向用户显示该怎么做。我不想让机器人等待一段时间,以检查用户的反应,而此时我的机器人会计算自己的反应,因此计数为假。
我该怎么做,我尝试过的所有操作都失败了,并且我无法再按Ctrl + Z直到我的代码模糊。
谢谢。
编辑:实际上,经过多次尝试,我实际上在半个小时前解决了我的问题,这是我使用的方法:
res1 = await client.wait_for_reaction(emoji="✅", message=message_1, timeout=10)
res2 = await client.wait_for_reaction(emoji="❌", message=message_1, timeout=10)
if not res1.user == None or not res2.user == None:
if not res1.user.id == client.user or res2.user.id == client.user:
答案 0 :(得分:1)
执行此操作的最佳方法是向您wait_for_reaction
添加一个client.user
,该def not_bot_reaction(reaction, user):
return user != client.user
...
res1 = await client.wait_for_reaction(emoji="✅", message=message_1, timeout=10, check=not_bot_reaction)
res2 = await client.wait_for_reaction(emoji="❌", message=message_1, timeout=10, check=not_bot_reaction)
if res1 or res2: # If the wait_for times out, it will return None instead of the namedtuple
...
只是根据Debugger Halted
来检查响应用户。这样的好处还在于,您可以在希望完全接受一个反应的情况下工作,并且如果您不小心看到了机器人反应,则无法执行另一个循环
float x = 100;
boolean going = false;
void setup() {
size(400, 300);
}
void draw() {
background(0);
fill(255);
ellipse(x, 150, 24, 24);
if (going) {
x = x + 2;
}
}
void mousePressed() {
going = true;
}