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
import net.mamoe.mirai.utils.*
import net.mamoe.mirai.utils.io.toUHexString
import kotlin.coroutines.CoroutineContext
import kotlin.properties.Delegates
internal abstract class ContactImpl : Contact {
override fun hashCode(): Int {
......@@ -51,6 +50,7 @@ internal class QQImpl(bot: QQAndroidBot, override val coroutineContext: Coroutin
) { "send message failed" }
}
}
override suspend fun uploadImage(image: ExternalImage): Image = try {
bot.network.run {
val response = LongConn.OffPicUp(
......@@ -129,8 +129,8 @@ internal class QQImpl(bot: QQAndroidBot, override val coroutineContext: Coroutin
internal class MemberImpl(
qq: QQImpl,
initGroupCard: String,
initSpecialTitle: String,
var _groupCard: String,
var _specialTitle: String,
group: GroupImpl,
override val coroutineContext: CoroutineContext,
override val permission: MemberPermission
......@@ -138,32 +138,36 @@ internal class MemberImpl(
override val group: GroupImpl by group.unsafeWeakRef()
val qq: QQImpl by qq.unsafeWeakRef()
override var groupCard: String by Delegates.observable(initGroupCard) { _, old, new ->
override var groupCard: String
get() = _groupCard
set(newValue) {
group.checkBotPermissionOperator()
if (new != old) {
if (_groupCard != newValue) {
_groupCard = newValue
launch {
bot.network.run {
TroopManagement.EditGroupNametag(
bot.client,
this@MemberImpl,
new
newValue
).sendWithoutExpect()
}
}
}
}
override var specialTitle: String by Delegates.observable(initSpecialTitle) { _, old, new ->
override var specialTitle: String
get() = _specialTitle
set(newValue) {
group.checkBotPermissionOperator()
if (new != old) {
if (_specialTitle != newValue) {
_specialTitle = newValue
launch {
bot.network.run {
TroopManagement.EditSpecialTitle(
bot.client,
this@MemberImpl,
new
newValue
).sendWithoutExpect()
}
}
......@@ -233,19 +237,22 @@ internal class GroupImpl(
bot: QQAndroidBot, override val coroutineContext: CoroutineContext,
override val id: Long,
val uin: Long,
initName: String,
initAnnouncement: String,
initAllowMemberInvite: Boolean,
initConfessTalk: Boolean,
initMuteAll: Boolean,
initAutoApprove: Boolean,
initAnonymousChat: Boolean,
var _name: String,
var _announcement: String,
var _allowMemberInvite: Boolean,
var _confessTalk: Boolean,
var _muteAll: Boolean,
var _autoApprove: Boolean,
var _anonymousChat: Boolean,
override val members: ContactList<Member>
) : ContactImpl(), Group {
override var name by Delegates.observable(initName) { _, oldValue, newValue ->
override var name: String
get() = _name
set(newValue) {
this.checkBotPermissionOperator()
if (oldValue != newValue) {
if (_name != newValue) {
_name = newValue
launch {
bot.network.run {
TroopManagement.GroupOperation.name(
......@@ -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()
if (oldValue != newValue) {
if (_announcement != newValue) {
_announcement = newValue
launch {
bot.network.run {
TroopManagement.GroupOperation.memo(
......@@ -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()
if (oldValue != newValue) {
if (_allowMemberInvite != newValue) {
_allowMemberInvite = newValue
launch {
bot.network.run {
TroopManagement.GroupOperation.allowMemberInvite(
......@@ -289,17 +302,24 @@ internal class GroupImpl(
}
}
override var autoApprove: Boolean by Delegates.observable(initAutoApprove) { _, oldValue, newValue ->
TODO("Group.autoApprove implementation")
override var autoApprove: Boolean
get() = _autoApprove
set(newValue) {
TODO()
}
override val anonymousChat: Boolean by Delegates.observable(initAnonymousChat) { _, oldValue, newValue ->
TODO("Group.anonymousChat implementation")
override var anonymousChat: Boolean
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()
if (oldValue != newValue) {
if (_confessTalk != newValue) {
_confessTalk = newValue
launch {
bot.network.run {
TroopManagement.GroupOperation.confessTalk(
......@@ -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()
if (oldValue != newValue) {
if (_muteAll != newValue) {
_muteAll = newValue
launch {
bot.network.run {
TroopManagement.GroupOperation.muteAll(
......@@ -340,7 +363,7 @@ internal class GroupImpl(
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 {
......
......@@ -185,13 +185,13 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
coroutineContext = bot.coroutineContext,
id = troopNum.groupCode,
uin = troopNum.groupUin,
initName = troopNum.groupName,
initAnnouncement = troopNum.groupMemo,
initAllowMemberInvite = groupInfoResponse.allowMemberInvite,
initConfessTalk = groupInfoResponse.confessTalk,
initMuteAll = troopNum.dwShutUpTimestamp != 0L,
initAutoApprove = groupInfoResponse.autoApprove,
initAnonymousChat = groupInfoResponse.allowAnonymousChat,
_name = troopNum.groupName,
_announcement = troopNum.groupMemo,
_allowMemberInvite = groupInfoResponse.allowMemberInvite,
_confessTalk = groupInfoResponse.confessTalk,
_muteAll = troopNum.dwShutUpTimestamp != 0L,
_autoApprove = groupInfoResponse.autoApprove,
_anonymousChat = groupInfoResponse.allowAnonymousChat,
members = contactList
)
toGet[group] = contactList
......@@ -260,8 +260,8 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
data.members.forEach {
val member = MemberImpl(
qq = bot.QQ(it.memberUin) as QQImpl,
initGroupCard = it.autoRemark ?: it.nick,
initSpecialTitle = it.sSpecialTitle ?: "",
_groupCard = it.autoRemark ?: it.nick,
_specialTitle = it.sSpecialTitle ?: "",
group = group,
coroutineContext = group.coroutineContext,
permission = when {
......
......@@ -26,7 +26,7 @@ internal data class RequestPushNotify(
) : JceStruct, Packet
@Serializable
internal data class MsgInfo(
internal class MsgInfo(
@SerialId(0) val lFromUin: Long? = 0L,
@SerialId(1) val uMsgTime: Long? = 0L,
@SerialId(2) val shMsgType: Short,
......
......@@ -33,7 +33,7 @@ class GentleImage(val contact: Contact, val keyword: String) {
)
val result =
Json.plain.parse(
Json.nonstrict.parse(
Result.serializer(),
Jsoup.connect("https://api.lolicon.app/setu/?r18=$r18" + if (keyword.isNotBlank()) "&keyword=$keyword&num=10" else "")
.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