Use interface for JavaFriendly APIs;
Deprecate event responder in Bot in the favor of their member functions;
Deprecate `Bot.queryUrl(image: Image)`` in the favor of the extension `Image.queryUrl`
Rework `ExternalImage`, introduce `ReusableInput` for multiple attempts when uploading images;
Add `BotConfiguration.fileCacheStrategy`, defaults use cache system from host OS;
Introduce `DeferredReusableInput` for `*.toExternalImage` on JVM.
Deprecate `*.suspendToExternalImage` as no longer need to be suspend.
Open input only when required, close input after uploading files, fix#302
* 支持监听优先级, 事件传递拦截
* Fix test
* 并发
* 优先级&并发
* Test
* Fix unused
* To GlobalEventListeners
* Add tests
* intercept with subscribeAlways
* test listener.complete()
* Add functions
* Fix test and add new test
* Test concurrent listening
* Test concurrent listening
* update broadcast
* Fix Boom
Co-authored-by: Him188 <Him188@mamoe.net>
Introduce `Friend` extending `User`
Introduce `User` acting as the superclass of `Friend` and `Member`
Add extensions `Member.asFriend`, etc.
Remove specialized `Contact.hashCode` and `Contact.equals`, inherit from `kotlin.Any`
Specify `toString` behavior in abstract `Contact` classes, instead of in implementation classes.
Add virtual member `Contact.sendMessage(String)`
Migrate the project from using `QQ` to `Friend`
Remove multiplatform Contact class structure, keep them common.
Remove extension `Long.at` in `GroupMessage`, `QQ.at` in `ContactMessage`.
Add `At.asMember()` in `GroupMessage`.
Make `calculateGroupUinByGroupCode`, `calculateGroupCodeByGroupUin` static on JVM.