java - 如何在 JDA 中将用户添加到频道?
问题描述
我正在使用最新版本的 JDA 创建一个 Discord 机器人,并希望创建频道,当频道中提到某人时,添加他们以便他们可以查看频道。有人知道解决这个问题的方法吗?
解决方案
要允许人们查看频道,您必须为该用户创建权限覆盖。
public static void addUserToChannel(Channel channel, User user) {
Guild guild = channel.getGuild();
Member member = guild.getMember(user);
channel.createPermissionOverride(member)
.setAllow(Permission.VIEW_CHANNEL)
.queue();
}
这将为特定用户创建权限覆盖并允许他们查看频道。要获取消息中提到的用户,您只需调用message.getMentionedUsers()
.
如果用户已经对频道进行了覆盖,您必须channel.getPermissionOverride(member)
通过管理器对其进行检索和修改。
PermissionOverride override = channel.getPermissionOverride(member);
override.getManager().grant(Permission.VIEW_CHANNEL).queue();
如果不存在覆盖getPermissionOverride(member)
将简单地返回null
。您可以使用它来确定是创建还是修改.
这在Channel
已重命名为GuildChannel
.
在那个版本中,您可以简单地调用channel.upsertPermissionOverride(member).grant(Permission.VIEW_CHANNEL).queue();
而不是使用管理器。
推荐阅读
- couchdb - 每个文档的 CouchDB 3.0 8MB 限制是否包括文档的附件?
- javascript - 使用 Getusermedia 选择相机,然后使用 instascan
- azure - Azure IOT Edge 模块存储库名称必须为小写
- mysql - python to connect to mysql error out: 10060 A connection attempt failed, console connection to mysql is fine
- python - 合并多个没有公共列的数据框
- javascript - 将 JSON 响应正确下载为文件
- prolog - prolog查找列表的基数
- python-3.x - 部分打印输出
- mysql - 用于通知的 MySql 触发器
- r - 来自 json 和 xml 的数据帧错误