@cssxsh 请问有没有直接获取到群成员对象的接口?如果我这边在每次给群友发送消息之间间隔1秒可以吗?
404-Error 发布的帖子
-
私信陌生人发送失败,但日志显示成功
QQ号循环群,私信指定成员发送消息,前3个成功了,后边发消息虽然日志显示成功了,但QQ上实际没有发出来
QQ号说明:
- 机器人一共加了两个群
- 有两个人同时加入了两个群
- 有另外两个人只加入了A群
- 还有另外两个人只加入了B群
A群 B群 是否添加了机器人好友 私信是否发送成功 机器人 √ √ - - QQ号1 √ √ 是 是 QQ号2 √ √ 否 是 QQ号3 √ 是 是 QQ号4 √ 否 否 QQ号5 √ 否 否 QQ号6 √ 否 否 代码如下:
// 需要私信的QQ列表 Set<Long> toRemind = new HashSet<>(qqList); Bot bot = botUtil.getBot(); // 循环群 for (Group group : bot.getGroups()) { ContactList<NormalMember> members = group.getMembers(); // 循环群内成员 for (NormalMember member : members) { if (toRemind.contains(member.getId())) { try { // 发送消息 member.sendMessage(data.hint_msg); toRemind.remove(member.getId()); } catch (Exception e) { log.error(e.getClass().getName(), e); } } } }
日志如下
2022-11-08 21:39:03 I/Bot 2190915232: Bot login successful. 2022-11-08 21:39:03 V/Net 2190915232: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg) 2022-11-08 21:39:03 V/Bot 2190915232: Friend(**A群的QQ号1**) <- 请大家抓紧时间做核酸啦 2022-11-08 21:39:03 V/Net 2190915232: Recv: MessageSvc.PbSendMsg 2022-11-08 21:39:03 V/Net 2190915232: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg) 2022-11-08 21:39:04 V/Bot 2190915232: NormalMember(**A群的QQ号2**) <- 请大家抓紧时间做核酸啦 2022-11-08 21:39:04 V/Net 2190915232: Recv: MessageSvc.PbSendMsg 2022-11-08 21:39:04 V/Net 2190915232: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg) 2022-11-08 21:39:04 V/Bot 2190915232: Friend(**A群的QQ号3**) <- 请大家抓紧时间做核酸啦 2022-11-08 21:39:04 V/Net 2190915232: Recv: MessageSvc.PbSendMsg 2022-11-08 21:39:04 V/Net 2190915232: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg) 2022-11-08 21:39:04 V/Bot 2190915232: NormalMember(**A群的QQ号4**) <- 请大家抓紧时间做核酸啦 2022-11-08 21:39:04 V/Net 2190915232: Recv: MessageSvc.PbSendMsg 2022-11-08 21:39:04 V/Net 2190915232: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg) 2022-11-08 21:39:05 V/Bot 2190915232: NormalMember(**B群的QQ号5**) <- 请大家抓紧时间做核酸啦 2022-11-08 21:39:05 V/Net 2190915232: Recv: MessageSvc.PbSendMsg 2022-11-08 21:39:05 V/Net 2190915232: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg) 2022-11-08 21:39:05 V/Bot 2190915232: NormalMember(**B群的QQ号6**) <- 请大家抓紧时间做核酸啦 2022-11-08 21:39:05 V/Net 2190915232: Recv: MessageSvc.PbSendMsg 2022-11-08 21:39:05 V/Net 2190915232: Saving bdh session to cache 2022-11-08 21:39:05 V/Net 2190915232: Send: ConfigPushSvc.PushResp(ConfigPushSvc.PushResp) 2022-11-08 21:39:05 V/Net 2190915232: Recv: ConfigPushSvc.PushReq
-
发送消息时的长度限制怎么处理呢?
问题描述:我需要在群里@100个同学,然后报错如下
2022-11-05 14:49:35.460 ERROR 1984 --- [nio-8576-exec-2] com.example.***Controller : class java.lang.ArrayIndexOutOfBoundsException java.lang.ArrayIndexOutOfBoundsException: arraycopy: last destination index 4132 out of bounds for byte[4096] at java.base/java.lang.System.arraycopy(Native Method) ~[na:na] at net.mamoe.mirai.internal.deps.io.ktor.utils.io.bits.MemoryJvmKt.copyTo-9zorpBc(MemoryJvm.kt:117) ~[mirai-core-jvm-2.13.0-RC.jar:2.13.0-RC] at net.mamoe.mirai.internal.deps.io.ktor.utils.io.core.BufferPrimitivesKt.readFully(BufferPrimitives.kt:1098) ~[mirai-core-jvm-2.13.0-RC.jar:2.13.0-RC] at net.mamoe.mirai.internal.deps.io.ktor.utils.io.core.InputArraysKt.readFully(InputArrays.kt:8) ~[mirai-core-jvm-2.13.0-RC.jar:2.13.0-RC] at net.mamoe.mirai.internal.message.protocol.outgoing.GroupMessageProtocolStrategy.createPacketsForGeneralMessage$suspendImpl(MessageProtocolStrategy.kt:358) ~[mirai-core-jvm-2.13.0-RC.jar:2.13.0-RC] at net.mamoe.mirai.internal.message.protocol.outgoing.GroupMessageProtocolStrategy.createPacketsForGeneralMessage(MessageProtocolStrategy.kt) ~[mirai-core-jvm-2.13.0-RC.jar:2.13.0-RC] at net.mamoe.mirai.internal.message.protocol.outgoing.GroupMessageProtocolStrategy.createPacketsForGeneralMessage(MessageProtocolStrategy.kt:139) ~[mirai-core-jvm-2.13.0-RC.jar:2.13.0-RC] at net.mamoe.mirai.internal.message.protocol.impl.GeneralMessageSenderProtocol$GeneralMessageSender.process(GeneralMessageSenderProtocol.kt:64) ~[mirai-core-jvm-2.13.0-RC.jar:2.13.0-RC] at net.mamoe.mirai.internal.message.protocol.outgoing.OutgoingMessageProcessorAdapter.process(OutgoingMessagePipelineProcessor.kt:26) ~[mirai-core-jvm-2.13.0-RC.jar:2.13.0-RC] at net.mamoe.mirai.internal.message.protocol.outgoing.OutgoingMessageProcessorAdapter.process(OutgoingMessagePipelineProcessor.kt:20) ~[mirai-core-jvm-2.13.0-RC.jar:2.13.0-RC] at net.mamoe.mirai.internal.pipeline.AbstractProcessorPipeline.process$suspendImpl(ProcessorPipeline.kt:256) ~[mirai-core-jvm-2.13.0-RC.jar:2.13.0-RC] at net.mamoe.mirai.internal.pipeline.AbstractProcessorPipeline.process(ProcessorPipeline.kt) ~[mirai-core-jvm-2.13.0-RC.jar:2.13.0-RC] at net.mamoe.mirai.internal.message.protocol.MessageProtocolFacadeImpl.preprocessAndSendOutgoingImpl(MessageProtocolFacade.kt:340) ~[mirai-core-jvm-2.13.0-RC.jar:2.13.0-RC] at net.mamoe.mirai.internal.message.protocol.MessageProtocolFacadeImpl.preprocessAndSendOutgoing(MessageProtocolFacade.kt:325) ~[mirai-core-jvm-2.13.0-RC.jar:2.13.0-RC] at net.mamoe.mirai.internal.message.protocol.MessageProtocolFacade$INSTANCE.preprocessAndSendOutgoing(MessageProtocolFacade.kt) ~[mirai-core-jvm-2.13.0-RC.jar:2.13.0-RC] at net.mamoe.mirai.internal.contact.AbstractUserKt.sendMessageImpl(AbstractUser.kt:263) ~[mirai-core-jvm-2.13.0-RC.jar:2.13.0-RC] at net.mamoe.mirai.internal.contact.CommonGroupImpl.sendMessage$suspendImpl(GroupImpl.kt:203) ~[mirai-core-jvm-2.13.0-RC.jar:2.13.0-RC] at net.mamoe.mirai.internal.contact.CommonGroupImpl.sendMessage(GroupImpl.kt) ~[mirai-core-jvm-2.13.0-RC.jar:2.13.0-RC] at net.mamoe.mirai.contact.Group$sendMessage$1.invoke(Group.kt) ~[mirai-core-api-jvm-2.13.0-RC.jar:2.13.0-RC] at net.mamoe.mirai.contact.Group$sendMessage$1.invoke(Group.kt) ~[mirai-core-api-jvm-2.13.0-RC.jar:2.13.0-RC] at kotlin.coroutines.intrinsics.IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$1.invokeSuspend(IntrinsicsJvm.kt:205) ~[kotlin-stdlib-1.6.21.jar:1.6.21-release-334(1.6.21)] at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlin-stdlib-1.6.21.jar:1.6.21-release-334(1.6.21)] at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:115) ~[kotlin-stdlib-1.6.21.jar:1.6.21-release-334(1.6.21)] at me.him188.kotlin.jvm.blocking.bridge.internal.RunSuspendKt.$runSuspend$(RunSuspend.kt:18) ~[kotlin-jvm-blocking-bridge-runtime-jvm-2.1.0-170.1.jar:na] at net.mamoe.mirai.contact.Group.sendMessage(Group.kt) ~[mirai-core-api-jvm-2.13.0-RC.jar:2.13.0-RC] at cs.whu.qqbot.web.RemindController.remind(RemindController.java:67) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.23.jar:5.3.23] at javax.servlet.http.HttpServlet.service(HttpServlet.java:681) ~[tomcat-embed-core-9.0.65.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23] at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.65.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
这个是超出了QQ的消息长度限制吗?除了分开发送有没有其他解决方案啊?
-
RE: 设备信息device.json怎么用啊?
@404-Error 搞定了,记录一下我的解决方案,比较佛系
- 手机QQ双开,在新的QQ上重新登录账号,会有一个滑动验证码和短信验证码的过程
- 在设备管理中删除之前的mirai设备
- 删除项目里边的device.json
- 重新登录,本地登录失败
- 看到手机QQ上有一个安全登录检查,处于没打开的状态→改成打开
- 电脑重新登录,成功
- device.json复制到服务器,尝试登录,失败
- 把cache文件夹下边的全复制过去(这一步感觉好像没啥用?)
- 隔了一会,服务器测试登录成功
我现在的心情:
这代码不能跑,为什么?
这代码能跑,为什么?稀里糊涂地就成功了
-
RE: 设备信息device.json怎么用啊?
@cssxsh 额,不太妙,本地修改登录协议为Android Pad,成功登录了,然后迁移到服务器的时候
- 忘了复制device.json,服务器提示下载最新版手机QQ,此时本地还能正常登录
- 复制device.json到服务器还是不行
- 隔了几个小时***
- 本地无法登录,提示下载最新版手机QQ
- 修改登录协议为iPad,提示下载最新版手机QQ
以上过程中手机QQ在线,没收到验证
版本是2.13.0-RC现在有办法解决这个问题吗?
-
RE: 设备信息device.json怎么用啊?
@cssxsh 我直接设置
fileBasedDeviceInfo();
代码 如下Bot bot = BotFactory.INSTANCE.newBot(qqId, qqPwd, new BotConfiguration() {{ fileBasedDeviceInfo(); }});
上午登录成功了,下午的时候换了台设备,同步了device.json,但是下午报错
2022-10-24 14:42:17 V/Net 2190915232: Send: wtlogin.login(9:password-login) 2022-10-24 14:42:17 W/Net 2190915232: Exception in resumeConnection. net.mamoe.mirai.internal.network.components.LoginFailedExceptionAsNetworkException: Error(bot=Bot(2190915232), code=235, title=温馨提示, message=当前QQ版本过低,请升级至最新版本后再登录。点击进入下载页面, errorInfo= ) at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$StateConnecting$startState$2.invokeSuspend(CommonNetworkHandler.kt:248) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:33) at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664) Caused by: net.mamoe.mirai.network.WrongPasswordException: Error(bot=Bot(2190915232), code=235, title=温馨提示, message=当前QQ版本过低,请升级至最新版本后再登录。点击进入下载页面, errorInfo= )
-
RE: 当前QQ版本过低,请升级至最新版本后再登录异常
我也碰见了
- 环境:
- Windows 10
- Spring Boot 2.7.4
- mirai-core-jvm 2.13.0-RC
- 错误描述
上午在新设备登录,生成了device.json
下午换了设备,复制了device.json,再登录的时候报错当前QQ版本过低
,部分错误贴出来了
2022-10-24 14:42:17 V/Net ----QQ号----: No server list cached. 2022-10-24 14:42:17 I/Net ----QQ号----: ECDH key is invalid, start to fetch ecdh public key from server. 2022-10-24 14:42:17 E/Net ----QQ号----: Failed to fetch ECDH public key from server, using default key instead java.lang.NoClassDefFoundError: okhttp3/Request$Builder * * * * * * * 2022-10-24 14:42:17 V/Net ----QQ号----: Send: wtlogin.login(9:password-login) 2022-10-24 14:42:17 W/Net ----QQ号----: Exception in resumeConnection. net.mamoe.mirai.internal.network.components.LoginFailedExceptionAsNetworkException: Error(bot=Bot(----QQ号----), code=235, title=温馨提示, message=当前QQ版本过低,请升级至最新版本后再登录。点击进入下载页面, errorInfo= ) at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$StateConnecting$startState$2.invokeSuspend(CommonNetworkHandler.kt:248) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:33) at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664) Caused by: net.mamoe.mirai.network.WrongPasswordException: Error(bot=Bot(----QQ号----), code=235, title=温馨提示, message=当前QQ版本过低,请升级至最新版本后再登录。点击进入下载页面, errorInfo= )
-
RE: 设备信息device.json怎么用啊?
@cssxsh 谢谢你的答复!
然后现在我大概明白了处理登录失败可以重写
LoginSolver
第一个问题不是很清楚,就是我现在有了device.json,我要怎么用呢?就是官方文档里边的// Kotlin deviceInfo = { bot -> /* create device info */ } // Java setDeviceInfo(bot -> /* create device info */)
里边的
create device info
这个怎么去创建?如果是新建一个类的话,我保存下来的json文件中
device.json[data][version]
下边是没有sdk值的,但是新建类需要这个值,截图贴在上边了 -
设备信息device.json怎么用啊?
有看到官网教程是
// Kotlin deviceInfo = { bot -> /* create device info */ } // Java setDeviceInfo(bot -> /* create device info */)
但是这里的
create device info
是怎么操作呢?
有尝试过手动去创建DeviceInfo这个类,但感觉很麻烦,而且DeviceInfo.Version这个类中还有个变量sdk,但是生成的json文件里边没有,如下图所示
最后还有一个问题,我能不能在登录失败时直接抛出异常,而不是现在的等待验证码?因为我想直接放在服务器上,如果失败直接告诉用户,然后让用户去操作