收集来自私有DM的反应,但忽略了机器人反应

时间:2019-01-05 22:48:57

标签: python-3.x discord.py

我正在为我的机器人发出一条命令,它将向您发送以下消息:enter image description here

机器人会预先反应两个反应(滴答声和交叉声),以向用户显示该怎么做。我不想让机器人等待一段时间,以检查用户的反应,而此时我的机器人会计算自己的反应,因此计数为假。

我该怎么做,我尝试过的所有操作都失败了,并且我无法再按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:

1 个答案:

答案 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;
}