Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向所有服务器成员发送直接消息的方法?Java不一致Api

向所有服务器成员发送直接消息的方法?Java不一致Api
EN

Stack Overflow用户
提问于 2020-05-03 21:02:09
回答 1查看 2K关注 0票数 0

我想编写一个向所有服务器成员发送私人消息的命令,这是可能的吗?我知道如何将DM发送给消息的作者,但不知道如何发送给所有服务器成员。

EN

回答 1

Stack Overflow用户

发布于 2020-05-15 04:46:04

是的,假设你有你的目标服务器的ID,你可以用它来调用你的机器人的jda实例

代码语言:javascript
运行
AI代码解释
复制
jda.getGuildById(<ID>);

或者,如果您只知道名称,也可以使用

代码语言:javascript
运行
AI代码解释
复制
jda.getGuildsByName(<NAME>, <CASE_SENSITIVE>)

name one将返回一个包含所有匹配名称的列表,这是非常不切实际的,因为获取ID非常容易。

您可能已经通过其他方式获得了Guild对象(可能是通过侦听器?),但这并不重要。

Now you can either call guild.getMembers() or guild.getMemberCache() which one should you choose? guild.getMemberCache() is, by default more efficient and in the end it implements the Iterable interface, so for all your intents and purposes, it should be better to use getMemberCache(), the benefit of getMembers() is that you'll get it as a list, making is trivial to do more processing.

现在您有了List<Member>MemberCacheView,让我们在这里迭代它最简单的选项是forEach()方法,或者只使用for each循环:

代码语言:javascript
运行
AI代码解释
复制
for (Member member : guild.getMemberCache())

或者:

代码语言:javascript
运行
AI代码解释
复制
guild.getMemberCache().forEach(member -> <DO_SOMETHING>)

(如果您选择使用guild.getMembers(),它将完全相同)

现在来实际发送你的消息:

记住,我们正在迭代Member对象,但是JDA不允许我们通过它打开私有通道,所以我们需要

代码语言:javascript
运行
AI代码解释
复制
PrivateChannel channel = member.getUser().openPrivateChannel().complete();

请注意,这里您需要等待同步的complete()并正常接收PrivateChannel对象,或者您可以在打开PrivateChannel时将一个消费者传递给queue方法,该方法将在通道可用时立即执行:

代码语言:javascript
运行
AI代码解释
复制
Consumer<PrivateChannel> messageSender = channel -> channel.sendMessage("Hey~~!").queue();
user.openPrivateChannel().queue(messageSender);

或者:

代码语言:javascript
运行
AI代码解释
复制
user.openPrivateChannel().queue(channel -> channel.sendMessage("Hey~~!").queue());

现在我们有了通道,发送消息就很简单了

代码语言:javascript
运行
AI代码解释
复制
channel.sendMessage("Hey~~!").queue();

因此,将所有这些放在一起,我们得到:

代码语言:javascript
运行
AI代码解释
复制
Guild guild; //Guild you got from a listener, or from the JDA pool

