我的代码中有一个MessageReactionRemve事件,每当删除反应时都会触发它。
然而,我也让我的机器人执行一些自动反应移除(移除用户的反应)。
我想防止机器人删除反应时触发MessageReactionRemoveEvent
。
我的代码用于防止由bot触发的MessageReactionRemoveEvent
:
if (event.getMember().getUser().equals(event.getJDA().getSelfUser())) return;
但是MessageReactionRemveEvents
中的getUser()方法总是返回做出反应的用户的ID,而不是bot的ID。
我的问题是如何检测反应是否被机器人移除?
由于消息ReactionRemoveEvent
不会返回bot ID,因此我无法验证bot是否删除了该反应。我用另一种方法来实现防止MessageReactionRemoveEvent被机器人移除时触发。
以下是方法:
boolean trigger=true
确保使用。complete()
删除反应,而不是。queue()
,可以在此处看到差异:https://ci.dv8tion.net/job/JDA/javadoc/net/dv8tion/jda/api/requests/RestAction.html#queue()
- 移除反应后,do
trigger=false
从那以后。complete()方法将阻止当前线程,MessageReactionRemoveEvent
中的代码完成之前不会调用MessageReactionAddEvent
在MessageReactionRemoveEvent
中,只需应用if(!trigger)//do something
,这意味着如果bot删除了反应,则不会执行if语句后的代码,如果用户删除了反应,则需要执行操作
在方法末尾,确保includestrigger=true
重置触发器
(可选)包括trigger=true
在MessageReactionAddEvent
的开头
这对我来说就像魔法一样有效。
浏览器开启了 HSTS(HTTP Strict Transport Security)功能,它会告诉浏览器只能通过 https 访问,绝对禁止 http 方式,所以浏览器中输入http 后自动转成了 https。 疑问:如何得知浏览器是否开启了此功能? 原因:项目内需要跳转到新标签页,浏览器强制转换协议会报错(502)
cmf_is_mobile() 功能 判断是否为手机访问 参数 无 返回 boolean
我下载了封装在zip文件中的proGuard,并将其解压缩到我的硬盘上。我没有以任何方式安装它(因为我不知道如何安装)。然后,我将添加到我的project.properties文件中。然后我做了一个“导出Android应用程序”,完全期待eclipse抱怨它不知道我的proGuard安装在哪里,但没有抱怨。事实上,一个新的apk文件出现在我的keystore中,一组文件(dump.txt等)出现在
我有一台电脑,我故意安装了JDK。我有另一台带有JRE的计算机,除其他外,用于测试。然而,当我在这台计算机上使用一个java应用程序,然后在另一台计算机上试用时,它抱怨说需要JDK。如何检查系统上是否安装了JDK?注意:有问题的计算机是Mac。
问题内容: 我在SUSE Linux Enterprise 10/11计算机上。我对运行Intel处理器的计算机场进行回归分析。我的某些测试失败,因为我的工具是使用需要AVX / AVX2指令支持的库构建的。我得到一个错误。 在Linux中,是否可以使用任何命令来确定CPU代码/家族名称是什么? 我相信AVX和AVX2可以分别从Intel SandyBridge和Haswell家族获得。 问题答案
cmf_is_mobile() 功能 判断是否为手机访问 参数 无 返回 boolean