tiemoxishi
tiemoxishi
找到了解决方法,原来是需要在mirai-api-http的配置文件中这样去写 adapters: \- http \- ws 不过还有一件事情想请问一下,在最新版本中未提供判断是否登录成功的API,如何判断指定BOT是否已上线?
 现在出现了这样的一个情况,mirai-cpp已经connect成功,但是无法获取事件,这个情况应该如何排查问题呢? 现在connect代码已经修改成这样了,不过需要提醒一下,我之前出现的那个情况,没有在mirai-http-api中开启ws时connect不会投递异常 ``` do { try { pBOT->Connect(opts); break; } catch (const std::exception& ex) { std::this_thread::sleep_for(1s); } } while (true);
这是我的代码,如果connect会跳出循环,输出login successful,我是用一个程序控制多个bot,不知道这样写是否可以?(在之前的版本是可以的,我之前使用的是1.x的版本,昨天所有QQ全部提示使用非官方版本QQ冻结了,所以更新至最新版本) ``` for (auto& v : robot_list) { std::thread([v] { MiraiBot* pBOT = new MiraiBot; g_umapBOT[v.strUser] = pBOT; SessionOptions opts; // 使用 Set 函数赋予值 opts.BotQQ.Set(QQ_t(std::stoull(v.strUser))); opts.EnableVerify = false; opts.HttpPort...
依然还是不行的,没有阻塞标准输出的,因为多数BOT可以接收到事件并且输出内容,我现在把getchar();也去掉了,还是不行。 另外我发现还有一个情况,我在这里打印输出的bot qq每次打印的全部都是相同的,可以确定输出信息时BOTQQ肯定不是输出的那个。
没有解决哦,最终我换回了1.x版本。 我出现问题的环境是使用mcl最新版本,登录多个bot,mirai-cpp都可以connect成功,但是只能收到一个bot的事件,由于时间原因我没有检查到底是mirai-http-api的问题,还是mirai-cpp的问题。