java - JDA:如何检测成员是如何从公会中移除的?
问题描述
我想在成员被踢时发送消息,如果他被禁止,我想发送消息。
所以在 JDA 的文档中,onGuildMemberRemove 事件包括 Kick、Ban 和 Normal Leave。
@Override
public void onGuildMemberRemove(@NotNull GuildMemberRemoveEvent event) {
}
但是我现在应该如何检测成员何时被禁止或被踢?
解决方案
您可以使用retrieveAuditLogs并检查用户最近是否被禁止或踢出目标。
例子:
@Override
public void onGuildMemberRemove(GuildMemberRemoveEvent event) {
event.getGuild()
.retrieveAuditLogs()
.queueAfter(1, TimeUnit.SECONDS, (logs) -> { // Gotta wait a second for discord to populate the logs properly
boolean isBan = false, isKick = false;
for (AuditLogEntry log : logs) {
if (log.getTargetIdLong() == event.getUser().getIdLong()) {
isBan = log.getType() == ActionType.BAN;
isKick = log.getType() == ActionType.KICK;
break;
}
}
... code here
});
}
推荐阅读
- r - 使用 GraphQL 的 R 代码不打印嵌套数据
- python - 一段时间后隐藏在 jupyterlab 中的 svg 数字
- c# - 有没有办法通过不同类型的 ProtoBuf 字段进行递归?
- docker - 无法从 Airflow 应用程序访问 Vault 服务器
- graph-databases - 何时使用图数据库、本体和知识图
- c# - 未设置 Toast 通知组属性
- c++ - 从 const 限定类方法操作属于 std::unique_ptr 的 std::mutex 是否安全?
- streamlit - Warp10 和流线型集成?
- python - 使用 selenium (Python) 从 ui-datepicker-calendar 中选择生日
- ios - SwiftUI - 重音,前景色和色调之间的区别?