cyanray / mirai-cpp

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

关于VoiceMessage.Url() #153

Closed misaka-20002 closed 1 year ago

misaka-20002 commented 1 year ago

MessageChain mc; VoiceMessage vc; string url = "http://music.163.com/song/media/outer/url?id=" + commands[1] + ".mp3"; vc.Url(url); mc.Add<VoiceMessage>(vc); bot.SendMessage(m.Sender.Group.GID,mc); 会弹emptyMessage错误 然后发现在VOiceMessage类里面 调用VoiceMessage.Url(string)的时候是能设定url_的 然而在稍后的ToJson()里面发现url_变为空,造成了emptyMessage

misaka-20002 commented 1 year ago

image 第一行是在Url()函数里面执行了std::cout<<url<<std::endl; 第二行空行是在ToJson()里面的std::cout<<url<<std::endl; 然后第三行就报错emptyMessage

misaka-20002 commented 1 year ago

问题应该在VoiceMessage.Set(json)里面 删掉里面赋值为空的语句似乎就没问题了

misaka-20002 commented 1 year ago

JSON input: {"base64":null,"length":17676662194178179840,"path":null,"type":"Voice","url":null,"voiceId":null}MiraiBot& bot = m.GetMiraiBot(); MessageChain mc; VoiceMessage vc; string url = "http://music.163.com/song/media/outer/url?id=" + commands[1] + ".mp3"; vc.Url(url); mc.Add<VoiceMessage>(vc); bot.SendMessage(m.Sender.Group.GID,mc); return ""; 不清楚是我写炸了还是mirai-cpp的bug 调用Voicemessage.Url()之后加到MessageChain里面再发送结果在mah上收到的url是null,length也不为0