for(Member member : guild.getMemberCache()) { //Iterating over cached members in the guild
   User user = member.getUser(); //Converting the member object to a User

  user.openPrivateChannel().queue(channel->
             channel.sendMessage("Hey~~!").queue()); //Opening the channel and sending the message

   /*  Now you can optionally close the channel to remove it from the JDA's mapping */
   channel.close().queue();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61581581

复制
相关文章
Netty空闲检测之写空闲
在之前的文章,我们介绍了Netty空闲检测之读空闲,以及为了介绍此篇文章,我们也特意写了一篇关于写操作的概括文章.读者对于Netty如何进行写操作也有了一个大概的认识了,接下来我们说一下,对于如何检测
书唐瑞
2022/06/02
6710
Netty空闲检测之写空闲
Netty空闲检测之读空闲
客户端与服务端通信的时候,服务端如何感知到客户端下线.客户端可以每4秒向服务端发送一个数据,服务端每5秒进行空闲检测.如果服务端没有读取到数据,则认为客户端已下线.(实际业务中并不会这么处理,我们这里只是为了描述场景)
书唐瑞
2022/06/02
7370
Netty空闲检测之读空闲
计算机网络:随机访问介质访问控制之CSMA/CA协议
CSMA/CD协议已成功应用于使用有线连接的局域网,但在无线局域网环境下,却不能简单地搬用CSMA/CD协议,特别是碰撞检测部分。主要有两个原因:
timerring
2022/11/18
1.5K0
计算机网络:随机访问介质访问控制之CSMA/CA协议
详解多站点应用CSMA/CA原理进行无线传输的过程
等够了一个DIFS时刻,站点3处于忙状态(占用了这个媒介,其他站点即使有数据,也不能发送了)。
手撕代码八百里
2020/07/28
6060
为什么要选择VersionCatalog来做依赖管理?
很多人都介绍过Gradle 7.+提供新依赖管理工具VersionCatalog,我就不过多介绍这个了。我们最近也算是成功接入了VersionCatalog,过程也还是有点曲折的,总体来说我觉得确实比我们当前的ext,或者说是用buildSrc的形式进行依赖管理是个更成熟的方案吧。下面是几个介绍的文章,尤其可以看看三七哥哥的。
逮虾户
2023/02/02
7130
为什么要选择VersionCatalog来做依赖管理?
检测是否IE
从jQuery的jQuery.browser里面拿出来的,jQuery从1.9开始废弃这个方法,改用jQuery.support来检测浏览器支持的特性。
libo1106
2018/08/08
1.1K0
InnoDB为什么要选择B+树来存储数据
关于InnoDB索引,我们可能知道InnDB索引是用B+树实现的,而B+树就是一种能优化查询速度的数据结构。但我们又没想过这样一个问题,能优化查询速度的数据结构有很多,为什么InnoDB要采用B+树?
weylan
2021/11/09
1.9K0
(Python)用Mask R-CNN检测空闲车位
我住在一个大城市。 但就像大多数城市一样,在这里寻找停车位总是一件很困难的事情。 停车位通常很快被抢走,即使你有一个专门的停车位,朋友们来拜访你也是一件很困难的事,因为他们找不到停车位。
AI研习社
2019/03/14
2.2K0
空闲时间请大家不要接私活,要提升自己!
现在社会,有很多人都在利用个人时间兼职赚钱,程序员俗称“接私活”,其他行业称作兼职,比如下了班出去跑滴滴,周末兼职抢单送外卖等等,都是普通人很常见的兼职方式。
JAVA高级架构开发
2018/10/06
1K0
如何在Vuejs中实现页面空闲超时检测
您是否需要检查用户在Vue应用程序中的不活跃状态?如果用户在一段时间内处于非活动状态,则要自动注销该用户或显示一个计时器。通常,具有机密数据的系统(如银行)通常会实现这种功能。需求是监听3秒钟的不活动状态并显示带有10秒计时器的模态提示框。如果在10秒的会话中没有任何操作,请自动注销用户。
前端知否
2020/03/23
3.1K0
如何在Vuejs中实现页面空闲超时检测
姗姗来迟的疫苗是否值得等待
本期「熊言熊语」是我们科普系列的第一期节目,听日本京都大学的医学博士斯佳聊聊疫苗那些事儿。
生信菜鸟团
2020/05/18
3200
姗姗来迟的疫苗是否值得等待
为什么要停止过度使用置换重要性来寻找特征
数据分析师通常为了某些任务需要计算特征重要度。特征重要度可以帮助使用者了解数据中是否存在偏差或者模型中是否存在缺陷。并且特征重要度可用于理解底层流程和做出业务决策。模型最重要的特性可能会给我们进一步的特征工程提供灵感。
deephub
2020/08/17
1.8K0
为什么要停止过度使用置换重要性来寻找特征
Chrome 84 正式发布,支持私有方法、用户空闲检测!
在4月,Chrome 暂时推迟了 SameSite Cookie 属性的推行,以确保在 COVID-19 响应的关键初始阶段提供基本服务的网站的稳定性。
ConardLi
2020/07/22
1.3K0
Chrome 84 正式发布,支持私有方法、用户空闲检测!
Netty 如何通过心跳检测机制实现空闲自动断开
心跳检测指的是在客户端和服务端维护一种特殊的数据包,客户端通过这个数据包告诉服务端自己还是存活的,然后服务端可以通过这个心跳检测机制去实现一些业务功能,如:空闲自动断开、判断客户端是否在线等
AI码师
2022/12/22
1.4K0
是否要劝学单片机?
真正要劝退的是那些自己对单片机没有兴趣爱好,不知道为什么选了这个专业,没有毅力能坚持探索、研究的那一批人。还有那些眼高手低,想着今天开始学,明天就是高手,后天就能鄙视新入门的小伙伴的那些人。‍
单片机技术宅
2021/11/02
9710
js检测用户是否跳出
VisibilityChange 事件;用于判断用户是否离开当前页面 // 页面的 visibility 属性可能返回三种状态 // prerender,visible 和 hidden let pageVisibility = document.visibilityState; // 监听 visibility change 事件 document.addEventListener('visibilitychange', function() { // 页面变为不可见时触发 if (do
用户1349575
2022/01/25
4.6K0
检测端口是否被占用
        当我们要创建一个Tcp/Ip Server connection ,我们需要一个范围在1000到65535之间的端口 。 但是本机一个端口只能一个程序监听,所以我们进行本地监听的时候需要检测端口是否被占用。         命名空间System.Net.NetworkInformation下定义了一个名为IPGlobalProperties的类,我们使用这个类可以获取所有的监听连接,然后判断端口是否被占用,代码如下: public static bool PortInUse(int port
hbbliyong
2018/03/06
2K0
JavaWeb项目为什么我们要放弃JSP?为什么要前后端解耦?为什么要动静分离?[通俗易懂]
以前的项目大多数都是java程序猿又当爹又当妈,又搞前端(ajax/jquery/js/html/css等等),又搞后端(java/mysql/oracle等等)。
全栈程序员站长
2022/08/11
1.3K0
Ruby检测Gem是否安装
最近参加七牛的demo大赛,决定使用ruby开发。于是遇到了一些疑问,然后解决了,这里记录一下。
技术小黑屋
2018/09/04
2K0
计算机网络之无线与移动网络-无线局域网 IEEE 802.11
1. 都使用相同的介质访问控制协议CSMA/CA(冲突避免)(Carrier Sense Multiple Access with Collision Avoidance);
越陌度阡
2020/12/18
1.6K0
计算机网络之无线与移动网络-无线局域网 IEEE 802.11

相似问题

检测进程是否空闲

31

是否可以检测Cortex M3上的DMA通道何时空闲?

22

是否可以将一个空闲通道嵌套在另一个空闲通道中?

21

如何检测用户是否“空闲”使用Javascript?

42

SFINAE:检测类是否有空闲函数

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档