Commit 96c3e775 authored by jiahua.liu's avatar jiahua.liu

Merge remote-tracking branch 'origin/master'

parents 9d9089dd 13d6bd29
...@@ -20,7 +20,6 @@ import net.mamoe.mirai.qqandroid.utils.toIpV4AddressString ...@@ -20,7 +20,6 @@ import net.mamoe.mirai.qqandroid.utils.toIpV4AddressString
import net.mamoe.mirai.utils.* import net.mamoe.mirai.utils.*
import net.mamoe.mirai.utils.io.toUHexString import net.mamoe.mirai.utils.io.toUHexString
import kotlin.coroutines.CoroutineContext import kotlin.coroutines.CoroutineContext
import kotlin.properties.Delegates
internal abstract class ContactImpl : Contact { internal abstract class ContactImpl : Contact {
override fun hashCode(): Int { override fun hashCode(): Int {
...@@ -51,6 +50,7 @@ internal class QQImpl(bot: QQAndroidBot, override val coroutineContext: Coroutin ...@@ -51,6 +50,7 @@ internal class QQImpl(bot: QQAndroidBot, override val coroutineContext: Coroutin
) { "send message failed" } ) { "send message failed" }
} }
} }
override suspend fun uploadImage(image: ExternalImage): Image = try { override suspend fun uploadImage(image: ExternalImage): Image = try {
bot.network.run { bot.network.run {
val response = LongConn.OffPicUp( val response = LongConn.OffPicUp(
...@@ -129,8 +129,8 @@ internal class QQImpl(bot: QQAndroidBot, override val coroutineContext: Coroutin ...@@ -129,8 +129,8 @@ internal class QQImpl(bot: QQAndroidBot, override val coroutineContext: Coroutin
internal class MemberImpl( internal class MemberImpl(
qq: QQImpl, qq: QQImpl,
initGroupCard: String, var _groupCard: String,
initSpecialTitle: String, var _specialTitle: String,
group: GroupImpl, group: GroupImpl,
override val coroutineContext: CoroutineContext, override val coroutineContext: CoroutineContext,
override val permission: MemberPermission override val permission: MemberPermission
...@@ -138,32 +138,36 @@ internal class MemberImpl( ...@@ -138,32 +138,36 @@ internal class MemberImpl(
override val group: GroupImpl by group.unsafeWeakRef() override val group: GroupImpl by group.unsafeWeakRef()
val qq: QQImpl by qq.unsafeWeakRef() val qq: QQImpl by qq.unsafeWeakRef()
override var groupCard: String
override var groupCard: String by Delegates.observable(initGroupCard) { _, old, new -> get() = _groupCard
set(newValue) {
group.checkBotPermissionOperator() group.checkBotPermissionOperator()
if (new != old) { if (_groupCard != newValue) {
_groupCard = newValue
launch { launch {
bot.network.run { bot.network.run {
TroopManagement.EditGroupNametag( TroopManagement.EditGroupNametag(
bot.client, bot.client,
this@MemberImpl, this@MemberImpl,
new newValue
).sendWithoutExpect() ).sendWithoutExpect()
} }
} }
} }
} }
override var specialTitle: String by Delegates.observable(initSpecialTitle) { _, old, new -> override var specialTitle: String
get() = _specialTitle
set(newValue) {
group.checkBotPermissionOperator() group.checkBotPermissionOperator()
if (new != old) { if (_specialTitle != newValue) {
_specialTitle = newValue
launch { launch {
bot.network.run { bot.network.run {
TroopManagement.EditSpecialTitle( TroopManagement.EditSpecialTitle(
bot.client, bot.client,
this@MemberImpl, this@MemberImpl,
new newValue
).sendWithoutExpect() ).sendWithoutExpect()
} }
} }
...@@ -233,19 +237,22 @@ internal class GroupImpl( ...@@ -233,19 +237,22 @@ internal class GroupImpl(
bot: QQAndroidBot, override val coroutineContext: CoroutineContext, bot: QQAndroidBot, override val coroutineContext: CoroutineContext,
override val id: Long, override val id: Long,
val uin: Long, val uin: Long,
initName: String, var _name: String,
initAnnouncement: String, var _announcement: String,
initAllowMemberInvite: Boolean, var _allowMemberInvite: Boolean,
initConfessTalk: Boolean, var _confessTalk: Boolean,
initMuteAll: Boolean, var _muteAll: Boolean,
initAutoApprove: Boolean, var _autoApprove: Boolean,
initAnonymousChat: Boolean, var _anonymousChat: Boolean,
override val members: ContactList<Member> override val members: ContactList<Member>
) : ContactImpl(), Group { ) : ContactImpl(), Group {
override var name by Delegates.observable(initName) { _, oldValue, newValue -> override var name: String
get() = _name
set(newValue) {
this.checkBotPermissionOperator() this.checkBotPermissionOperator()
if (oldValue != newValue) { if (_name != newValue) {
_name = newValue
launch { launch {
bot.network.run { bot.network.run {
TroopManagement.GroupOperation.name( TroopManagement.GroupOperation.name(
...@@ -258,9 +265,12 @@ internal class GroupImpl( ...@@ -258,9 +265,12 @@ internal class GroupImpl(
} }
} }
override var announcement: String by Delegates.observable(initAnnouncement) { _, oldValue, newValue -> override var announcement: String
get() = _announcement
set(newValue) {
this.checkBotPermissionOperator() this.checkBotPermissionOperator()
if (oldValue != newValue) { if (_announcement != newValue) {
_announcement = newValue
launch { launch {
bot.network.run { bot.network.run {
TroopManagement.GroupOperation.memo( TroopManagement.GroupOperation.memo(
...@@ -274,9 +284,12 @@ internal class GroupImpl( ...@@ -274,9 +284,12 @@ internal class GroupImpl(
} }
override var allowMemberInvite: Boolean by Delegates.observable(initAllowMemberInvite) { _, oldValue, newValue -> override var allowMemberInvite: Boolean
get() = _allowMemberInvite
set(newValue) {
this.checkBotPermissionOperator() this.checkBotPermissionOperator()
if (oldValue != newValue) { if (_allowMemberInvite != newValue) {
_allowMemberInvite = newValue
launch { launch {
bot.network.run { bot.network.run {
TroopManagement.GroupOperation.allowMemberInvite( TroopManagement.GroupOperation.allowMemberInvite(
...@@ -289,17 +302,24 @@ internal class GroupImpl( ...@@ -289,17 +302,24 @@ internal class GroupImpl(
} }
} }
override var autoApprove: Boolean by Delegates.observable(initAutoApprove) { _, oldValue, newValue -> override var autoApprove: Boolean
TODO("Group.autoApprove implementation") get() = _autoApprove
set(newValue) {
TODO()
} }
override val anonymousChat: Boolean by Delegates.observable(initAnonymousChat) { _, oldValue, newValue -> override var anonymousChat: Boolean
TODO("Group.anonymousChat implementation") get() = _anonymousChat
set(newValue) {
TODO()
} }
override var confessTalk: Boolean by Delegates.observable(initConfessTalk) { _, oldValue, newValue -> override var confessTalk: Boolean
get() = _confessTalk
set(newValue) {
this.checkBotPermissionOperator() this.checkBotPermissionOperator()
if (oldValue != newValue) { if (_confessTalk != newValue) {
_confessTalk = newValue
launch { launch {
bot.network.run { bot.network.run {
TroopManagement.GroupOperation.confessTalk( TroopManagement.GroupOperation.confessTalk(
...@@ -313,9 +333,12 @@ internal class GroupImpl( ...@@ -313,9 +333,12 @@ internal class GroupImpl(
} }
override var muteAll: Boolean by Delegates.observable(initMuteAll) { _, oldValue, newValue -> override var muteAll: Boolean
get() = _muteAll
set(newValue) {
this.checkBotPermissionOperator() this.checkBotPermissionOperator()
if (oldValue != newValue) { if (_muteAll != newValue) {
_muteAll = newValue
launch { launch {
bot.network.run { bot.network.run {
TroopManagement.GroupOperation.muteAll( TroopManagement.GroupOperation.muteAll(
...@@ -340,7 +363,7 @@ internal class GroupImpl( ...@@ -340,7 +363,7 @@ internal class GroupImpl(
override operator fun get(id: Long): Member { override operator fun get(id: Long): Member {
return members.delegate.filteringGetOrNull { it.id == id } ?: throw NoSuchElementException("for group id $id") return members.delegate.filteringGetOrNull { it.id == id } ?: throw NoSuchElementException("member $id not found in group $uin")
} }
override fun contains(id: Long): Boolean { override fun contains(id: Long): Boolean {
......
...@@ -185,13 +185,13 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler ...@@ -185,13 +185,13 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
coroutineContext = bot.coroutineContext, coroutineContext = bot.coroutineContext,
id = troopNum.groupCode, id = troopNum.groupCode,
uin = troopNum.groupUin, uin = troopNum.groupUin,
initName = troopNum.groupName, _name = troopNum.groupName,
initAnnouncement = troopNum.groupMemo, _announcement = troopNum.groupMemo,
initAllowMemberInvite = groupInfoResponse.allowMemberInvite, _allowMemberInvite = groupInfoResponse.allowMemberInvite,
initConfessTalk = groupInfoResponse.confessTalk, _confessTalk = groupInfoResponse.confessTalk,
initMuteAll = troopNum.dwShutUpTimestamp != 0L, _muteAll = troopNum.dwShutUpTimestamp != 0L,
initAutoApprove = groupInfoResponse.autoApprove, _autoApprove = groupInfoResponse.autoApprove,
initAnonymousChat = groupInfoResponse.allowAnonymousChat, _anonymousChat = groupInfoResponse.allowAnonymousChat,
members = contactList members = contactList
) )
toGet[group] = contactList toGet[group] = contactList
...@@ -260,8 +260,8 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler ...@@ -260,8 +260,8 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
data.members.forEach { data.members.forEach {
val member = MemberImpl( val member = MemberImpl(
qq = bot.QQ(it.memberUin) as QQImpl, qq = bot.QQ(it.memberUin) as QQImpl,
initGroupCard = it.autoRemark ?: it.nick, _groupCard = it.autoRemark ?: it.nick,
initSpecialTitle = it.sSpecialTitle ?: "", _specialTitle = it.sSpecialTitle ?: "",
group = group, group = group,
coroutineContext = group.coroutineContext, coroutineContext = group.coroutineContext,
permission = when { permission = when {
......
...@@ -26,7 +26,7 @@ internal data class RequestPushNotify( ...@@ -26,7 +26,7 @@ internal data class RequestPushNotify(
) : JceStruct, Packet ) : JceStruct, Packet
@Serializable @Serializable
internal data class MsgInfo( internal class MsgInfo(
@SerialId(0) val lFromUin: Long? = 0L, @SerialId(0) val lFromUin: Long? = 0L,
@SerialId(1) val uMsgTime: Long? = 0L, @SerialId(1) val uMsgTime: Long? = 0L,
@SerialId(2) val shMsgType: Short, @SerialId(2) val shMsgType: Short,
......
...@@ -33,7 +33,7 @@ class GentleImage(val contact: Contact, val keyword: String) { ...@@ -33,7 +33,7 @@ class GentleImage(val contact: Contact, val keyword: String) {
) )
val result = val result =
Json.plain.parse( Json.nonstrict.parse(
Result.serializer(), Result.serializer(),
Jsoup.connect("https://api.lolicon.app/setu/?r18=$r18" + if (keyword.isNotBlank()) "&keyword=$keyword&num=10" else "") Jsoup.connect("https://api.lolicon.app/setu/?r18=$r18" + if (keyword.isNotBlank()) "&keyword=$keyword&num=10" else "")
.ignoreContentType(true) .ignoreContentType(true)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment