Commit Graph

766 Commits

Author SHA1 Message Date
Him188
0ebf656c20 Improve performance of MessageChainBuilder.add and .addAll 2021-07-31 17:50:40 +08:00
Karlatemp
b423430b74
Deprecate GroupSettings.entranceAnnouncement; close #1399, close #1398 2021-07-15 22:29:51 +08:00
Him188
dd606c3022 Improve performance of hexToBytes and simplify similar extensions 2021-07-07 15:00:28 +08:00
Him188
eaa8f20208 Mark UserProfile with NotStableForInheritance 2021-07-07 13:47:45 +08:00
Him188
e389594c47 Update docs on MemberPermission 2021-07-07 13:47: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
881f713be2 Update docs of announcement 2021-07-06 19:12:45 +08:00
Him188
9d9b9ce7e2 Change AnnouncementImage's width and height to Int 2021-07-06 19:12:45 +08:00
Him188
6145b3ef47 Remove inline to make compiler happy :) 2021-07-06 19:12:45 +08:00
Him188
c588b5ce76 Add permission requirement to docs on
some Announcement API
2021-07-06 19:12:45 +08:00
Him188
d08c6b81a8 Add simplified one-line API for publishing a single announcement 2021-07-06 19:12:45 +08:00
Him188
b98fcdd2e5 Add default argument to OfflineAnnouncement 2021-07-06 19:12:45 +08:00
Him188
f7e2391d96 Add contracts for eligible Announcement API 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
858766d6b5 Make OfflineAnnouncement.create synthetic 2021-07-06 19:12:45 +08:00
Him188
1abc65fb16 Update docs for Announcement API 2021-07-06 19:12:45 +08:00
Him188
47192f3ee3 Make Announcements.asStream not suspend 2021-07-06 19:12:45 +08:00
Him188
9f1343c02e Generate equals, hashCode and toString for AnnouncementParameters abd AnnouncementImage 2021-07-06 19:12:45 +08:00
Him188
d2e35772d0 Add constructor-like functions for Kotlin users 2021-07-06 19:12:45 +08:00
Him188
1abfcf4317 Add OfflineAnnouncement.serializer 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
194d34d309 Remove meaningless @LazyProperty 2021-07-06 19:12:10 +08:00
Him188
d6c4b5456f Remove inappropriate weak references 2021-07-06 19:12:10 +08:00
Him188
be3c873f4f
Face.toString: use contentToString() for better readability (#1382) 2021-07-06 16:07:41 +08:00
Karlatemp
a4f0bbfe80
Fix document of RandomAccessFile.toExternalResource() 2021-07-05 18:16:53 +08:00
Him188
69f2d24c22 Fix build 2021-07-05 18:02:01 +08:00
Him188
c4fd79ef22 Fix doc on ExternalResource 2021-07-05 18:00:57 +08:00
Him188
8fdce4dc98 Update docs on ExternalResource for auto release, and categorise declarations 2021-07-05 17:20:57 +08:00
Him188
abc2bfcb3e
Add @NotStableForInheritance and apply it to suitable classes (#1385)
* Add `@NotStableForInheritance` and apply it to suitable classes

* apiDump

* Fix import

* fix
2021-07-05 12:50:00 +08:00
Him188
7722a5a0b0 Move KSerializer.map to mirai-core-utils 2021-07-04 17:56:23 +08:00
Karlatemp
4c810ee3ee
ExternalResourceLeakObserver (#1383)
* ExternalResourceLeakObserver

* Avoid exceptions of user-defined run-when-close actions

* Fix build

* Release references

* Move `ExternalResourceLeakObserver` to mirai-core-api

* Make internal

* Make `close()` thread-safely

* typo

* Don't track `ExternalResource` creation stack by default

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

Co-authored-by: Him188 <Him188@mamoe.net>
2021-07-03 22:05:12 +08:00
Him188
ceac90ed19 Minor update for doc of BotJoinGroupEvent.Active 2021-07-02 22:11:38 +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
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
6eff4bdf40 Add EVENT_LAUNCH_UNDISPATCHED to allow to launch coroutines for event listeners in a UNDISPATCHED start mode 2021-06-29 22:43:02 +08:00
Him188
3d0fba2d8f Fix EventChannel.filter, allow blocking calls correctly 2021-06-29 22:21:58 +08:00
Karlatemp
06c005e068
Update document link of captcha solving 2021-06-26 19:31:30 +08:00
Karlatemp
a20833bb2a
Enable slider captcha for built-in login solvers 2021-06-26 19:31:28 +08:00
Karlatemp
eb5c7414d7
Add hashCode and equals for Image, close #1302 2021-06-26 16:29:40 +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
Him188
baf1ca618e Improve performance of MessageChain.get, MessageChain.contains. Add relevant tests. 2021-06-25 07:57:52 +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
sandtechnology
76e57d4aae
Update system face (#1260)
* Update system face

* Update api dump

* Update api dump for android

* Update system face which updated today

* Update api dump

* Add new system face

* Update apidump
2021-06-23 15:00:06 +08:00
zhou2008
7ed9f280d7
Update ForwardMessage.kt (#1275) 2021-06-23 14:57:48 +08:00
Him188
415f133cbc Fix Flow<Message>.toMessageChain 2021-06-20 01:36:32 +08:00
Him188
8840ba9e6f Remove contract in MiraiLogger 2021-06-20 00:21:49 +08:00
Him188
c37457cafb Cleanup and move local serializable classes to top-level 2021-06-19 18:28:21 +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
AdoptOSS
7732014cbd
fix: do trimming properly in startsWith & endsWith, #1282 (#1314)
Co-authored-by: ArcticLampyrid <arcticlampyrid@outlook.com>
2021-06-08 15:42:37 +08:00
Him188
a9489567d0
Clearify docs for ExternalResource and RemoteFile (#1248)
* Update code docs for ExternalResource emphasising its properties

* Update code docs for ExternalResource emphasising its representative file location

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

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

* Clarify docs
2021-06-08 11:23:09 +08:00
Him188
6b442b251f Introduce AbstractEventTest 2021-06-07 18:56:33 +08:00
Him188
fc96ba96dd Add _EventBroadcast to allow tests to overrode implementation of Event.broadcast 2021-06-07 18:29:15 +08:00
Him188
9619338d5b Catch and forward event broadcasting to EventDispatcher 2021-06-07 18:18:07 +08:00
Him188
02681428c9 Review and migrate deprecated calls 2021-06-07 12:57:01 +08:00
Karlatemp
ef439f1dea
Fix API check 2021-06-07 12:33:31 +08:00
Him188
38d0b124f2 Fix docs on BotOfflineEvent.Force 2021-06-06 13:58:46 +08:00
Him188
c03155af6d
Review docs and improve readability (#1291)
* Review docs and improve readability

* Update docs/Bots.md

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

* Update docs/Bots.md

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

* Update docs/Bots.md

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

* Fix doc

* Fix doc

* Clarify AnonymousMember and NormalMember

* Fix typo

* Add language type

Co-authored-by: Karlatemp <karlatemp@vip.qq.com>
2021-06-02 20:29:36 +08:00
Him188
e0a767060a
Deprecate RemoteFile.upload and relevant extensions, fix #1255 (#1290)
* Deprecate `RemoteFile.upload` and relevant extensions, fix #1255

* Replace '// since 2.7-M1' with '// deprecated since 2.7-M1'

* Move deprecation notes to `RemoteFile.upload`
2021-06-02 14:00:24 +08:00
Karlatemp
1e95482158
Fix the resource leak when closing TxCaptchaHelper(Swing) directly 2021-06-01 12:47:42 +08:00
Karlatemp
c89d31cef6
Redesign LoginSolver (#1285)
* Redesign SwingSolver

* TxCaptchaHelper support

* Simplify TxCaptchaHelper
2021-06-01 12:26:37 +08:00
Him188
043006413c Change upper bound type of MessageSubscribersBuilder.has from Message to SingleMessage, fix #1223 2021-05-31 16:40:57 +08:00
Him188
e6f7edadeb Fix doc on MessageSource 2021-05-30 23:44:52 +08:00
Him188
2d10cc10be Add implementation notes for Listener 2021-05-30 09:42:24 +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
5e25c0e25b Remove bintray 2021-05-25 12:25:53 +08:00
Him188
d43a77b590 Update docs and improve source code readability 2021-05-09 15:31:50 +08:00
Him188
2e1ec03daa Deprecate ForceOfflineException 2021-05-09 13:12:34 +08:00
Him188
d755ebf7ee Use topLevelEventLogger instead of MiraiLogger.TopLevel for non-BotEvent events 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
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
8db8e2fb03 Implement lifecycle management for network 2021-05-09 00:54:48 +08:00
Him188
076cd4997d BotOfflineEventMonitor 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
57eb716e31
Add inline BotFactory.newBot for Kotlin DSL. fix #1233 (#1234) 2021-05-02 13:51:32 +08:00
Him188
0dbb448cad Fix doc on BotConfiguration.inheritCoroutineContext 2021-05-01 10:54:21 +08:00
Him188
a8a448272d Add BotConfiguration.heartbeatStrategy
(cherry-picked from #1229)
2021-04-30 22:56:00 +08:00
Him188
104f7b4292 Fix statHeartbeatPeriodMillis not copied in BotConfiguration.copy 2021-04-30 22:06:15 +08:00
wdvxdr1123
758eca55cd
feat: support kugou,kuwo music share (#1228)
* feat: support kugou,kuwo music share

* fix: api check

* fix: api check again

* Update MusicShare.kt

Co-authored-by: Him188 <Him188@mamoe.net>
2021-04-30 22:03:36 +08:00
Him188
c7dfef9ad5 Improve logs on event exception 2021-04-29 12:31:09 +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
Him188
c3b6342d34 Fix EventChannelKotlinExtensions resolution ambiguity 2021-04-25 11:35:56 +08:00
AdoptOSS
09475efbda
fix: serialization plugin should not be put into runtime classpath (#1197) 2021-04-17 19:56:19 +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
Him188
455ed6fbeb Move NormalMember.isMuted from extension to member function. fix #1037 2021-04-10 12:58:10 +08:00
Him188
8d3a4fbf5b
Deprecate RemoteFile.moveTo(String) for ambiguous behavior (#1180) 2021-04-09 18:33:12 +08:00
Him188
e20313636a Make Group.setEssenceMessage static 2021-04-08 18:17:00 +08:00
Him188
770615f137 Ensure Mirai impl initialized on serialization, fix #1086 2021-04-07 23:28:41 +08:00
Him188
944099a977 Add _MiraiInstance to allow internal instance overrides 2021-04-07 21:49:44 +08:00
Him188
620771211e Merge remote-tracking branch 'mirai/dev' into dev 2021-04-05 23:58:54 +08:00
Him188
f0093a0cca Fix ignored exceptions in PlatformLogger on Android 2021-04-05 23:58:37 +08:00
Him188
45aca5f37d
Add ForwardMessageBuilder.toRawForwardMessage and make RawForwardMessage stable (#1162)
* Add `ForwardMessageBuilder.toRawForwardMessage` and make RawForwardMessage stable.

* apiDump
2021-04-05 22:35:52 +08:00
AdoptOSS
21e8852e0f
buildscript: fix task not found errors when android sdk not available (#1161)
* buildscript: fix task not found errors when android sdk not available

* fix: this shadowed by run

* cleanup: code style

* improve: avoid breaking index map
2021-04-05 22:35:38 +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
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
Him188
1c486854a8 Fix FileMessage.Key 2021-03-30 21:42:05 +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
0f41c225f9 Move SerialDescriptor.copy to mirai-core-utils 2021-03-26 20:42:51 +08:00
Him188
fef0b4220a Merge remote-tracking branch 'mirai/dev' into dev 2021-03-26 10:07:13 +08:00
Him188
7ed8502e68 Fix docs on IMirai.FileCacheStrategy 2021-03-26 10:06:48 +08:00
Him188
c071ac5773
Update docs of Nudge, clearification 2021-03-23 23:57:20 +08:00
Him188
f8da762d2f Merge remote-tracking branch 'mirai/dev' into dev 2021-03-22 12:52:39 +08:00
Him188
c006a48de5 Update docs about FileCacheStrategy, close #1046 2021-03-22 12:52:18 +08:00
Him188
ee1ea33898 Remove inappropriate use of DSL marker on ForwardMessageBuilder.add 2021-03-22 11:24:26 +08:00
Him188
0c3c85f61c Add members to make ForwardMessageBuilder easier to use from Java, close #1087 2021-03-22 11:24:26 +08:00
Him188
f42747f6ac Make buildMessageChain not @JvmSynthetic 2021-03-22 11:21:22 +08:00
Him188
daa7453d73 Add UserOrBot.nameCardOrNick 2021-03-22 11:16:34 +08:00
Him188
146433d56f Add common UserOrBot.nick 2021-03-22 11:16:34 +08:00
Him188
9f52a26fbd Fix FileMessage mirai code 2021-03-20 22:31:12 +08:00
Him188
0112d4622e Rename ExternalResource.Companion.uploadAsFileTo to uploadAsFile to keep consistency 2021-03-20 16:49:02 +08:00
Him188
09cbc55ef6 RemoteFile.FileInfo.resolveToFile: use FileSupport than Group 2021-03-20 16:45:01 +08:00
Him188
7f6812727a Update RemoteFile docs and mark RemoteFile as stable 2021-03-20 16:45:00 +08:00
Him188
74d59982ae Add more extensions for RemoteFile and ExternalResource 2021-03-20 15:59:58 +08:00
Him188
b328328ddd Add docs for RemoteFile and mark some API as stable 2021-03-20 15:59:58 +08:00
Him188
b5d8306902 Add RemoteFile.listFilesCollection()
Co-authored-by: Karlatemp <karlatemp@vip.qq.com>
2021-03-20 15:59:58 +08:00
Him188
5f02c35e66 Merge remote-tracking branch 'mirai/dev' into dev 2021-03-20 15:33:48 +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
f9353b6aef
Compiled code verify (#1080)
* Compiled code verify

* Run `verifyCompiledClasses` in `check` task

* Redesign verification

Co-authored-by: Bo Zhang <bo@gradle.com>

* Disable console verify

* Decoupling

Co-authored-by: Bo Zhang <bo@gradle.com>
2021-03-20 13:34:04 +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
5cd62319b7
Update docs of RemoteFile 2021-03-17 23:41:49 +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
Him188
b7c0f40d7e Revert "Implement multiplatform EventChannel for android specially"
This reverts commit dd7aed88
2021-02-26 15:34:51 +08:00
Him188
7fd281c496 Remove reflection API calls which are unsupported by Android 2021-02-25 11:19:18 +08:00
Him188
aaab3ae109 Merge branch 'dev' into android_target
# Conflicts:
#	build.gradle.kts
2021-02-25 10:39:51 +08:00
Him188
2c14f0016f Disable atomicFU compiler plugin 2021-02-25 09:35:51 +08:00
Him188
abf9baefc1 Remove @file:JvmName on PlatformLogger actual declarations, fix potential compiling issue 2021-02-25 07:54:36 +08:00
Karlatemp
7a7c88b783
Android api level check 2021-02-25 00:12:58 +08:00
Him188
dd7aed885d Implement multiplatform EventChannel for android specially 2021-02-24 15:57:54 +08:00
Him188
7b80ac5a0c Replace usage of java.util.List.removeIf to Kotlin's MutableList.removeAll 2021-02-24 15:15:47 +08:00
Him188
ba61194fa4 Move StandardCharImageLoginSolver from common to jvm 2021-02-24 15:15:43 +08:00
Him188
d3583162a5 Replace usage of List.replaceAll with Kotlin's 2021-02-24 15:15:31 +08:00
Him188
95688e37af
Update to Kotlin 1.4.30 and bump other dependencies versions (#1049)
- kotlin-stdlib and compiler 1.4.30
- kotlinx-serialization 1.1.0-RC
- kotlinx-coroutines 1.4.2
- ktor 1.5.1
- atomicfu 0.15.1
- yamlkt 0.9.0
- kotlin-jvm-blocking-bridge 1.10.0
- intellij 2020.3.2
- kotlin-intellij 203-1.4.30-release-IJ7148.5
- Gradle 6.8.2
2021-02-24 12:15:19 +08:00
Him188
9c3a175b02 Configure binary compatibility validator for android target 2021-02-24 11:36:03 +08:00
Him188
aa289e932f Multiplatform LoginSolver:
- On JVM: Same behaviour as before
- On Android: LoginSolver.Default returns `null` always
2021-02-24 10:18:04 +08:00
Him188
1ce26c393c Implement SingleFileLogger separately for different platforms, ensure binary compatibility 2021-02-24 09:55:33 +08:00
Him188
0b971b2117 Merge branch 'dev' into android_target
# Conflicts:
#	build.gradle.kts
#	buildSrc/src/main/kotlin/Versions.kt
2021-02-24 09:20:47 +08:00
Karlatemp
9bb3ae20ef
MiraiCode of MusicShare (#1044)
* Improve MiraiCode parsing

* MiraiCode of MusicShare
2021-02-23 23:00:32 +08:00
Karlatemp
2bfc20048e
[MessageSubscribersBuilder] Ignore null execution result. close #1011 2021-02-16 20:56:26 +08:00
Noire
4555962049
Fix document of BotConfiguration.botLoggerSupplier (#1021) 2021-02-14 21:41:57 +08:00
Him188
4ac7d3fa9a
Support Dice (#1018)
* Add Dice public API #1012, close #1017

* Extract MarketFaceImpl to separate file

* Dice protocol impl #1012

* Dice refinement

* Add serialization support for Dice

* Add mirai code support for Dice

* Update docs/Messages.md

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

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

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

* Add dice mirai code test

Co-authored-by: sandtechnology <a1294790523@hotmail.com>
Co-authored-by: lc6a <1952511149@qq.com>
Co-authored-by: Karlatemp <karlatemp@vip.qq.com>
2021-02-13 11:34:23 +08:00
Him188
d0cbe087b1 Add jetbrains-annotations dependency to mirai-core-api 2021-02-12 14:38:22 +08:00
Him188
c51eea6268 - Simplify ContactListCache configuration
- Add kotlin.Duration support
- Disable contact list cache by default for stability
2021-02-11 16:58:43 +08:00
Him188
e219fb3a95 Fix typo in doc 2021-02-11 16:42:02 +08:00
Karlatemp
0d58e6e3ab
Convert CRLF(\r\n), CR(\r) to LF(\n); fix #1010 2021-02-11 08:48:01 +08:00
Him188
cda6aaa79b Simplify cache configuration.
Improve cache saving:
- Use ProtoBuf to serialize BdhSession
- More readable servers.json
2021-02-10 15:20:39 +08:00
Him188
01374b1d32 Merge remote-tracking branch 'mirai/dev' into dev 2021-02-09 18:40:51 +08:00
Him188
9a32b2690e RichMessageOrigin support for MusicShare. fix #950 2021-02-09 18:40:30 +08:00
Karlatemp
c9f56175af
Cache BdhSession and ServerList for next login 2021-02-09 13:51:08 +08:00
Him188
aaa655f167 Move @JvmBlockingBridge on member functions to containing classes 2021-02-08 12:15:58 +08:00
Him188
2d1c66135e Fix Voice.contentToString to be the same as official clients 2021-02-07 14:59:07 +08:00
Him188
31839b76a3 Enable cache by default, change default cache dir, change enableXXXCache to disableXXXCache in BotConfiguration 2021-02-07 13:55:08 +08:00
Him188
f27e42d225 Fix BotConfiguration.copy 2021-02-07 13:43:03 +08:00
Him188
cbf151b24d Rearrange BotConfiguration members 2021-02-07 13:43:03 +08:00
Him188
0a36170411 Fix docs 2021-02-07 13:43:03 +08:00
Him188
7fac83702a Support group list cache, close #987 2021-02-07 13:43:03 +08:00
Him188
90d4030fe6 Support friend list cache, close #408 2021-02-06 22:52:41 +08:00
Him188
9211f697cf Review contact infos and make them serializable 2021-02-06 20:40:54 +08:00
Him188
311df7d22b Extract contact sync logic to ContactUpdater for future caching #408 2021-02-06 19:53:51 +08:00
Him188
3c4a517f68 apiDump for ShowImageFlag.SERIAL_NAME 2021-02-05 23:00:43 +08:00
Him188
73b6a886be Install serializer for ShowImageFlag, fix build. 2021-02-05 22:43:16 +08:00
Him188
fd3b32482e Add check for DeviceInfo.imsiMd5.size on init. #979 2021-02-05 22:40:27 +08:00
Him188
13faff5471 Add serialization support for ShowImageFlag 2021-02-05 22:34:08 +08:00
Him188
5cd617eaa6 Deprecate SingleMessage.Serializer for compatibility issue with array polymorphism 2021-02-05 22:33:36 +08:00
Him188
3c38a3b9c0 Extract SingleMessage and ConstrainSingle to separate files, update docs 2021-02-05 22:10:06 +08:00
Him188
3b06df6bc5 Simplify EventChannel.parentScope 2021-02-03 20:23:10 +08:00
Him188
1205d95186 Fix EventChannel.parentScope missing parentJob 2021-02-03 19:45:45 +08:00
Him188
842549fd44 Fix the issue EventChannel.context loses intercepted, fix #956 2021-02-03 19:40:46 +08:00
Him188
9597a70f58 Add test testAsChannel for EventChannel 2021-02-03 19:10:06 +08:00
Him188
d4cc4845ba Fix inappropriate coroutine suspension in java bridges in EventChannel 2021-02-03 19:09:30 +08:00
Him188
2a7c1e8631 Merge remote-tracking branch 'mirai/dev' into dev 2021-02-03 12:26:52 +08:00
Him188
b5d5f3c922 Add more tests for EventChannel:
- testFilterException
- testExceptionInSubscribe
2021-02-03 12:26:38 +08:00
Him188
0bbea5706f Fix EventChannel.filter and .filterIsInstance when chained, fix #953 2021-02-03 11:41:05 +08:00
Him188
2e91ae0d7f Revise MessageSerializers.registerSerializer, fix #951:
- Don't register contextual serializer
- Register polymorphic serializers to all superclasses inheriting SingleMessage
2021-02-03 10:39:36 +08:00
Him188
a834916f3c Add equals and hashCode for RichMessageOrigin 2021-02-03 10:39:36 +08:00
Him188
4990c40a37 Add RichMessageOrigin.Key.SERIAL_NAME 2021-02-03 09:26:46 +08:00
Him188
35a75df932 Fix MusicShare serial name, add MusicShare.Key.SERIAL_NAME 2021-02-03 09:24:48 +08:00
Him188
54050523c3 Generalize RichMessageOrigin, add origin and kind. Add RichMessageKind. #950 2021-02-03 09:20:33 +08:00
Karlatemp
b659d55fec Support forward message refinement, close #623 2021-02-03 08:09:57 +08:00
Him188
f2fe94ed67 Rename LongMessageOrigin to RichMessageOrigin 2021-02-03 08:09:57 +08:00
Him188
1e95c43ff6 Add LongMessageOrigin and extract public api IMirai.downloadLongMessage 2021-02-03 08:09:57 +08:00
Him188
1768872bab Rewrite message to struct conversions, add ReceiveMessageTransformer, for parsing long and forward messages in the future 2021-02-03 08:09:57 +08:00
Him188
e9076b8ae0 Remove obsolete comments 2021-02-01 12:52:00 +08:00
Him188
3efa71fa82 PlatformLogger and ECDH implementation for Android. 2021-02-01 12:45:24 +08:00
Him188
bacfef584f Add android compilation target 2021-02-01 12:23:28 +08:00
Him188
2a7f0a3a8f Don't introduce new file BotConfigurationKt but merge into existing Utils (affected: top-level fun BotConfiguration). apiDump 2021-02-01 09:22:27 +08:00
Him188
f76e573b49 Add constructor-like BotConfiguration builder 2021-02-01 08:10:27 +08:00
Him188
c517e0685f Update docs 2021-01-29 14:00:24 +08:00
Him188
0a59a6d405 Ensure binary compatibility, apiDump 2021-01-29 12:09:50 +08:00
Him188
6cfd7a34ca Fix default file type from "" to DEFAULT_FORMAT_NAME 2021-01-29 11:39:54 +08:00
Him188
f18aecbbc1 Add experimental nextEventAsync 2021-01-29 11:22:07 +08:00
Him188
a82c68c7ec Fix nextEvent cancellation 2021-01-29 11:21:56 +08:00
Him188
49522fb5d3 Make UserProfile impl data class 2021-01-29 10:43:54 +08:00
Him188
32362f02c3 Add Stranger.asFriend and Stranger.asFriendOrNull 2021-01-28 18:02:53 +08:00
Him188
b30e098068 Add EventChannel.filter accepting non-suspend Predicates for Java users 2021-01-28 08:16:35 +08:00
Him188
4881b176a7 Add Group.setEssenceMessage(MessageChain) 2021-01-26 23:10:45 +08:00
Him188
b065b29119 Update docs 2021-01-26 23:05:41 +08:00
Him188
7e4424dc5a Make ShowImageFlag implement ConstrainSingle and MessageKey 2021-01-26 23:04:39 +08:00
HelloWorld
1df5479c0b
Merge pull request #921 from sandtechnology/showImage
Support detect show image, also update pb
2021-01-26 22:26:59 +08:00
mzdluo123
eec2e9f2c1
Merge remote-tracking branch 'origin/dev' into dev
# Conflicts:
#	mirai-core/src/commonMain/kotlin/contact/GroupImpl.kt
2021-01-26 22:11:08 +08:00
mzdluo123
19829b75f1
add: set group essence message #837 2021-01-26 22:10:05 +08:00
sandtechnology
dd9439d507 Support detect show image, also update pb 2021-01-26 21:22:46 +08:00
Him188
7a6e930fc7
Support key refresh (#901)
* Add skey tests

* t106

* Fix some protocol errors. skey refresh

* login extra

* Support Key refresh, close #833

* apiDump

* Merge with dev
2021-01-26 19:32:27 +08:00
Him188
d8b1505181
Highway big data channel (#917)
- Fix retryWithServers exception suppress
- ConfigPush BDH session
- ConfigPush SSO change server
- Upload group PTT silk, #577
- Support upload private image through highway, close #194;
- Add fallback strategies for uploading group voice #577 and private image #916
- Upload all resources through highway BDH
- Support concurrent uploading
- Add BotConfiguration.highwayUploadCoroutineCount

close #916, close #577, close #194
2021-01-26 19:08:01 +08:00
Him188
8ad0b91974 Fix blocking calls in suspend contexts 2021-01-26 13:38:23 +08:00
Him188
05d302e1a4 Fix docs 2021-01-26 12:42:54 +08:00
Him188
dac3b0f206 Add experimental notes for MusicShare 2021-01-24 01:18:07 +08:00
Him188
8e2e259618 Move queryProfile from Bot to IMirai and add User.queryProfile 2021-01-24 01:15:12 +08:00
Him188
8da048af63 Serialization support for MusicShare;
Rename MusicShare.type to kind;
Rename MusicType to MusicKind;
2021-01-24 00:39:05 +08:00
Him188
4977415b79 Add ConfigurationDsl to autoReconnectOnForceOffline 2021-01-23 23:48:58 +08:00
Him188
2e5b223b6a
支持使用QQ互联通道发送音乐分享 (#889)
* Add new MessageContent MusicShare and its protocol internals. #690, #682

* MusicShare sending

* MusicShare: MessageSource integration fundamentals

* - MessageReceipt integration for MusicShare
- Support MusicShare in QuoteReply: transform as PlainText
- Support LightApp refining, support decoding MusicShare

* Dump api for MusicShare

* Remove debugging code

* 2.1.0-dev-3

* Remove confusing providedSequenceIds in OnlineMessageSourceToGroupImpl

* fix build

Co-authored-by: wdvxdr <wdvxdr@foxmail.com>
2021-01-23 22:09:27 +08:00
Him188
d60006376c Rewrite Group sendMessageImpl, improve current Highway impls, for music share #889 #682 and further friend message highway #194, #577 2021-01-23 00:09:35 +08:00
Him188
66ae897f20 Add ForwardMessageBuilder.add(MessageEvent) 2021-01-23 00:07:37 +08:00
Him188
c7c83bcd03 Add BotConfiguration.autoReconnectOnForceOffline, close #835 2021-01-22 11:00:04 +08:00
sandtechnology
209b2b7616
Support decode the join request by member invite (#882)
* Support detect official bot, fix #439

* Fix wrong command name and add missed value

* Adapt to changed invite event

* Internal MessageData

* Fix build

* Fix wording

* Support decode the join request by member invite

* Fix shadow warning

* Fix build

* Adapt to MemberJoinEvent broadcast logic when accepted

* Downgrade blockingBridge version to 1.7.2 for passing build

* Fix binary compatibility

* Reformat code

* Update api

Co-authored-by: Him188 <Him188@mamoe.net>
2021-01-22 07:48:10 +08:00
Karlatemp
c77f94cd52
UserProfile query (#866)
* UserProfile query

* zip vReq0x5ebFieldId

* Move UserProfile to `net.mamoe.mirai.data`

* Move `queryProfile` to high-level api

* Add doc

* Update UserProfile.kt

* Make UserProfile experimental

* Convert UserProfile.sex to enum

* Remove debugging code

* Dump apis

Co-authored-by: Him188 <Him188@mamoe.net>
2021-01-22 07:47:57 +08:00
Him188
f1c6677af9 Add binary compatibility validator 2021-01-21 14:20:43 +08:00
Him188
988794343b Improve buildscript, fix publication 2021-01-21 10:08:21 +08:00
sandtechnology
3a5d707417
Support detect official bot, fix #439 (#810)
* Support detect official bot, fix #439

* Fix wrong command name and add missed value

* Adapt to changed invite event

* Internal MessageData

* Fix build

* Fix wording
2021-01-20 19:20:24 +08:00
Him188
73eb4813e5 Support joinTimestamp and lastSpeakTimestamp, fix #865, fix #394 2021-01-17 19:35:04 +08:00
Him188
3098a7d953 Broadcast FriendAddEvent on acceptNewFriendRequest 2021-01-17 17:18:11 +08:00
Him188
27f0c73dc3 Remove deprecated declarations 2021-01-15 17:49:20 +08:00
Karlatemp
a992b61261
Improve MessageChainBuilder 2021-01-14 23:10:43 +08:00
Him188
3b6b7ad377 Update docs 2021-01-14 18:05:33 +08:00
Him188
b49894a4f1 Merge remote-tracking branch 'origin/dev' into dev 2021-01-14 18:00:25 +08:00
Him188
ac7624dbad Update docs 2021-01-14 17:59:58 +08:00
Karlatemp
70ffca5138
Unregister listeners after test completed 2021-01-14 11:43:38 +08:00
Him188
70f28fd653 Make StrangerRelationChangeEvent sealed 2021-01-12 18:12:20 +08:00
Him188
0b2bb82d10 Change Member to NormalMember for capable events 2021-01-12 18:11:47 +08:00
sandtechnology
b9f78be0d5
Support C2C sync and fragmented message decoding of friend (#841)
* Support C2C sync and fragmented message in friend

* Update mirai-core-api/src/commonMain/kotlin/event/events/MessageSyncEvent.kt

* Update mirai-core-api/src/commonMain/kotlin/event/events/MessageSyncEvent.kt

* Update mirai-core-api/src/commonMain/kotlin/event/events/MessageSyncEvent.kt

* Update mirai-core-api/src/commonMain/kotlin/event/events/MessageSyncEvent.kt

Co-authored-by: Him188 <Him188@mamoe.net>
2021-01-11 23:32:32 +08:00
Him188
f053c4cfc0 Improve buildMessageSource and update docs 2021-01-11 22:50:40 +08:00
Him188
98efbfeead Update docs 2021-01-11 22:36:48 +08:00
Him188
5a867bdaa5 Deprecate MessageSourceAmender.metadataFrom in favour of .metadata 2021-01-11 22:33:26 +08:00
Him188
b41a742ece Rename toMiraiCode to serializeToMiraiCode;
Rename parseFromMiraiCode to deserializeFromMiraiCode
2021-01-11 22:19:27 +08:00
Him188
78bc30ae5d Update docs 2021-01-11 22:12:00 +08:00
Him188
e8c0ef192c Update docs 2021-01-11 22:05:04 +08:00
Him188
d1c9acf7f4 Migrate to new GroupTempMessageEvent 2021-01-11 19:26:15 +08:00
Him188
564c961d3f Add low level APIs for recalling message 2021-01-11 19:11:46 +08:00
Him188
a7dabd63aa Allow modifying IMirai.Http 2021-01-11 18:57:01 +08:00
Him188
45c5e0fb9c Change ExternalResource.uploadAsVoice parameter type from Group to Contact for future compatibility. 2021-01-11 18:51:22 +08:00
Him188
93fcb566fd Introduce AsyncRecallResult for getting result of recallIn 2021-01-11 18:36:04 +08:00