Commit Graph

3014 Commits

Author SHA1 Message Date
Him188
93ae89500a Fix EventBroadcasterPacketHandler.impl 2021-09-01 13:55:39 +08:00
Him188
4efbec6570 Make UnconsumedNoticesAlerter disabled by default 2021-09-01 13:55:39 +08:00
Him188
edb1713f91 Add TraceLoggingNoticeProcessor 2021-09-01 13:55:39 +08:00
Him188
2696f0b95e Remove .debug in mirai.network.debug.notice.pipeline.log.full 2021-09-01 13:55:39 +08:00
Him188
61c764bfe0 Ensure all items in MultiPacket are visited 2021-09-01 13:55:39 +08:00
Him188
9c272ebf1e Migrate more transformers to NoticeProcessorPipeline 2021-09-01 13:55:39 +08:00
Him188
edf1bc9a2e Migrate more transformers to NoticeProcessorPipeline 2021-09-01 13:55:39 +08:00
Him188
e097c5ab9d Add MutableProcessResult; remove locks 2021-09-01 13:55:39 +08:00
Him188
d15767fa9b Remove outdated todo in FriendNoticeProcessor 2021-09-01 13:55:39 +08:00
Him188
39773cd763 Move bkn from QQAndroidBot to WLoginSigInfo 2021-09-01 13:55:39 +08:00
Him188
8e947cd4e0 Delete empty ProtoBuf.kt 2021-09-01 13:55:39 +08:00
Him188
1b80fbc1e6 Redesign notice handling and introduce NoticeProcessorPipeline part 3:
- Extract `SyncController`;
- Add super type `ProtocolStruct` to `ProtoBuf` and `JceStruct` to standardize `NoticeProcessorPipeline.process`
- and other implementations for pipeline
2021-09-01 13:55:39 +08:00
Him188
be4423c993 Fix ByteArray.loadAs 2021-09-01 13:55:39 +08:00
Him188
d6b4bb9fb5 Remove Group.newAnonymousMember 2021-09-01 13:55:39 +08:00
Him188
089d0eed8c Improve performance 2021-09-01 13:55:39 +08:00
Him188
09265190e9 Add UnconsumedNoticesAlerter and cleanup
Co-authored-by: Karlatemp <karlatemp@vip.qq.com>
2021-09-01 13:55:39 +08:00
Him188
56cbe2d8a2 Redesign notice handling and introduce NoticeProcessorPipeline part 2
Do not broadcast StrangerAddedEvent if added twice, fix stranger scope not closed

Do not add new instance if there is already one

