Nambers / MiraiCP

c++ SDK of Mirai
https://eritque-arcus.tech/MiraiCP/
GNU Affero General Public License v3.0
177 stars 31 forks source link

建议把tools.h中的At函数修改为inline以解决在Procession.cpp中调用时出现的多重定义问题 #10

Closed ARKMIO closed 3 years ago

ARKMIO commented 3 years ago

/At一个群成员/ inline string At(Member a) { /返回at这个人的miraicode/ return "[mirai:at:" + to_string(a.id) + "]"; } /用qq号at一个群成员/ inline string At(long a) { /返回at这个人的miraicode/ return "[mirai:at:" + to_string(a) + "]"; }

ARKMIO commented 3 years ago

或者把实现放到tools.cpp中

ARKMIO commented 3 years ago

还有一个BUG inline string At(long a) { /返回at这个人的miraicode/ return "[mirai:at:" + to_string(a) + "]"; }

参数如果是Long,at 10位QQ的用户,会出现 溢出 所以应该改为 inline string At(unsigned long a) { /返回at这个人的miraicode/ return "[mirai:at:" + to_string(a) + "]"; }

ARKMIO commented 3 years ago

不过现在QQ号已经很大了 3开头的10位之类的,unsigned long 感觉也会溢出

Nambers commented 3 years ago

不过现在QQ号已经很大了 3开头的10位之类的,unsigned long 感觉也会溢出

喔这个我到没留意,不过jlong是_int64的,我把全部都统一成unsigned long long类型

ARKMIO commented 3 years ago

image 为什么现在一收到图片就是一堆红,虽然不影响使用

Nambers commented 3 years ago

MessageSource序列化问题,修好可能没那么快

ARKMIO commented 3 years ago

不过我感觉QQ依然使用的是32位的无符号数unsigned long应该够用,看了下 没有超过 4294967295 的QQ号

Nambers commented 3 years ago

嗯 不过之后谁知道呢,既然传输的jlong已经是_int64了,干脆也用unsigned long long了 https://github.com/Nambers/MiraiCP/commit/89cf5777bf1b3b4aab6bd17b779adff8a5320385

Nambers commented 3 years ago

或者也可以考虑用int[]来存吧

Nambers commented 3 years ago

序列化报错转移到该问题 #11 其余问题已解决 会跟着2.4.5-patch-1发布