cyanray / mirai-cpp

本项目为 mirai-api-http 的 C++ 封装,方便使用 C++ 开发基于 mirai-api-http 插件。
GNU Affero General Public License v3.0
148 stars 38 forks source link

Command.Member->Group.GID 可能为空 #147

Closed HelloGwkki closed 1 year ago

HelloGwkki commented 1 year ago

机器人正常运行接收到 Command 事件后尝试执行

bot.SendMessage(cmd.Member->Group.GID, cmd.Args);

报错信息:Cannot access value of empty optional

如何解决?是否有其他获取 GID 的方式?

cyanray commented 1 year ago

好像是(太久没碰这个项目了)因为 Command 可能来自群组消息也可能来自好友消息,如果是群组消息,cmd.Member 才不为 std::nullopt。

Command 部分的功能我没用过,甚至不知道是 mah 的问题还是我实现上有问题。

也许有空我会看看……

HelloGwkki commented 1 year ago

好像是(太久没碰这个项目了)因为 Command 可能来自群组消息也可能来自好友消息,如果是群组消息,cmd.Member 才不为 std::nullopt。

Command 部分的功能我没用过,甚至不知道是 mah 的问题还是我实现上有问题。

也许有空我会看看……

我的 Command 事件是在 GroupMessage 事件里使用 bot.SendCommand(tools.spilt(msg.Message Chain.GetPlainText(), " ")) 发送的(因为不太会 Command 事件,文档也没怎么看懂)

个人猜想是因为 bot.SendCommand 无法获得 Member,所以在与 mah 沟通时也无法传递 Member.

cyanray commented 1 year ago

这样的话,你只能通过别的方法传递 GID了,比如通过 Command 参数。