Close and remove corresponding stranger instance if there is new friend.
2021-09-01 13:55:39 +08:00
Him188
e1ffaa5410 Fix incorrect coroutine scope created for contacts in IMirai.newFriend and IMirai.newStranger 2021-09-01 13:55:39 +08:00
Him188
dc54679acb Redesign notice handling and introduce NoticeProcessorPipeline 2021-09-01 13:55:39 +08:00
Him188
d7b493cd34 Use internal types in implementations of properties in Bot 2021-09-01 13:55:39 +08:00
Him188
975dd8e50b Use NormalMemberImpl for properties of GroupImpl 2021-09-01 13:55:39 +08:00
Him188
9590abd702
Try to fix network when sending lots of packets 2021-08-27 15:40:53 +08:00
Him188
7358d00bcf Allow NetworkHandler.State.LOADING in SelectorRecoveryTest 2021-08-26 08:01:35 +08:00
RainChan
06c1652d53
Bypass BC deprecation check on Android (#1481)
Co-authored-by: Karlatemp <karlatemp@vip.qq.com>

Co-authored-by: Karlatemp <karlatemp@vip.qq.com>
2021-08-25 15:07:56 +08:00
Karlatemp
fe89533aed
Drop unnecessary anonGroupMsg 2021-08-24 21:34:37 +08:00
Karlatemp
beb83885c8
Simplify logic 2021-08-24 21:31:13 +08:00
Karlatemp
b3112dada3
Right exception when bot was muted 2021-08-23 10:59:23 +08:00
Karlatemp
fc8fd70014
Optimized IMirai.getUin() 2021-08-20 01:15:16 +08:00
Him188
98bca6ae44 Allow NetworkHandler.State.LOADING in SelectorRecoveryTest 2021-08-17 20:24:06 +08:00
Him188
13484c7a7a Remove redundant TODOs and unused classes 2021-08-13 16:21:46 +08:00
Him188
5950e9e1e8 Improve logging: use Log4j internally and support markers
Migrate usages of `MiraiLogger.create` to new API
apiDump for new logging
2021-08-11 15:24:32 +08:00
Him188
2562099884 Ensure backward-compatibility for AudioExtraData 2021-08-08 15:44:53 +08:00
Him188
40bbab4b5e Use mirai TestOnly annotation in ServerListImpl.<init> 2021-08-08 15:09:21 +08:00
Him188
8d8aca3f1c Introduce Audio for new API, revert changes on Voice 2021-08-05 21:48:20 +08:00
RainChan
bd61c1e80d
支持在踢出群成员时选择是否拉黑 (#1457)
* 支持在踢出群成员时选择是否拉黑

* fix binary-compatibility for kick NormalMember

* change doc
2021-08-03 22:20:53 +08:00
RainChan
615092e80b
修复默认情况下移除群成员即拉黑的问题 2021-08-03 20:06:12 +08:00
Karlatemp
6079cbb6e0
Fix ForwardMessage not rendering when message contains & 2021-08-02 23:16:27 +08:00
Him188
d8819bd615 Add tests for AccountSecrets 2021-08-02 14:46:55 +08:00
Him188
2ae12f4d37 Hold strong reference in RemoteFileImpl.contact 2021-08-02 13:52:48 +08:00
Karlatemp
f95482989d
Fix message rendering error with not-head QuoteReply; fix #1451 2021-07-31 19:20:09 +08:00
Him188
4a2b8ac92c Fix cancellation check in AbstractKeepAliveNetworkHandlerSelector 2021-07-31 17:50:56 +08:00
Him188
c19265b954 Inline NetworkHandler.isOk 2021-07-31 17:50:23 +08:00
Him188
3fc6fbed85 Change all system property names mirai.debug.network.* to mirai.network.* 2021-07-28 11:45:43 +08:00
Him188
24d52bbe90 Convert ComponentKey.componentName and .smartToString to extension 2021-07-28 11:04:32 +08:00
Him188
2d5c434146 Delete package context 2021-07-28 10:58:04 +08:00
Him188
3772861e17 Move AccountSecrets from package context to components 2021-07-28 10:57:39 +08:00
Him188
2995e47f40 Move SsoProcessorContext from package context to components 2021-07-28 10:55:26 +08:00
Him188
0e45deef68 Move SsoSession from package context to components 2021-07-28 10:53:03 +08:00
Him188
4f1a22cd20 Move BdhSession from package context to components 2021-07-28 10:52:02 +08:00
Him188
3b5ec941b3 Always throw MaxAttemptsReachedException when for consistency;
Correctly count failure attempts;
Tolerant `NetworkException` thrown while `resumeInstanceCatchingException`, fix #1361
2021-07-23 13:19:28 +08:00
Karlatemp
2a641415a7 Fix network not reconnect when received ReqMSFOffline 2021-07-21 00:54:49 +08:00
Karlatemp
b74b6da8a3 Add testing 2021-07-21 00:54:49 +08:00
Karlatemp
6ab2d7e4c0 Flatten NetworkException 2021-07-21 00:54:49 +08:00
Karlatemp
2730c80d2d
Fix logging of MessageSyncEvent, fix #1380 2021-07-19 09:38:29 +08:00
Karlatemp
3a9889b8c0 Decode html entities when polling announcements 2021-07-16 14:52:09 +08:00
Karlatemp
d40b74b311
Fix announcement publishing with sendToNewMember=true 2021-07-15 22:26:09 +08:00
sandtechnology
95a36443fe Fix #1192 again, taken suggestion from @AdoptOSS and @takayama-lily 2021-07-12 02:46:40 +08:00
sandtechnology
69a48987e7 Revert "Fix #1192, request admin when loading groups (#1257)"
This reverts commit ad7f95d0
2021-07-12 02:46:40 +08:00
sandtechnology
b2d6e7423a
Fix #1405, before it is a compiler undefined behavior (#1408) 2021-07-11 10:07:41 +08:00
Him188
dd606c3022 Improve performance of hexToBytes and simplify similar extensions 2021-07-07 15:00:28 +08:00
Him188
a0baa65193 Announcement API: Refine naming of properties:
- pinned -> isPinned
- popup -> showPopup
- needConfirm -> requireConfirmation

- readMemberNumber -> confirmedMembersCount
- publishTime -> publicationTime
- isAllRead -> allConfirmed
2021-07-06 19:45:51 +08:00
Him188
9d9b9ce7e2 Change AnnouncementImage's width and height to Int 2021-07-06 19:12:45 +08:00
Him188
51d354c5e9 Improve Announcement logging 2021-07-06 19:12:45 +08:00
Him188
d10cd270e8 Make AnnouncementParameters better for Java 2021-07-06 19:12:45 +08:00
Him188
5c89645056 Add a stable factory-method for AnnouncementImage 2021-07-06 19:12:45 +08:00
Him188
b239c57679 Re-order parameters of AnnouncementImage 2021-07-06 19:12:45 +08:00
Him188
47192f3ee3 Make Announcements.asStream not suspend 2021-07-06 19:12:45 +08:00
Him188
cf7b2a14a1 Catch exceptions when fetching group announcements and log with logger 2021-07-06 19:12:45 +08:00
Him188
b319e2bc5c Remove parameter title of Announcement 2021-07-06 19:12:45 +08:00
Him188
4a2b510a70 Remove announcements' low-level API and bundle them into AnnouncementProtocol, improve code style and maintainability 2021-07-06 19:12:45 +08:00
Him188
f5ce64ba4f Redesign Announcement API
Co-authored-by: Karlatemp <karlatemp@vip.qq.com>
2021-07-06 19:12:45 +08:00
Him188
d6c4b5456f Remove inappropriate weak references 2021-07-06 19:12:10 +08:00
Him188
ddcac473dd Improve logging on updating account secrets 2021-07-05 17:50:38 +08:00
sandtechnology
b7869888f0
StatSvc.Register: Provide SSO Ip and correct logic (#1240)
* StatSvc.Register: Provide SSO Ip and correct logic

* Remove unnessacy launch

Co-authored-by: Him188 <Him188@mamoe.net>

* Test for last polled ip

* Normal login test for last ip

* Fix test failed and remove debug code

* Fix unit test and build

* Optimize pollCurrent and pollAny method

* Use uOldSSOIp and uNewSSOIp only when protocol is PHONE

* Fix bug in toIpV4Long

* Fix new line in NettyBotNormalLoginTest.kt

* Using Inet4Address and toInt method for toIpV4Long

* Return Unsigned Long for toIpV4Long

* Remove unnessacy synchronized annotation

Co-authored-by: Him188 <Him188@mamoe.net>

* Using createAddress method instead of address

* Moving lastDisconnectedIp and lastConnectedIp to Server
List

* Fix build

* Fix build and remove empty line

* Keeping naming consistent

* Use bot.components instead of overrideComponents

Co-authored-by: Him188 <Him188@mamoe.net>

* Revert overrideComponents changes and add comment for overrideComponents

Co-authored-by: Him188 <Him188@mamoe.net>
2021-07-03 22:04:49 +08:00
Him188
2713127466 Fix reconnection on Heartbeat timeout: add PacketTimeoutException 2021-07-03 21:57:12 +08:00
Him188
7b42fc6888 Fix recalling friend message, fix #1293 2021-07-02 22:36:24 +08:00
Him188
6b18a6fea9 Improve PbMessageSvc.PbMsgWithDraw logging, helps #1293 2021-07-02 22:18:15 +08:00
Him188
ec5ad17ac4 Improve ForceOfflineException.message: use canonical message tips 2021-07-02 21:43:48 +08:00
Him188
8647d38b34 Add MessageReceiptTest for #1371 2021-07-02 21:06:31 +08:00
Him188
a59d7208cb Add getMiraiImpl to replace direct calls of MiraiImpl.INSTANCE 2021-07-02 21:06:31 +08:00
Him188
91a9e63877 Do light refine after constructing MessageReceipt, fix #1371 2021-07-02 21:06:31 +08:00
Karlatemp
a4b62b0909
Voice serialization (#1368)
* Voice serialization

* Implement `hashCode` and `equals` for `Voice`

* Update test

* Update test

* Add note of `PttMessage.pttInternalInstance`

* Fix logic of `Voice.equals`
2021-07-02 12:10:20 +08:00
Him188
5aae46218f Do not throw exception from PacketCodec but log with CoroutineExceptionHandler 2021-07-02 01:18:40 +08:00
Him188
b90f86258c Add property recoverable to HeartbeatFailedException, to control recoverability.
Fix `SelectorRecoveryTest`
2021-07-02 01:18:40 +08:00
Him188
adc39a93b5 Update copyright 2021-07-02 00:39:10 +08:00
Him188
b9eb654a51 Reformat and cleanup code 2021-07-02 00:39:10 +08:00
Him188
d114d0a2e6 Optimize BotInitProcessor and add tests 2021-07-02 00:39:10 +08:00
Him188
b78c276aef ChunkedFlowSession: Ensure channel is closed on completion 2021-07-02 00:39:10 +08:00
Him188
fa9d236949 Avoid using TopLevel logger in tests 2021-07-02 00:39:10 +08:00
Him188
f379a617fd NetworkHandlerSupport: catch all exceptions in coroutine scope and direct it to network logger 2021-07-02 00:39:10 +08:00
Him188
6012f33574 Add selector logging, helps #1361 2021-07-02 00:39:10 +08:00
Him188
4d3a9e7cc5 Add SynchronizedStdoutLogger for tests 2021-07-01 11:06:58 +08:00
Him188
0d339c7303 Remove redundant suspension in BotOfflineEventMonitorImpl 2021-06-30 23:01:42 +08:00
Him188
e10155a7b3 AbstractKeepAliveNetworkHandlerSelector do not yield() but check for cancellation manually. 2021-06-30 23:01:22 +08:00
Him188
c4d129542f Unwrap CancellationException on JobAttachStateObserver.stateChanged0 2021-06-29 23:10:06 +08:00
Him188
f1bb7c566f Add generic type to SelectorNetworkHandler, improve test framework:
- Make `AbstractRealNetworkHandlerTest` sealed with subtypes;
  - `AbstractNettyNHTest`
  - `AbstractNettyNHTestWithSelector`
- Set `mirai.event.launch.undispatched` to `true` for network tests
- Use real `BotOfflineEventMonitor` in tests with selector
2021-06-29 22:47:56 +08:00
sandtechnology
2ce549e56f
Fix #1322, remove redundant cookie (#1372)
* Fix #1322, removed useless parms

* Add missed perms

* Remove redundant cookie
2021-06-28 19:19:18 +08:00
Karlatemp
eb5c7414d7
Add hashCode and equals for Image, close #1302 2021-06-26 16:29:40 +08:00
Karlatemp
f7170f2052
Delete unused internal AbstractImage 2021-06-26 16:17:53 +08:00
Karlatemp
ae54a5fb41
Private voice support (#1310)
* Support voice for private messaging

* typo

* Add extension functions for `uploadAsVoice`; Update KDocs

* Update KDoc

* Update error message

* Fix `C2CPttStoreBDH` error

* Deprecated `ExternalResource.uploadAsVoice(Contact): Voice`

* Update mirai-core-api/src/commonMain/kotlin/utils/ExternalResource.kt

* apiDump

Co-authored-by: Him188 <Him188@mamoe.net>
2021-06-26 10:02:23 +08:00
sandtechnology
d349c19c2e
StatSvc.SimpleGet: Decode the resp (#1241)
* StatSvc.SimpleGet: Decode the resp

* Close network on `StatSvc.SimpleGet.Response.Error`

* Use new `IncomingPacket`

Co-authored-by: Him188 <Him188@mamoe.net>
2021-06-25 20:29:28 +08:00
Him188
ce4373a322 Use Either for IncomingPacket.result 2021-06-25 20:11:41 +08:00
Him188
11ffb324c9 Add Either 2021-06-25 20:05:28 +08:00
Him188
b02fa15b33 Broadcast BotReloginEvent stably 2021-06-24 01:04:39 +08:00
Noire
b8de3f77ff
GroupAnnoucement (#1141)
* Add more comment about GroupAnnouncement.kt

* Edit comment about GroupAnnouncement.kt
Provide experimental api

* Api Dump

* After review

* Change to interface and API dump

* More change

* More change

* More more change

* Some change

* api dump

* Fix name

* Redesign Announcement public api

* Edit comment about GroupAnnouncement.kt
Provide experimental api

* After review

* Change to interface and API dump

* More change

* Modify to extension fun

* Fix sendAnnouncement and change place

* Change Group.deleteAnnouncement to group companion

* fix publish

* Api dump

* Reformat code

* Add `@since 2.7`

* Fix build

Co-authored-by: Him188 <Him188@mamoe.net>
2021-06-24 00:59:53 +08:00
Him188
a8dbd761eb Use start=UNDISPATCHED in launchRecovery 2021-06-24 00:42:57 +08:00
Him188
47f1ae8134 Enable tests NettyHandlerEventTest #1311 2021-06-23 15:44:52 +08:00
Him188
2e47740b1b Move setState from coroutine scope completion handler to network.close, fix #1311 2021-06-23 15:44:52 +08:00
Him188
8d4eb45386 Rearrange functions in NettyNetworkHandler 2021-06-23 15:44:52 +08:00
sandtechnology
636584cdd1
ECDH: Replacing old curve, thanks to MiraiGo (#1237)
* ECDH: Replacing old curve, thanks to MiraiGo

* Move ecdhWithPublicKey to EcdhInitialPublicKeyUpdater

* Making ECDHInitialPublicKey internal

* Remove useless log

* Improve message

Co-authored-by: Him188 <Him188@mamoe.net>

Co-authored-by: Him188 <Him188@mamoe.net>
2021-06-23 14:59:12 +08:00
sandtechnology
ad7f95d0f0
Fix #1192, request admin when loading groups (#1257)
* Fix #1192, request admin when loading groups

* Improve message

Co-authored-by: Karlatemp <karlatemp@vip.qq.com>

Co-authored-by: Karlatemp <karlatemp@vip.qq.com>
2021-06-23 14:58:56 +08:00
Karlatemp
509be910c0
Avoid resource leak 2021-06-22 18:14:29 +08:00
Karlatemp
d1fdddf9e6
Break network when received LoginFailedException; fix #1352 2021-06-22 13:37:54 +08:00
Him188
f2ca8e1eff Revert "Fix kt compiler errors (#1159)"
This reverts commit b227f719
2021-06-19 23:58:27 +08:00
Him188
c37457cafb Cleanup and move local serializable classes to top-level 2021-06-19 18:28:21 +08:00
Him188
813ef2b1e6 Remove redundant tests 2021-06-19 17:41:32 +08:00
Him188
b4b25be626 Simplify setState 2021-06-19 17:16:07 +08:00
Him188
f229757395 Redesign BotInitProcessor to adjust force offline adjacently after login 2021-06-19 15:20:49 +08:00
Him188
3cc0973edd Revert "Add PacketInterceptor"
This reverts commit 04656d7a
2021-06-19 14:52:26 +08:00
Him188
d654e95f0f Revert "Fix fast login"
This reverts commit 77e5e91f
2021-06-19 14:52:23 +08:00
Karlatemp
77e5e91fc4
Fix fast login 2021-06-19 02:30:06 +08:00
Karlatemp
04656d7a03
Add PacketInterceptor 2021-06-19 02:28:16 +08:00
Karlatemp
e816755414
Fix state switching when switching to CLOSED 2021-06-19 02:26:47 +08:00
Karlatemp
627e9baa6f
Fix NettyNetworkHandler debug message 2021-06-19 02:25:38 +08:00
Karlatemp
8b5b76e32e
Run BaseStateImpl.setState with lock 2021-06-19 02:24:59 +08:00
Him188
b33d1edf03 Add SingleEntrantLock 2021-06-19 00:29:54 +08:00
Him188
833c9d2c97 Do not turn state into Connecting in handlePipelineException 2021-06-19 00:06:14 +08:00
Him188
faed38da9e Do not set state to CLOSED multiple times on close 2021-06-19 00:06:14 +08:00
Him188
99d232efe8 Remove redundant synchronization in NetworkHandlerSupport.setState 2021-06-19 00:05:50 +08:00
Him188
eba6706b47 Allow to change whether LoggingStateObserver is enabled in runtime 2021-06-19 00:04:39 +08:00
Him188
997c3ea2cf Remove SsoProcessor.createObserverChain 2021-06-19 00:04:32 +08:00
Him188
b8b8cb1fad Make LoggingStateObserver into use 2021-06-19 00:04:24 +08:00
Him188
44bfe3dbb6 Make NetworkHandlerFactory fun interface 2021-06-19 00:04:22 +08:00
Him188
c6d9825cf6 Add name to StateObverse 2021-06-19 00:04:20 +08:00
Him188
fbf7142eaf Improve performance of StateObserver.chainOfNotNull 2021-06-19 00:04:10 +08:00
Him188
f1d58c4953 Fix CombinedStateObserver.beforeStateChanged 2021-06-19 00:04:05 +08:00
Him188
951f3b2bc4 Reduce CombinedStateObserver hierarchy: use List 2021-06-19 00:03:45 +08:00
sandtechnology
48f9ca0d48
Fix #1334, update pb and fix private image upload issue (#1335)
* Fix #1334, update pb and fix private image upload issue

* Keeping consistent in annotation

* Restore old comment

* Let extendinfo default to null
2021-06-19 00:00:16 +08:00
Him188
4d10338815 Do not add BotOfflineEventMonitor in SetStateTest 2021-06-17 00:20:41 +08:00
Him188
5efced6167 Move RECONNECT_DELAY to AbstractKeepAliveNetworkHandlerSelector and set it to 0 in tests 2021-06-16 19:49:17 +08:00
Him188
cde13062d9 Ensure network closed on initialization failure 2021-06-16 19:42:58 +08:00
Him188
fc477e0122 Do not wrap exception into ISE on reaching max attempts 2021-06-16 17:26:57 +08:00
Him188
a38f24cbe5 Redesign connection maintenance mechanism:
Reconnection is directed by `BotOfflineEvent`.

### Event Broadcasting

- PacketFactory `MessageSvcPushForceOffline` closes network with `ForceOfflineException`.
 - `network.close(cause)` pass the cause to state observer from `QQAndroidBot.stateObserverChain`, the observer broadcasts as follows:
   - Nothing if `cause` is `ForceOfflineException` or `BotClosedByEvent`(which is broadcast by user)
   - `BotOfflineEvent.Dropped` if cause is NetworkException and is recoverable(which is from Netty handlers)
   - `BotOfflineEvent.Force` if cause is `ForceOfflineException` is from the factory mentioned above.
   - `BotOfflineEvent.Active` otherwise(any other unexpected exceptions considered as an error)

### Deciding whether to reconnect

User can listen and change `BotOfflineEvent.reconnect` to decide. Default values are determined by `BotConfiguration`.

### Event listening

- Component `BotOfflineEventMonitor` listens `BotOfflineEvent`, logs the event for users, and launches a coroutine to do `network.resumeConnection` to notify the selector to renew an instance.
- `BotOnlineWatchdog` in `SelectorNetworkHandler` is removed.
- Selector now handles `maxAttempts` correctly in such a way that `awaitResumeInstance` does not throw exception until maximum attempts reached.
- On every attempt, new exceptions are logged to provide debugging information, and further duplications are ignored.
2021-06-16 16:58:20 +08:00
Him188
45ba713f73 Optimize HeartbeatFailedException.toString: show information of its cause 2021-06-16 03:09:21 +08:00
Him188
ab7c49a0d5 Remove log in BotClientHolderImpl 2021-06-16 03:06:54 +08:00
Him188
b219ba986e Review network ComponentStorage framework and improve connection logics, support reconnection on force offline (closes #1330, close #1331), and on bad network.
- Remove `FactoryKeepAliveNetworkHandlerSelector` and add `KeepAliveNetworkHandlerSelector`;
- Review the storage of `QQAndroidBotClient`, extract it as a `BotClientHolder`;
- Introduce bot-level components that lasts with the lifecycle of `Bot`, and network-level components accordingly;
- Dynamically re-create the context given to `NetworkHandler` in selector, to use network-level components, including `BotClientHolder`, that allows a simple reinitialization of `BotClient`;
- Handles the situation when physical network broken on logging in, giving a hint to user and halts the log-in process and transfer the responsibility of reconnecting to selector;
- Send logout only in `Bot.close` (manual close).
2021-06-16 03:00:50 +08:00
Him188
e65593b2af Add BeforeStateChangedObserver 2021-06-16 02:37:06 +08:00
Him188
23c1a67479 Add naming notes for StatSvc.Register in logging 2021-06-16 02:29:05 +08:00
Him188
ad4f7a6232 Show OutgoingPacket.displayName in logging 2021-06-16 02:28:51 +08:00
Him188
24ac4ffa95 Add ConcurrentComponentStorage builder 2021-06-16 01:52:42 +08:00
Him188
e6119e6301 Throw NoSuchComponentException with full details in CombinedComponentStorage.get 2021-06-16 01:52:27 +08:00
Him188
9933fab4c5 Add ComponentStorage?.withPrimary 2021-06-16 01:51:50 +08:00
Him188
f4ec905aff Make CombinedStateObserver.toString more readable 2021-06-16 01:51:26 +08:00
Him188
750ab0db37 Fix StackOverflowError on calling bot.client in tests with TestSsoProcessor, fix #1332 2021-06-15 20:47:50 +08:00
Him188
bebb786b9a Fix build 2021-06-13 11:10:12 +08:00
Him188
c9f98e46d7 Implement heartbeat periods and timeouts correctly, #1255 2021-06-13 10:59:11 +08:00
Him188
43b13d158f Implement HeartbeatStrategy, #1226 2021-06-13 10:50:55 +08:00
Karlatemp
e9d9d56489
Avoid network congestion 2021-06-11 21:19:35 +08:00
Karlatemp
05a8419fb7
Fix internal error in uploading private images; fix #1317 2021-06-10 22:49:24 +08:00
Him188
1e2ab736c2 Use bot.closeAndJoin() in tests 2021-06-08 17:13:37 +08:00
Him188
81258488cb Check isActive in BotOnlineWatchdog 2021-06-08 17:13:25 +08:00
Him188
300882ea18 Redesign ComponentStorage initialization for clearer tests 2021-06-08 17:13:15 +08:00
Him188
f9da72c136 Convert DEFAULT_BLACKLIST to function and initialize the immutable set only once 2021-06-08 16:16:01 +08:00
Him188
65a3ffc147 Rename ComponentScope.plus to .withFallback 2021-06-08 16:14:23 +08:00
Him188
c8def70594 Add bot.job as parent of NetworkHandlerSupport 2021-06-08 16:14:23 +08:00
Him188
5f7f350eb5 Close PacketDecodePipeline.channel on scope closure 2021-06-08 16:14:23 +08:00
Him188
ad3bd4cc0d Stop BotOnlineWatchdog if bot is closed 2021-06-08 12:19:05 +08:00
Him188
54a78313c8 Improve logging on exceptions and correctly handle CancellationException when Bot.close is invoked. 2021-06-08 12:18:40 +08:00
Him188
3e8fc8e1ec Do not pass failed IncomingPacket to PacketFactorys 2021-06-08 12:16:26 +08:00
Him188
725b502d9e Add notes for blacklist 2021-06-08 12:04:54 +08:00
Him188
a53f97cb6f Add OnlinePush.ReqPush to blacklist 2021-06-08 12:00:35 +08:00
Him188
56165c82aa Fix ignored friend message event logging, fix #1312 2021-06-08 12:00:20 +08:00
Him188
091906577a Add StatSvc.SimpleGet to DEFAULT_BLACKLIST 2021-06-08 11:25:36 +08:00
Him188
8312a5bc98 Temporarily disable NettyHandlerEventTest to make build success #1311 2021-06-07 22:03:12 +08:00
Him188
e0f9c311f2 Temporarily disable tests BotOffline from OK TO CLOSED and BotOfflineEvent after successful reconnection to make build success #1311 2021-06-07 22:00:22 +08:00
Him188
684b844b44 Move implementation of EventDispatcher.joinBroadcast to tests and mark it @TestOnly 2021-06-07 18:46:40 +08:00
Him188
9619338d5b Catch and forward event broadcasting to EventDispatcher 2021-06-07 18:18:07 +08:00
Him188
9cf45bd9ca Ignore MessageSvc.PushNotify in logging 2021-06-07 18:14:24 +08:00
Him188
271759b4c6 Fix ignorance of MultiPacket using blacklist 2021-06-07 18:14:10 +08:00
Him188
84fb928764 Add check for arguments of NetworkHandlerSupport.sendAndExpect 2021-06-07 17:47:40 +08:00
Him188
5ebd65e78d Change setStateImpl in the ordering:
1. Update current state
2. Close old state
3. Notify observer
4. Notify selector
2021-06-07 17:05:34 +08:00
Him188
02c9fd2fb0 Add SetStateTest 2021-06-07 13:36:27 +08:00
Him188
02681428c9 Review and migrate deprecated calls 2021-06-07 12:57:01 +08:00
Him188
b5db147985 Remove debugConf 2021-06-07 12:57:00 +08:00
Him188
e9c53eb5db Always close netty connection if StateLoading completed with an exception 2021-06-06 16:56:19 +08:00
Him188
91b5a5da58 Disable mirai.debug.network.state.observer.logging in tests 2021-06-06 16:35:56 +08:00
Him188
679e61e4d0 Use collectThrow instead of throw in SsoProcessor.SlowLoginImpl.login 2021-06-06 16:34:35 +08:00
Him188
756c805460 Fix typo 2021-06-06 16:21:50 +08:00
Him188
e7521028d1 Fix tests 2021-06-06 13:58:46 +08:00
Him188
dadff42718 Unwrap NetworkException on logon failure 2021-06-06 13:58:46 +08:00
Him188
7739c4db80 Close network in MessageSvcPushForceOffline properly by throwing ServerClosedException 2021-06-06 13:58:46 +08:00
Him188
0d28772275 Do not listen BotOfflineEvent to close network 2021-06-06 13:58:45 +08:00
Him188
137e1a1235 Fix network scopes and exception handling. Support recovering after system hibernation and network failure. 2021-06-05 16:05:41 +08:00
Him188
e788aa09f7 Add awaitStateChange 2021-06-05 16:05:41 +08:00
Him188
c6075ec299 Refine state observer for events 2021-06-05 16:05:41 +08:00
Him188
061023bc4d Rearrange NetworkHandlerSupport 2021-06-05 16:05:41 +08:00
Him188
8ae2e04f02 Improve implementation docs 2021-06-05 16:05:41 +08:00
Him188
083a3a1e00 Prefer value class 2021-06-05 16:05:41 +08:00
Him188
b7527a1b56 Extract HeartbeatScheduler and add HeartbeatFailedException and NetworkException 2021-06-05 16:05:41 +08:00
Him188
9f466c882e Improve syncMessageSvc:
- do not suspend logon and postpone suspension until sending message
- add MessageSvcSyncer

Fix #1253
2021-06-02 17:24:46 +08:00
Him188
4fd1b25838 Close network in-place in BotOfflineEventMonitorImpl.onEvent on BotOfflineEvent.Active 2021-05-31 17:05:20 +08:00
Him188
0c0c9d5dc2 Replace stateChanged with stateChannel for better performance and easier testing;
Add tests for `sendPacketImpl`;
2021-05-31 15:58:44 +08:00
Him188
00e2d2b77f Support refreshing instance in NetworkHandlerSelector 2021-05-31 15:03:12 +08:00
Him188
8c0f245da1 Simplify awaitState 2021-05-31 13:39:21 +08:00
Him188
db98862712 Initialize classes before tests 2021-05-31 13:38:21 +08:00
Him188
bdd390e774 Unify logging in ContactCacheService 2021-05-31 13:38:04 +08:00
Him188
9dfb46d704 Make tests faster 2021-05-31 01:46:02 +08:00
Him188
266d73f8a1 Improve SelectorNetworkHandler lifecycle: do not tolerant any exception thrown by states 2021-05-31 01:33:00 +08:00
Him188
0505dc41fa Stop SelectorNetworkHandler after manual close 2021-05-31 01:12:08 +08:00
Him188
e0c0a189dc Make NettyUtilsTest faster 2021-05-31 00:31:54 +08:00
Him188
ff6c63fafc EventDispatcher: launch Jobs UNDISPATCHED-ly 2021-05-31 00:15:02 +08:00
Karlatemp
76eaa34917 Fix tests
tests

Fix StateObserver error
2021-05-31 00:15:02 +08:00
Karlatemp
6f8d15ed37 Add test timeout 2021-05-31 00:15:02 +08:00
Karlatemp
7e94eb66d4 Fix StackOverflowError 2021-05-31 00:15:02 +08:00
Him188
b5f47d5f91 Fix network:
- fix `awaitState`
- improve `EventDispatcher`
- use `EventDispatcher` in components
- use  `eventDispatcher.joinBroadcast()` in tests to remove delays and make tests stable
2021-05-31 00:15:01 +08:00
Him188
c93d6aa608 Add ForwardRefineTest 2021-05-30 22:51:26 +08:00
Him188
301deadbd1 Add test for #1273 2021-05-30 21:16:43 +08:00
Him188
bcdff1336b
Kotlin 1.5 and dependencies updates (#1246)
* Kotlin 1.5 and dependencies updates

* Update mirai-console ref

* Use Kotlin 1.5.10

* 2.7-M1-dev-3

* Update console ref
2021-05-27 14:39:13 +08:00
Him188
3584ca1e71 Improve performance of CombinedComponentStorage.size 2021-05-24 13:21:38 +08:00
Him188
e769130829 Improve ComponentStorage.plus: accept nullable arguments 2021-05-11 09:01:12 +08:00
Him188
1d2b2377cf Add ConcurrentComponentStorage.creationStacktrace 2021-05-10 13:13:58 +08:00
Him188
f7f4ccf4f5 Correct state transition logic:
- Linear lifecycle for NetworkHandler: no chance to change state back to previous ones
- No reconnection attempts in NetworkHandler but in NHSelector
- Ensure clashing checks performed in setState
- Print closure exception in TestNettyNH.setStateOK
2021-05-09 21:05:32 +08:00
Him188
d43a77b590 Update docs and improve source code readability 2021-05-09 15:31:50 +08:00
Him188
6bc5c1204e Use withExceptionCollector in sendAndExpect 2021-05-09 13:12:34 +08:00
Him188
c9a3bb23ee Minor improvements after rebase 2021-05-09 00:54:48 +08:00
Him188
e60dd20d7b Add AbstractNettyNHTest.setSsoProcessor 2021-05-09 00:54:48 +08:00
Him188
0584b44823 Fix imports 2021-05-09 00:54:48 +08:00
Karlatemp
b31ef37c8d Exception Handling; Normal login tests 2021-05-09 00:54:48 +08:00
Him188
d2f600f9bb Fix docs 2021-05-09 00:54:48 +08:00
Him188
e58db121dc Remove redundant properties 2021-05-09 00:54:48 +08:00
Karlatemp
361304b9f2 Fix NPE in StateConnecting 2021-05-09 00:54:48 +08:00
Him188
b53e546743 Prototype EventDispatcher 2021-05-09 00:54:48 +08:00
Him188
5d3130448c Add NHSupport.setState safe overload and fix tests 2021-05-09 00:54:48 +08:00
Him188
1bb1b18f98 Improve logging in components
- Fix duplicated event logs
- Specify logger name for AccountSecretsManager
- Fix OtherClientUpdater logger
- Unify ServerList logger
- SubLogger.isEnabled
2021-05-09 00:54:48 +08:00
Him188
060004644e Add writeAndFlushOrCloseAsync to handle exception on send properly 2021-05-09 00:54:48 +08:00
Him188
a77b52e7d3 Add bot argument to PushReqResponse and filter in ConfigPushProcessorImpl 2021-05-09 00:54:48 +08:00
Him188
d14ed0cecd Dispatch events in Bot scope 2021-05-09 00:54:48 +08:00
Him188
b62e39b4d1 Set state to CLOSED on failure during connecting 2021-05-09 00:54:48 +08:00
Him188
f684b148d3 Remove notes that was for rewrite 2021-05-09 00:54:48 +08:00
Him188
61bc657417 Extract some logic out of QQAndroidBot 2021-05-09 00:54:48 +08:00
Him188
35884182af Fix and improve event logging 2021-05-09 00:54:48 +08:00
Him188
d73f5a2692 Review BotConfiguration and implement relevant configs, implement alive heartbeat, fix behavior on resume 2021-05-09 00:54:48 +08:00
Him188
6e06406a3a Support network selector retry 2021-05-09 00:54:48 +08:00
Him188
83a81961ca Properly suspend coroutine is not available for send 2021-05-09 00:54:48 +08:00
Him188
eb80a4836b Remove all unstable kotlin.Duration usages 2021-05-09 00:54:48 +08:00
Him188
a7a4879d05 Improve logging 2021-05-09 00:54:48 +08:00
Him188
5fa54114c1 Fix sso and event logging 2021-05-09 00:54:48 +08:00
Him188
971685a2b0 Fix state resume 2021-05-09 00:54:48 +08:00
Him188
95d634233c Close bot if first login failed 2021-05-09 00:54:48 +08:00
Him188
35a6d12dde Test: network scope closed on bot close 2021-05-09 00:54:48 +08:00
Him188
062492c546 Test: NettyEndlessReconnectionTest 2021-05-09 00:54:48 +08:00
Him188
e584bc8ee8 Test: state tests 2021-05-09 00:54:48 +08:00
Him188
8db8e2fb03 Implement lifecycle management for network 2021-05-09 00:54:48 +08:00
Him188
f9ddf74d8e Extract sync logic 2021-05-09 00:54:48 +08:00
Him188
076cd4997d BotOfflineEventMonitor 2021-05-09 00:54:48 +08:00
Him188
3806d7ce78 fix componentName and smartToString 2021-05-09 00:54:48 +08:00
Him188
c35c2c97c8 CombinedStorageTest 2021-05-09 00:54:48 +08:00
Him188
b91bbfd2b8 Add NetworkHandlerFactory and tests for NetworkHandler 2021-05-09 00:54:48 +08:00
Him188
4f77abca87 Components misc implementations including (ABI changes):
- ComponentStorage and its impls
- ContactCacheService
- ContactUpdater
- HeartbeatProcessor
- SsoProcessor
- QQABot
2021-05-09 00:54:48 +08:00
Him188
7f2f1e9759 Rearrange network tests 2021-05-09 00:54:48 +08:00
Him188
9286d2124e Add utils for tests 2021-05-09 00:54:48 +08:00
Him188
035085cf45 Remove state CONNECTION_LOST 2021-05-09 00:54:48 +08:00
Him188
84fa460b32 BotOnlineEvent, BotReloginEvent, BotOfflineEvent 2021-05-09 00:54:48 +08:00
Him188
d70475b8ba Do not resume state while it is already closed 2021-05-09 00:54:48 +08:00
Him188
0e1b9da5e4 Fix test KeepAliveNetworkHandlerSelectorTest 2021-05-09 00:54:48 +08:00
Him188
79112bc98d Fix LongMessageInternal missing parameter (due to merge) 2021-05-09 00:54:48 +08:00
Him188
35b80dc700 Processors 2021-05-09 00:54:48 +08:00
Him188
dd1b7404ea IDEA removed my import 2021-05-09 00:54:48 +08:00
Him188
9db3a5ef4f Rearrange packages for component system 2021-05-09 00:54:48 +08:00
Him188
0443fe4576 Prefer generified outgoing packets in all factories 2021-05-09 00:54:48 +08:00
Him188
82ad953b2b Continuing implement states for NetworkHandler 2021-05-09 00:54:48 +08:00
Him188
03e12eb287 fix build 2021-05-09 00:54:48 +08:00
Him188
9ac0a8715c Integrate ServerList into component system 2021-05-09 00:54:48 +08:00
Him188
3ec8a94096 ContactUpdater and ContactCacheService 2021-05-09 00:54:48 +08:00
Him188
51c1450202 ComponentStorage 2021-05-09 00:54:48 +08:00
Him188
05b2bfe059 Rearrange packages 2021-05-09 00:54:48 +08:00
Him188
70551167ba States and connection impl 2021-05-09 00:54:48 +08:00
Him188
1fef89cf1c Add state observer 2021-05-09 00:54:48 +08:00
Him188
8786f12d5d Add NetworkHandler.isOk to avoid state == OK 2021-05-09 00:54:48 +08:00
Him188
4446479e80 Make QQAndroidClient lighter 2021-05-09 00:54:48 +08:00
Him188
f2b236341a Decouple SSO login processor 2021-05-09 00:54:48 +08:00
Him188
997ad1eb63 Rearrange QQAndroidBot 2021-05-09 00:54:48 +08:00
Him188
1d053bd1bd Extract netty utils 2021-05-09 00:54:48 +08:00
Him188
90f5e27b5f Add AbstractKeepAliveNetworkHandlerSelectorTest 2021-05-09 00:54:48 +08:00
Him188
382c351e08 Implement NetworkHandlerSelector, serverList, and implement them into Bot 2021-05-09 00:54:48 +08:00
Him188
ff80434d2d Migrate network logger and old sendWithoutExpect and sendAndExpect 2021-05-09 00:54:48 +08:00
Him188
840dd19dd0 Move EMPTY_BYTE_ARRAY to mirai-core-utils 2021-05-09 00:54:48 +08:00
Him188
097a478999 Relocates netty files to correct packages 2021-05-09 00:54:48 +08:00
Karlatemp
5f0b432220 NettyTestUnit 2021-05-09 00:54:48 +08:00
Him188
e293195391 Set state to StateClosed appropriately and update docs 2021-05-09 00:54:48 +08:00
Him188
d01f71ff8b Remove rubbish; fix build; add todos 2021-05-09 00:54:48 +08:00
Him188
b844efb072 New network: framework infrastructure 2021-05-09 00:54:48 +08:00
sandtechnology
028bfa483c
Introduce MemberNick class and correct nameCard decoding, Fix #1151 (#1231)
* Introduce MemberNick class and correct nameCard decoding, Fix #1151

* Update comment for better understanding

Co-authored-by: Him188 <Him188@mamoe.net>

* Change var name in method for better understanding

Co-authored-by: Him188 <Him188@mamoe.net>

* Fix build

Co-authored-by: Him188 <Him188@mamoe.net>
2021-05-06 17:54:52 +08:00
sandtechnology
e459c76f92
OnlinePush.SidTicketExpired: Refresh token and register online (#1242)
* OnlinePush.SidTicketExpired: Refresh token and register online

* Also update key map

* Update package name to internal

Co-authored-by: Him188 <Him188@mamoe.net>

* Fix build

Co-authored-by: Him188 <Him188@mamoe.net>
2021-05-05 00:26:10 +08:00
Him188
6854252c77 Old network: re-init client on BotOfflineEvent.Force. #1205 for 2.7-M1 2021-05-04 12:47:27 +08:00
Him188
84d444843d Old network: delete account secrets on BotOfflineEvent.Force. #1205 for 2.7-M1 2021-05-04 12:47:22 +08:00
Him188
57eb716e31
Add inline BotFactory.newBot for Kotlin DSL. fix #1233 (#1234) 2021-05-02 13:51:32 +08:00
sandtechnology
0baaf9d587
Correct the seq logic, fix #1094 (#1232) 2021-05-02 13:51:21 +08:00
sandtechnology
db4c41f84a
Rework seq system (#1230)
* Rework seq system, should help #1209

* Use non-blocking (CAS) implement

* Making next seq code more clear for reading

* Fix mistake
2021-05-02 13:50:24 +08:00
Him188
70dc0a4da6
Remove kotlin.time.Duration usages (#1215)
* Remove kotlin.Duration usages

* Fix build

* update submodule console ref
2021-04-27 11:49:30 +08:00
sandtechnology
4e070baf34
Fix duplicate register packet (#1214) 2021-04-25 11:37:12 +08:00
Karlatemp
d3dc756a50
Drop empty UnsupportedMessage; fix #1210 2021-04-24 10:18:06 +08:00
Him188
5dcccd1402 Introduce base class for tests AbstractTest 2021-04-20 12:47:57 +08:00
Him188
6d58fb5514 Ensure fast login succeed, fix #1199 2021-04-18 14:37:16 +08:00
Karlatemp
28a8b8303a
Support receive nested ForwardMessages (#1196)
* Support receive nested ForwardMessages

* Tests
2021-04-17 16:09:32 +08:00
Karlatemp
0c93aeb425
Add RefineContext for refining (#1195)
* Add RefineContext for refining

* Add RefineContext argument

* Fix build
2021-04-17 11:45:02 +08:00
Karlatemp
83fa78b50d
Find nick from source; fix #1137 2021-04-17 09:28:11 +08:00
Hoshino Tented
1bf1e3686f
添加管理员修改功能 (#1178)
* add modifyAdmin

* 修复赋予相同权限时不会抛错并且仍然广播事件的 bug

* fix test failed

* fix test failed AGAIN

* fix myself

* 是这样吗

* i am so sorry :(

* fix fixed bug
2021-04-16 08:33:07 +08:00
Him188
f3d3130f2d Support login cache and login without password. close #1158 2021-04-10 18:46:39 +08:00
Karlatemp
509c0d3d06
Fix mute all not working; Fix #1181 2021-04-09 19:19:03 +08:00
Him188
8d3a4fbf5b
Deprecate RemoteFile.moveTo(String) for ambiguous behavior (#1180) 2021-04-09 18:33:12 +08:00
Him188
ce95d8fdce Fix RemoteFile.resolveById, fix #1177 2021-04-09 07:47:51 +08:00
Him188
d4ee81c79a Fix potential memory leak with struct ByteReadPacket 2021-04-08 22:42:24 +08:00
Him188
951ddc3138 Declare type explicitly for IDE inference issue 2021-04-08 18:07:21 +08:00
Him188
45c6adf956 Declare type explicitly for IDE inference issue 2021-04-08 13:15:24 +08:00
Him188
344c54531d Declare type explicitly for IDE inference issue 2021-04-08 13:13:23 +08:00
Him188
7be14f809c Fix build warnings 2021-04-08 12:44:58 +08:00
Him188
7feeaee1ca
Refining Messages without suspension (#1167)
* Introduce `RefinableMessage.tryRefine` to refine without suspension.

* Extract `RefinableMessage` to separate file

* Always use `Bot` on `List<MsgComm.Msg>.toMessageChain`

* Introduce `MessageRefiner` and ensure MessageChain refined after transformation. Fix #1156, fix #1157

* Add basic tests

* Refine forward message contents

* Refine long message contents

* Move refinement from message internals to MiraiImpl public APIs

* Comment out unused `toMessageChainOffline`

* refinement tests part

* refinement tests part

* Full tests and minor internal improv.s

* Fix tests

* Fix compile
2021-04-08 11:59:16 +08:00
Hoshino Tented
a085ab26c8
fix #1155 (#1170)
* fix #1155

* fix unmute

* add durationSeconds check for mute

* fix stupid code

* fix me
2021-04-07 17:34:45 +08:00
sandtechnology
5d1395a78c
Fix key refresh failed when refresh again and update dumped data (#1169)
* Fix key refresh failed when logged with fast login

* Update dumped data and remove outdated t511 list

* Fix key refresh again

* Fix naming and support multi bot case

* Remove useless code

* Fix key refresh again, remove useless default value (ksid)
2021-04-07 12:12:13 +08:00
Him188
bb5c85965a Simple test: MockBot 2021-04-07 00:59:08 +08:00
Karlatemp
b227f719a2
Fix kt compiler errors (#1159)
* Fix kt compiler errors

* Revert "Fix compiler bug, fix #1136"

This reverts commit 39f6c168

* Fix log style

Co-authored-by: Him188 <Him188@mamoe.net>
2021-04-05 22:41:26 +08:00
Him188
7521e6d17f
Rename RichMessageOrigin to MessageOrigin (#1116)
* Rename `RichMessageOrigin` to `MessageOrigin`

* apiDump

* Change `MessageOrigin.origin` parameter type from `RichMessage` to `SingleMessage`;
Rename `RichMessageKind` to `MessageOriginKind`

* Make MessageOriginKind serializable and update docs

* Ensure binary compatibility with <2.6 and provide migration helpers

* apiDump
2021-04-04 00:31:33 +08:00
Him188
39f6c1680c Fix compiler bug, fix #1136 2021-04-04 00:00:32 +08:00
Him188
caf9eb06ad Fix package name of StrangerImpl 2021-04-03 23:17:00 +08:00
Him188
50e60cc4fe Use system property mirai.unknown.image.type.logging to enable logging on unknown image type, helps #1111 2021-04-03 23:07:41 +08:00
Him188
cccdb3cdf2
Update docs for messages (#1142)
* Update docs for messages

* Update docs for messages

* Update docs for messages

* Update docs for messages

* Update docs/Messages.md

Co-authored-by: Karlatemp <karlatemp@vip.qq.com>

* Update mirai-core-api/src/commonMain/kotlin/message/data/Message.kt

Co-authored-by: Karlatemp <karlatemp@vip.qq.com>

* Update docs for messages

* Update docs for messages

* Revert inappropriate changes

* Fix doc

Co-authored-by: Karlatemp <karlatemp@vip.qq.com>
2021-04-03 22:39:55 +08:00
Him188
ea1f43b9c5
Fast login (#1154)
* wtlogin10

* Fast login Packet Implement (#1125)

* Correct group syncing logic again, Fix #1120

* Implement fast login packet, thanks to MiraiGo

* Delete duplicated tlv

* Refresh Token when exchanging and solve connection dropping issue (#1128)

* Correct group syncing logic again, Fix #1120

* Implement fast login packet, thanks to MiraiGo

* Delete duplicated tlv

* Schedule token exchanging every 10 minutes, solve connection dropping issue

* Refresh Token when exchanging, and correct token expire time

* Remove useless params for doFastLogin

* Fix missed register and tgt update (#1131)

* Correct group syncing logic again, Fix #1120

* Implement fast login packet, thanks to MiraiGo

* Delete duplicated tlv

* Schedule token exchanging every 10 minutes, solve connection dropping issue

* Refresh Token when exchanging, and correct token expire time

* Remove useless params for doFastLogin

* Fix missed register and tgt update

* Add login lock

* Add login lock

* Remove key refresh

* Remove heartbeat period override

* Login: Update tlv and solve constant connection dropping issue (#1150)

* Correct group syncing logic again, Fix #1120

* Implement fast login packet, thanks to MiraiGo

* Delete duplicated tlv

* Schedule token exchanging every 10 minutes, solve connection dropping issue

* Refresh Token when exchanging, and correct token expire time

* Remove useless params for doFastLogin

* Fix missed register and tgt update

* Update tlv, add tlv11d and tlv11a decoding

* Add stat heartbeat, solve constant connection dropping issue

* Update apidump for new configuration

* Add comment for statHeartbeatPeriodMillis

* Change old naming

* Add since version

Co-authored-by: Him188 <Him188@mamoe.net>

Co-authored-by: sandtechnology <20417547+sandtechnology@users.noreply.github.com>
2021-04-03 22:31:14 +08:00
Karlatemp
f6fd4de14b
Postpone error reporting in parsing in NewContact (#1147)
* Add `ParseErrorPacket` for postpone error report

* Continue to parse even if an error occurs
2021-04-03 22:17:49 +08:00
Karlatemp
6e914f6941
Fix forward display (#1148) 2021-04-03 22:12:14 +08:00
Him188
3f807353b3 Remove UNSUPPORTED_MERGED_MESSAGE_PLAIN, fix #1119 2021-03-30 12:16:08 +08:00
Him188
cea4d23d7f Create OtherClientInfo from known information, fix #1109 2021-03-30 12:14:20 +08:00
Him188
fc70bb9ed8 Remove type definition to help compatibility with Kotlin 1.5 2021-03-29 23:59:03 +08:00
sandtechnology
70bbfcf786
Correct group syncing logic again, Fix #1120 (#1123) 2021-03-28 22:48:38 +08:00
Him188
de170325c9 Merge branch 'fix_1118_empty_listFiles' into dev 2021-03-28 19:32:44 +08:00
Him188
174ca300d6 Fix empty listFiles for child directories, fix #1118 2021-03-27 15:39:46 +08:00
Him188
430c2c59ad
Support UnsupportedMessage (#1112)
* Support UnsupportedMessage

* Fix serialize

* `UnsupportedMessage.contentToString`: use `struct.contentHashCode()`

Co-authored-by: Karlatemp <karlatemp@vip.qq.com>
2021-03-26 23:54:17 +08:00
Him188
c47535289a
Merge pull request #1115 from mamoe/transform_special_messages
Move Dice to MarketFace conversion from `SendMessageHandler.transformSpecialMessages`...
2021-03-26 20:36:21 +08:00
Him188
8d25025d24 Support decode Dice sent by TIM PC clients 2021-03-26 20:34:32 +08:00
Him188
efc6eda312 Move Dice to MarketFace conversion from SendMessageHandler.transformSpecialMessages to MessageChain.toRichTextElems to enable conversions for ForwardMessage 2021-03-26 19:54:11 +08:00
Karlatemp
a5e85f443e
Try fix forward message display (#1052)
fix https://github.com/mamoe/mirai/issues/1052#issuecomment-805600071
2021-03-25 00:01:04 +08:00
Him188
9f52a26fbd Fix FileMessage mirai code 2021-03-20 22:31:12 +08:00
Him188
af58c163d2 - Add FileMessage.internalId hence support serialization
- Add FileMessage.Serializer
- Add FileMessage.create and IMirai.createFileMessage to construct manually
- Mark FileMessage as stable
- Move TestMiraiCode from mirai-core-api to mirai-core

fix #1082
2021-03-20 15:33:08 +08:00
Karlatemp
3152e24523
Fix operations of RemoteFile (#1104)
* Fix operations of RemoteFile

* apiDump

* Remove duplicate method

* Don't setup fileId
2021-03-18 12:30:06 +08:00
Karlatemp
d4532f948c
Fix duplicated MemberJoinEvent broadcast; fix #1090 2021-03-11 22:32:22 +08:00
Karlatemp
27e0f572d3
Record unlogged events 2021-03-11 18:21:21 +08:00
Him188
e256ec06d3
Support file operations (#1069)
* Proto structs for group file

* RemoteFile fundamental abstraction and proto structs

* Configure JVM target for mirai-console-intellij

* Add Group.filesRoot

* Fix build

* Implement a FileSystem for RemoteFile resolution

* Fix RemoteFile FileSystem and implement resolve and listFiles

* Implement file info query and file download

* Support uploading group file

* Support file feeds

* 2.5-M2-dev-1

* Fix tests

* 2.5-M2-dev-2

* Add uuid-based resolving, support getting file details

* Support FileMessage receive

* Support sending FileMessage

* 2.5-M2-dev-3

* Add DownloadInfo.id

* Improve RemoteFile.delete

* Support move, delete, rename, mkdir. Simplify listFiles

* - Rename RemoteFile.write to .upload.
- Prefer id matching
- Improve move

* Add permission checks

* Improve permission checks

* Rearrange functions and add constant ROOT_PATH

* Introduce FileSupported, add extensions

* Introduce ProgressionCallback

* Fix docs and uploadFileAndSend

* Remove empty FileHighway.kt

* Add test testNormalize

* Add RemoteFile.contact, change RemoteFile.uploadAndSend return type to MessageReceipt

* Move @JvmBlockingBridge to file

* Change FileMessage.toRemoteFile parameter type Group to FileSupported

* Add impl notes #1082
2021-03-08 18:34:45 +08:00
Karlatemp
716b8c6129
Reinitialize network before connect server 2021-03-06 21:58:57 +08:00
Karlatemp
038ea831ac
Improve logging
- replace magic codes in sender nick and other components
2021-03-06 18:43:02 +08:00
sandtechnology
fa59459041
Correct group syncing and add friend syncing logic, Fix #1058 (#1060)
* Correct group syncing and add friend syncing logic, Fix #1058

* Simple method naming

Co-authored-by: Karlatemp <karlatemp@vip.qq.com>

* Replace with runBlocking

* Return events instead of broadcasting it

* Use suspend instead of runBlocking

* Make transformers suspend

Co-authored-by: Karlatemp <karlatemp@vip.qq.com>
2021-03-05 14:12:17 +08:00