Closed Yastruhank closed 2 years ago
检查一下mah的配置文件,有没有开启ws(websocket)
内容大概是:
adapter:
- http
- ws
理论上没开启ws应该要抛出异常,但是不知道为何没有抛出异常。(难以抽出时间维护该项目,该问题可能长期存在)
检查一下mah的配置文件,有没有开启ws(websocket)
内容大概是:
adapter: - http - ws
理论上没开启ws应该要抛出异常,但是不知道为何没有抛出异常。(难以抽出时间维护该项目,该问题可能长期存在)
mah的配置文件中是开启了ws的,并且在mirai主程序的控制台输出中也显示 Mirai HTTP API: adaptors: [http,ws]
是所有事件都无法触发回调函数吗,具体是哪个事件呢? 有试过 FriendMessage, GroupMessage, Message 这类事件吗,有些不常用事件缺乏测试,可能哪里写错了没发现导致无法触发。
也试试捕捉事件解析错误:
bot.On<EventParsingError>([&](EventParsingError e)
{
try
{
e.Rethrow();
}
catch (const std::exception& ex)
{
cout << "解析事件时出现错误: " << ex.what() << endl;
}
});
更有可能是网络问题,检查 hostname,port 有没有设置错误。
是所有事件都无法触发回调函数吗,具体是哪个事件呢? 有试过 FriendMessage, GroupMessage, Message 这类事件吗,有些不常用事件缺乏测试,可能哪里写错了没发现导致无法触发。
也试试捕捉事件解析错误:
bot.On<EventParsingError>([&](EventParsingError e) { try { e.Rethrow(); } catch (const std::exception& ex) { cout << "解析事件时出现错误: " << ex.what() << endl; } });
更有可能是网络问题,检查 hostname,port 有没有设置错误。
是所有事件都无法触发,包括例程也是。这个函数我也试了,也没有被触发。hostname和port应该没有配置出错。请问程序有日志系统之类的东西用来分析吗?
是所有事件都无法触发回调函数吗,具体是哪个事件呢? 有试过 FriendMessage, GroupMessage, Message 这类事件吗,有些不常用事件缺乏测试,可能哪里写错了没发现导致无法触发。 也试试捕捉事件解析错误:
bot.On<EventParsingError>([&](EventParsingError e) { try { e.Rethrow(); } catch (const std::exception& ex) { cout << "解析事件时出现错误: " << ex.what() << endl; } });
更有可能是网络问题,检查 hostname,port 有没有设置错误。
是所有事件都无法触发,包括例程也是。这个函数我也试了,也没有被触发。hostname和port应该没有配置出错。请问程序有日志系统之类的东西用来分析吗?
那就只能是网络问题了。
你可以试着在 mirai_bot.cpp 的这一行 打断点,看看新事件到达时会不会触发断点,如果不会,说明 Websocket 没成功建立连接。
然后在 websocketClient.cpp 的这一行打断点,检查局部变量 response_buffer 的内容。(我猜测可能还没执行到这里就抛出异常了)
是所有事件都无法触发回调函数吗,具体是哪个事件呢? 有试过 FriendMessage, GroupMessage, Message 这类事件吗,有些不常用事件缺乏测试,可能哪里写错了没发现导致无法触发。 也试试捕捉事件解析错误:
bot.On<EventParsingError>([&](EventParsingError e) { try { e.Rethrow(); } catch (const std::exception& ex) { cout << "解析事件时出现错误: " << ex.what() << endl; } });
更有可能是网络问题,检查 hostname,port 有没有设置错误。
是所有事件都无法触发,包括例程也是。这个函数我也试了,也没有被触发。hostname和port应该没有配置出错。请问程序有日志系统之类的东西用来分析吗?
那就只能是网络问题了。
你可以试着在 mirai_bot.cpp 的这一行 打断点,看看新事件到达时会不会触发断点,如果不会,说明 Websocket 没成功建立连接。
然后在 websocketClient.cpp 的这一行打断点,检查局部变量 response_buffer 的内容。(我猜测可能还没执行到这里就抛出异常了)
有进入第一个断点,在第二个断电response_buffe的内容是101 switching protocois
是所有事件都无法触发回调函数吗,具体是哪个事件呢? 有试过 FriendMessage, GroupMessage, Message 这类事件吗,有些不常用事件缺乏测试,可能哪里写错了没发现导致无法触发。 也试试捕捉事件解析错误:
bot.On<EventParsingError>([&](EventParsingError e) { try { e.Rethrow(); } catch (const std::exception& ex) { cout << "解析事件时出现错误: " << ex.what() << endl; } });
更有可能是网络问题,检查 hostname,port 有没有设置错误。
是所有事件都无法触发,包括例程也是。这个函数我也试了,也没有被触发。hostname和port应该没有配置出错。请问程序有日志系统之类的东西用来分析吗?
那就只能是网络问题了。 你可以试着在 mirai_bot.cpp 的这一行 打断点,看看新事件到达时会不会触发断点,如果不会,说明 Websocket 没成功建立连接。 然后在 websocketClient.cpp 的这一行打断点,检查局部变量 response_buffer 的内容。(我猜测可能还没执行到这里就抛出异常了)
有进入第一个断点,在第二个断电response_buffe的内容是101 switching protocois
看起来没有问题啊,图中显示你收到了刚建立连接时MAH发的一个包,试着给你的机器人发条消息触发消息事件,看看还能进入第一个断点吗。
会不会是因为网络原因断开连接了,记得处理 LostConnection 事件。
是所有事件都无法触发回调函数吗,具体是哪个事件呢? 有试过 FriendMessage, GroupMessage, Message 这类事件吗,有些不常用事件缺乏测试,可能哪里写错了没发现导致无法触发。 也试试捕捉事件解析错误:
bot.On<EventParsingError>([&](EventParsingError e) { try { e.Rethrow(); } catch (const std::exception& ex) { cout << "解析事件时出现错误: " << ex.what() << endl; } });
更有可能是网络问题,检查 hostname,port 有没有设置错误。
是所有事件都无法触发,包括例程也是。这个函数我也试了,也没有被触发。hostname和port应该没有配置出错。请问程序有日志系统之类的东西用来分析吗?
那就只能是网络问题了。 你可以试着在 mirai_bot.cpp 的这一行 打断点,看看新事件到达时会不会触发断点,如果不会,说明 Websocket 没成功建立连接。 然后在 websocketClient.cpp 的这一行打断点,检查局部变量 response_buffer 的内容。(我猜测可能还没执行到这里就抛出异常了)
有进入第一个断点,在第二个断电response_buffe的内容是101 switching protocois
看起来没有问题啊,图中显示你收到了刚建立连接时MAH发的一个包,试着给你的机器人发条消息触发消息事件,看看还能进入第一个断点吗。
会不会是因为网络原因断开连接了,记得处理 LostConnection 事件。
发送消息后有进入第一个断点
但是没有进入回调函数
这问题有点奇怪,我也看不懂了……
截图里你收到了 FriendInputStatusChangedEvent 事件,第一个断点你是否进入了两次?(第二次才是真正的好友消息事件)
试试 bot.On
也可以加Q群 1013323391,可能交流方便点。// TODO: 将真实原因和解决方案回复在该帖子。
错误原因:注释了 magic_enum 的断言,虽然通过编译,但是 magic_enum 不能正常工作。 解决方法:升级 MinGW
magic_enum 对编译器的要求:
你好。我在成功与mirai-apt-http建立连接之后尝试注册监听事件,但是事件发生后,注册的回调函数并没有被执行。在mirai主程序处能看到事件,并且不需要监听的发送消息功能也能正常使用,请问这是怎么回事呢?