
love.forte.simbot.api.sender.Setter.kt Maven / Gradle / Ivy
/*
*
* * Copyright (c) 2021. ForteScarlet All rights reserved.
* * Project simple-robot
* * File MiraiAvatar.kt
* *
* * You can contact the author through the following channels:
* * github https://github.com/ForteScarlet
* * gitee https://gitee.com/ForteScarlet
* * email [email protected]
* * QQ 1149159218
*
*/
package love.forte.simbot.api.sender
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import love.forte.common.utils.Carrier
import love.forte.simbot.api.message.assists.Flag
import love.forte.simbot.api.message.containers.AccountCodeContainer
import love.forte.simbot.api.message.containers.AccountContainer
import love.forte.simbot.api.message.containers.GroupCodeContainer
import love.forte.simbot.api.message.containers.GroupContainer
import love.forte.simbot.api.message.events.FriendAddRequest
import love.forte.simbot.api.message.events.GroupAddRequest
import love.forte.simbot.api.message.events.MessageGet
import java.util.concurrent.TimeUnit
import kotlin.coroutines.CoroutineContext
import kotlin.coroutines.EmptyCoroutineContext
/**
*
* 状态设置器。
* 一般用于发送一些消息无关的数据,例如设置禁言等。
*
*
* @author ForteScarlet
* @date 2020/9/2
* @since
*/
public interface Setter : Communicator {
/**
* 一个标识用的接口,用于标记一个 [Setter] 接口的实现为 **默认** 送信器。
*/
interface Def : Setter {
override val coroutineContext: CoroutineContext get() = EmptyCoroutineContext
}
/**
* 处理好友添加申请。
*
* @param flag [FriendAddRequest]事件的 [flag][FriendAddRequest.flag]。
* @param friendRemark 如果为同意,则可以设置好友的备注。可以为null。
* @param agree 是否同意。
* @param blackList 是否列入黑名单,即不再接受此人申请。
*
* @return 设置操作的回执,一般代表是否成功。**不会捕获异常**。
*/
@JvmSynthetic
suspend fun friendAddRequest(
flag: Flag,
friendRemark: String?,
agree: Boolean,
blackList: Boolean,
): Carrier
@JvmSynthetic
suspend fun friendAddRequestAccept(
flag: Flag,
friendRemark: String?,
blackList: Boolean,
): Carrier =
friendAddRequest(flag, friendRemark, true, blackList)
@JvmSynthetic
suspend fun friendAddRequestAccept(flag: Flag, blackList: Boolean): Carrier =
friendAddRequestAccept(flag, friendRemark = null, blackList = blackList)
@JvmSynthetic
suspend fun friendAddRequestAccept(flag: Flag): Carrier =
friendAddRequestAccept(flag, friendRemark = null, blackList = false)
@JvmSynthetic
suspend fun friendAddRequestReject(
flag: Flag,
friendRemark: String?,
blackList: Boolean,
): Carrier =
friendAddRequest(flag, friendRemark, false, blackList)
@JvmSynthetic
suspend fun friendAddRequestReject(flag: Flag, blackList: Boolean): Carrier =
friendAddRequestReject(flag, friendRemark = null, blackList = blackList)
@JvmSynthetic
suspend fun friendAddRequestReject(flag: Flag): Carrier =
friendAddRequestReject(flag, friendRemark = null, blackList = false)
//region set friend add request blocking
/////////////// blocking //////////////////
fun setFriendAddRequest(
flag: Flag,
friendRemark: String?,
agree: Boolean,
blackList: Boolean,
): Carrier = runBlocking { friendAddRequest(flag, friendRemark, agree, blackList) }
fun acceptFriendAddRequest(
flag: Flag,
friendRemark: String?,
blackList: Boolean,
): Carrier = runBlocking { friendAddRequestAccept(flag, friendRemark, blackList) }
fun acceptFriendAddRequest(flag: Flag, blackList: Boolean): Carrier =
runBlocking { friendAddRequestAccept(flag, blackList) }
fun acceptFriendAddRequest(flag: Flag): Carrier =
runBlocking { friendAddRequestAccept(flag) }
fun rejectFriendAddRequest(
flag: Flag,
friendRemark: String?,
blackList: Boolean,
): Carrier = runBlocking { friendAddRequestReject(flag, friendRemark, blackList) }
fun rejectFriendAddRequest(flag: Flag, blackList: Boolean): Carrier =
runBlocking { friendAddRequestReject(flag, blackList) }
fun rejectFriendAddRequest(flag: Flag): Carrier =
runBlocking { friendAddRequestReject(flag) }
//endregion
//region set friend add request async
/////////////// async //////////////////
fun setFriendAddRequestAsync(
flag: Flag,
friendRemark: String?,
agree: Boolean,
blackList: Boolean,
) {
launch { friendAddRequest(flag, friendRemark, agree, blackList) }
}
fun acceptFriendAddRequestAsync(
flag: Flag,
friendRemark: String?,
blackList: Boolean,
) {
launch { friendAddRequestAccept(flag, friendRemark, blackList) }
}
fun acceptFriendAddRequestAsync(flag: Flag, blackList: Boolean) {
launch { friendAddRequestAccept(flag, blackList) }
}
fun acceptFriendAddRequestAsync(flag: Flag) {
launch { friendAddRequestAccept(flag) }
}
fun rejectFriendAddRequestAsync(
flag: Flag,
friendRemark: String?,
blackList: Boolean,
) {
launch { friendAddRequestReject(flag, friendRemark, blackList) }
}
fun rejectFriendAddRequestAsync(flag: Flag, blackList: Boolean) {
launch { friendAddRequestReject(flag, blackList) }
}
fun rejectFriendAddRequestAsync(flag: Flag) {
launch { friendAddRequestReject(flag) }
}
//endregion
/**
* 处理群添加申请。
*
* @param flag [GroupAddRequest] 事件的 [flag][GroupAddRequest.flag]。
* @param agree 是否同意。
* @param blackList 是否列入黑名单,即不再接受此人申请。
* @param why 如果是拒绝,则此处可以填写拒绝理由。
*
* @return 设置操作的回执,一般代表是否成功。**不会捕获异常**。
*/
@JvmSynthetic
suspend fun groupAddRequest(
flag: Flag,
agree: Boolean,
blackList: Boolean,
why: String?,
): Carrier
@JvmSynthetic
suspend fun groupAddRequestAccept(
flag: Flag,
blackList: Boolean,
why: String?,
): Carrier = groupAddRequest(flag, true, blackList, why)
@JvmSynthetic
suspend fun groupAddRequestAccept(flag: Flag, why: String?): Carrier =
groupAddRequestAccept(flag, false, why)
@JvmSynthetic
suspend fun groupAddRequestAccept(flag: Flag): Carrier =
groupAddRequestAccept(flag, false, null)
@JvmSynthetic
suspend fun groupAddRequestReject(
flag: Flag,
blackList: Boolean,
why: String?,
): Carrier =
groupAddRequest(flag, false, blackList, why)
@JvmSynthetic
suspend fun groupAddRequestReject(flag: Flag, why: String?): Carrier =
groupAddRequestReject(flag, false, why)
@JvmSynthetic
suspend fun groupAddRequestReject(flag: Flag): Carrier =
groupAddRequestReject(flag, false, null)
//region set group add request blocking
//////////////// blocking //////////////////
fun setGroupAddRequest(
flag: Flag,
agree: Boolean,
blackList: Boolean,
why: String?,
): Carrier = runBlocking { groupAddRequest(flag, agree, blackList, why) }
fun acceptGroupAddRequest(
flag: Flag,
blackList: Boolean,
why: String?,
): Carrier = runBlocking { groupAddRequestAccept(flag, blackList, why) }
fun acceptGroupAddRequest(flag: Flag, why: String?): Carrier =
runBlocking { groupAddRequestAccept(flag, why) }
fun acceptGroupAddRequest(flag: Flag): Carrier =
runBlocking { groupAddRequestAccept(flag) }
fun rejectGroupAddRequest(
flag: Flag,
blackList: Boolean,
why: String?,
): Carrier = runBlocking { groupAddRequestReject(flag, blackList, why) }
fun rejectGroupAddRequest(flag: Flag, why: String?): Carrier =
runBlocking { groupAddRequestReject(flag, why) }
fun rejectGroupAddRequest(flag: Flag): Carrier =
runBlocking { groupAddRequestReject(flag) }
//endregion
//region set group add request async
//////////////// async //////////////////
fun setGroupAddRequestAsync(
flag: Flag,
agree: Boolean,
blackList: Boolean,
why: String?,
) {
launch { groupAddRequest(flag, agree, blackList, why) }
}
fun acceptGroupAddRequestAsync(
flag: Flag,
blackList: Boolean,
why: String?,
) {
launch { groupAddRequestAccept(flag, blackList, why) }
}
fun acceptGroupAddRequestAsync(flag: Flag, why: String?) {
launch { groupAddRequestAccept(flag, why) }
}
fun acceptGroupAddRequestAsync(flag: Flag) {
launch { groupAddRequestAccept(flag) }
}
fun rejectGroupAddRequestAsync(
flag: Flag,
blackList: Boolean,
why: String?,
) {
launch { groupAddRequestReject(flag, blackList, why) }
}
fun rejectGroupAddRequestAsync(flag: Flag, why: String?) {
launch { groupAddRequestReject(flag, why) }
}
fun rejectGroupAddRequestAsync(flag: Flag) {
launch { groupAddRequestReject(flag) }
}
//endregion
/**
* 设置群管理。 一般来讲需要账号权限为群主才能操作。
*
* @param groupCode 群号
* @param memberCode 成员账号
* @param promotion `true`为设置为管理员,`false`为取消管理员。
*
* @return 设置操作的回执,一般代表是否成功。**不会捕获异常**。
*/
@JvmSynthetic
suspend fun groupAdmin(groupCode: String, memberCode: String, promotion: Boolean): Carrier
@JvmSynthetic
suspend fun groupAdmin(groupCode: Long, memberCode: Long, promotion: Boolean): Carrier =
groupAdmin(groupCode.toString(), memberCode.toString(), promotion)
@JvmSynthetic
suspend fun groupAdmin(
group: GroupCodeContainer,
member: AccountCodeContainer,
promotion: Boolean,
): Carrier =
groupAdmin(group.groupCode, member.accountCode, promotion)
@JvmSynthetic
suspend fun groupAdmin(group: GroupContainer, member: AccountContainer, promotion: Boolean): Carrier =
groupAdmin(group.groupInfo, member.accountInfo, promotion)
@JvmSynthetic
suspend fun groupAdmin(groupAccountMsg: T, promotion: Boolean): Carrier
where T : GroupCodeContainer,
T : AccountCodeContainer =
groupAdmin(groupAccountMsg, groupAccountMsg, promotion)
@JvmSynthetic
suspend fun groupAdmin(groupAccountMsg: T, promotion: Boolean): Carrier
where T : GroupContainer,
T : AccountContainer =
groupAdmin(groupAccountMsg.groupInfo, groupAccountMsg.accountInfo, promotion)
//////////////// blocking ///////////////////
fun setGroupAdmin(groupCode: String, memberCode: String, promotion: Boolean): Carrier =
runBlocking { groupAdmin(groupCode, memberCode, promotion) }
fun setGroupAdmin(groupCode: Long, memberCode: Long, promotion: Boolean): Carrier =
runBlocking { groupAdmin(groupCode, memberCode, promotion) }
fun setGroupAdmin(group: GroupCodeContainer, member: AccountCodeContainer, promotion: Boolean): Carrier =
runBlocking { groupAdmin(group, member, promotion) }
fun setGroupAdmin(group: GroupContainer, member: AccountContainer, promotion: Boolean): Carrier =
runBlocking { groupAdmin(group, member, promotion) }
fun setGroupAdmin(groupAccountMsg: T, promotion: Boolean): Carrier
where T : GroupCodeContainer,
T : AccountCodeContainer =
runBlocking { groupAdmin(groupAccountMsg, groupAccountMsg, promotion) }
fun setGroupAdmin(groupAccountMsg: T, promotion: Boolean): Carrier
where T : GroupContainer,
T : AccountContainer =
runBlocking { groupAdmin(groupAccountMsg, promotion) }
/**
* 设置群匿名聊天。
* **不会捕获异常**。
* @param group 群号
* @param agree 是否允许群匿名聊天
*
* @return 设置操作的回执,一般代表最终设置后的开启状态。如果不支持设置的话返回值则代表当前状态。
*/
@JvmSynthetic
suspend fun groupAnonymous(group: String, agree: Boolean): Carrier
@JvmSynthetic
suspend fun groupAnonymous(group: Long, agree: Boolean): Carrier = groupAnonymous(group.toString(), agree)
@JvmSynthetic
suspend fun groupAnonymous(group: GroupCodeContainer, agree: Boolean): Carrier =
groupAnonymous(group.groupCode, agree)
@JvmSynthetic
suspend fun groupAnonymous(group: GroupContainer, agree: Boolean): Carrier =
groupAnonymous(group.groupInfo, agree)
//region set group anonymous blocking
////////////// blocking ///////////////
fun setGroupAnonymous(group: String, agree: Boolean): Carrier = runBlocking { groupAnonymous(group, agree) }
fun setGroupAnonymous(group: Long, agree: Boolean): Carrier = runBlocking { groupAnonymous(group, agree) }
fun setGroupAnonymous(group: GroupCodeContainer, agree: Boolean): Carrier =
runBlocking { groupAnonymous(group, agree) }
fun setGroupAnonymous(group: GroupContainer, agree: Boolean): Carrier =
runBlocking { groupAnonymous(group, agree) }
//endregion
//region set group anonymous async
////////////// async ///////////////
fun setGroupAnonymousAsync(group: String, agree: Boolean) {
launch { groupAnonymous(group, agree) }
}
fun setGroupAnonymousAsync(group: Long, agree: Boolean) {
launch { groupAnonymous(group, agree) }
}
fun setGroupAnonymousAsync(group: GroupCodeContainer, agree: Boolean) {
launch { groupAnonymous(group, agree) }
}
fun setGroupAnonymousAsync(group: GroupContainer, agree: Boolean) {
launch { groupAnonymous(group, agree) }
}
//endregion
/**
* 群内禁言某人。
*
* @param groupCode 群号
* @param memberCode 被禁言者账号
* @param time 时长。
* @param timeUnit 时间类型。默认为 **秒**
*
* @return 设置操作的回执,一般代表是否成功。**不会捕获异常**。
*/
@JvmSynthetic
suspend fun groupBan(groupCode: String, memberCode: String, time: Long, timeUnit: TimeUnit): Carrier
@JvmSynthetic
suspend fun groupBan(groupCode: Long, memberCode: Long, time: Long, timeUnit: TimeUnit): Carrier =
groupBan(groupCode.toString(), memberCode.toString(), time, timeUnit)
@JvmSynthetic
suspend fun groupBan(
group: GroupCodeContainer,
member: AccountCodeContainer,
time: Long,
timeUnit: TimeUnit,
): Carrier =
groupBan(group.groupCode, member.accountCode, time, timeUnit)
@JvmSynthetic
suspend fun groupBan(
group: GroupContainer,
member: AccountContainer,
time: Long,
timeUnit: TimeUnit,
): Carrier =
groupBan(group.groupInfo, member.accountInfo, time, timeUnit)
@JvmSynthetic
suspend fun groupBan(groupAccountMsg: T, time: Long, timeUnit: TimeUnit): Carrier
where T : GroupCodeContainer,
T : AccountCodeContainer =
groupBan(groupAccountMsg, groupAccountMsg, time, timeUnit)
@JvmSynthetic
suspend fun groupBan(groupAccountMsg: T, time: Long, timeUnit: TimeUnit): Carrier
where T : GroupContainer,
T : AccountContainer =
groupBan(groupAccountMsg.groupInfo, groupAccountMsg.accountInfo, time, timeUnit)
@JvmSynthetic
suspend fun groupBan(groupCode: String, memberCode: String, time: Long): Carrier =
groupBan(groupCode, memberCode, time, TimeUnit.SECONDS)
@JvmSynthetic
suspend fun groupBan(groupCode: Long, memberCode: Long, time: Long): Carrier =
groupBan(groupCode.toString(), memberCode.toString(), time, TimeUnit.SECONDS)
@JvmSynthetic
suspend fun groupBan(group: GroupCodeContainer, member: AccountCodeContainer, time: Long): Carrier =
groupBan(group.groupCode, member.accountCode, time)
@JvmSynthetic
suspend fun groupBan(group: GroupContainer, member: AccountContainer, time: Long): Carrier =
groupBan(group.groupInfo, member.accountInfo, time)
@JvmSynthetic
suspend fun groupBan(groupAccountMsg: T, time: Long): Carrier
where T : GroupCodeContainer,
T : AccountCodeContainer =
groupBan(groupAccountMsg, groupAccountMsg, time)
@JvmSynthetic
suspend fun groupBan(groupAccountMsg: T, time: Long): Carrier
where T : GroupContainer,
T : AccountContainer =
groupBan(groupAccountMsg.groupInfo, groupAccountMsg.accountInfo, time)
//region set group ban blocking
///////////// blocking /////////////////
fun setGroupBan(groupCode: String, memberCode: String, time: Long, timeUnit: TimeUnit): Carrier =
runBlocking { groupBan(groupCode, memberCode, time, timeUnit) }
fun setGroupBan(groupCode: Long, memberCode: Long, time: Long, timeUnit: TimeUnit): Carrier =
runBlocking { groupBan(groupCode, memberCode, time, timeUnit) }
fun setGroupBan(
group: GroupCodeContainer,
member: AccountCodeContainer,
time: Long,
timeUnit: TimeUnit,
): Carrier =
runBlocking { groupBan(group, member, time, timeUnit) }
fun setGroupBan(group: GroupContainer, member: AccountContainer, time: Long, timeUnit: TimeUnit): Carrier =
runBlocking { groupBan(group, member, time, timeUnit) }
fun setGroupBan(groupAccountMsg: T, time: Long, timeUnit: TimeUnit): Carrier
where T : GroupCodeContainer,
T : AccountCodeContainer =
runBlocking { groupBan(groupAccountMsg, time, timeUnit) }
fun setGroupBan(groupAccountMsg: T, time: Long, timeUnit: TimeUnit): Carrier
where T : GroupContainer,
T : AccountContainer =
runBlocking { groupBan(groupAccountMsg, time, timeUnit) }
fun setGroupBan(groupCode: String, memberCode: String, time: Long): Carrier =
runBlocking { groupBan(groupCode, memberCode, time) }
fun setGroupBan(groupCode: Long, memberCode: Long, time: Long): Carrier =
runBlocking { groupBan(groupCode, memberCode, time) }
fun setGroupBan(group: GroupCodeContainer, member: AccountCodeContainer, time: Long): Carrier =
runBlocking { groupBan(group, member, time) }
fun setGroupBan(group: GroupContainer, member: AccountContainer, time: Long): Carrier =
runBlocking { groupBan(group, member, time) }
fun setGroupBan(groupAccountMsg: T, time: Long): Carrier
where T : GroupCodeContainer,
T : AccountCodeContainer =
runBlocking { groupBan(groupAccountMsg, time) }
fun setGroupBan(groupAccountMsg: T, time: Long): Carrier
where T : GroupContainer,
T : AccountContainer =
runBlocking { groupBan(groupAccountMsg, time) }
//endregion
//region set group ban async
///////////// async /////////////////
fun setGroupBanAsync(groupCode: String, memberCode: String, time: Long, timeUnit: TimeUnit) {
launch { groupBan(groupCode, memberCode, time, timeUnit) }
}
fun setGroupBanAsync(groupCode: Long, memberCode: Long, time: Long, timeUnit: TimeUnit) {
launch { groupBan(groupCode, memberCode, time, timeUnit) }
}
fun setGroupBanAsync(
group: GroupCodeContainer,
member: AccountCodeContainer,
time: Long,
timeUnit: TimeUnit,
) {
launch { groupBan(group, member, time, timeUnit) }
}
fun setGroupBanAsync(group: GroupContainer, member: AccountContainer, time: Long, timeUnit: TimeUnit) {
launch { groupBan(group, member, time, timeUnit) }
}
fun setGroupBanAsync(groupAccountMsg: T, time: Long, timeUnit: TimeUnit) where T : GroupCodeContainer,
T : AccountCodeContainer {
launch { groupBan(groupAccountMsg, time, timeUnit) }
}
fun setGroupBanAsync(groupAccountMsg: T, time: Long, timeUnit: TimeUnit) where T : GroupContainer,
T : AccountContainer {
launch { groupBan(groupAccountMsg, time, timeUnit) }
}
fun setGroupBanAsync(groupCode: String, memberCode: String, time: Long) {
launch { groupBan(groupCode, memberCode, time) }
}
fun setGroupBanAsync(groupCode: Long, memberCode: Long, time: Long) {
launch { groupBan(groupCode, memberCode, time) }
}
fun setGroupBanAsync(group: GroupCodeContainer, member: AccountCodeContainer, time: Long) {
launch { groupBan(group, member, time) }
}
fun setGroupBanAsync(group: GroupContainer, member: AccountContainer, time: Long) {
launch { groupBan(group, member, time) }
}
fun setGroupBanAsync(groupAccountMsg: T, time: Long) where T : GroupCodeContainer,
T : AccountCodeContainer {
launch { groupBan(groupAccountMsg, time) }
}
fun setGroupBanAsync(groupAccountMsg: T, time: Long) where T : GroupContainer,
T : AccountContainer {
launch { groupBan(groupAccountMsg, time) }
}
//endregion
/**
* 开启全群禁言。一般需要当前账号拥有对应权限。
*
* @param groupCode 群号
* @param mute 是否开启
*
* @return 设置操作的回执,一般代表是否成功。**不会捕获异常**。
*/
@JvmSynthetic
suspend fun groupWholeBan(groupCode: String, mute: Boolean): Carrier
@JvmSynthetic
suspend fun groupWholeBan(groupCode: Long, mute: Boolean): Carrier =
groupWholeBan(groupCode.toString(), mute)
@JvmSynthetic
suspend fun groupWholeBan(groupCode: GroupCodeContainer, mute: Boolean): Carrier =
groupWholeBan(groupCode.groupCode, mute)
@JvmSynthetic
suspend fun groupWholeBan(groupCode: GroupContainer, mute: Boolean): Carrier =
groupWholeBan(groupCode.groupInfo, mute)
//region set group whole ban blocking
//////////////// blocking ///////////////////
fun setGroupWholeBan(groupCode: String, mute: Boolean): Carrier =
runBlocking { groupWholeBan(groupCode, mute) }
fun setGroupWholeBan(groupCode: Long, mute: Boolean): Carrier =
runBlocking { groupWholeBan(groupCode, mute) }
fun setGroupWholeBan(groupCode: GroupCodeContainer, mute: Boolean): Carrier =
runBlocking { groupWholeBan(groupCode, mute) }
fun setGroupWholeBan(groupCode: GroupContainer, mute: Boolean): Carrier =
runBlocking { groupWholeBan(groupCode, mute) }
//endregion
//region set group whole ban async
//////////////// async ///////////////////
fun setGroupWholeBanAsync(groupCode: String, mute: Boolean) {
launch { groupWholeBan(groupCode, mute) }
}
fun setGroupWholeBanAsync(groupCode: Long, mute: Boolean) {
launch { groupWholeBan(groupCode, mute) }
}
fun setGroupWholeBanAsync(groupCode: GroupCodeContainer, mute: Boolean) {
launch { groupWholeBan(groupCode, mute) }
}
fun setGroupWholeBanAsync(groupCode: GroupContainer, mute: Boolean) {
launch { groupWholeBan(groupCode, mute) }
}
//endregion
/**
* 设置某个群成员或自己的备注(群名片)。需要当前账号拥有对应的权限。
*
* @param groupCode 群号
* @param memberCode 被设置者的账号
* @param remark 备注内容
*
* @return 设置操作的回执,一般代表设置后的值。**不会捕获异常**。
*
*/
@JvmSynthetic
suspend fun groupRemark(groupCode: String, memberCode: String, remark: String?): Carrier
@JvmSynthetic
suspend fun groupRemark(groupCode: Long, memberCode: Long, remark: String?): Carrier =
groupRemark(groupCode.toString(), memberCode.toString(), remark)
@JvmSynthetic
suspend fun groupRemark(group: GroupCodeContainer, member: AccountCodeContainer, remark: String?): Carrier =
groupRemark(group.groupCode, member.accountCode, remark)
@JvmSynthetic
suspend fun groupRemark(group: GroupContainer, member: AccountContainer, remark: String?): Carrier =
groupRemark(group.groupInfo, member.accountInfo, remark)
@JvmSynthetic
suspend fun groupRemark(groupAccountMsg: T, remark: String?): Carrier
where T : GroupCodeContainer,
T : AccountCodeContainer =
groupRemark(groupAccountMsg, groupAccountMsg, remark)
@JvmSynthetic
suspend fun groupRemark(groupAccountMsg: T, remark: String?): Carrier
where T : GroupContainer,
T : AccountContainer =
groupRemark(groupAccountMsg.groupInfo, groupAccountMsg.accountInfo, remark)
//region set group remark blocking
////////////// blocking //////////////////
fun setGroupRemark(groupCode: String, memberCode: String, remark: String?): Carrier =
runBlocking { groupRemark(groupCode, memberCode, remark) }
fun setGroupRemark(groupCode: Long, memberCode: Long, remark: String?): Carrier =
runBlocking { groupRemark(groupCode, memberCode, remark) }
fun setGroupRemark(group: GroupCodeContainer, member: AccountCodeContainer, remark: String?): Carrier =
runBlocking { groupRemark(group, member, remark) }
fun setGroupRemark(group: GroupContainer, member: AccountContainer, remark: String?): Carrier =
runBlocking { groupRemark(group, member, remark) }
fun setGroupRemark(groupAccountMsg: T, remark: String?): Carrier
where T : GroupCodeContainer,
T : AccountCodeContainer =
runBlocking { groupRemark(groupAccountMsg, remark) }
fun setGroupRemark(groupAccountMsg: T, remark: String?): Carrier
where T : GroupContainer,
T : AccountContainer =
runBlocking { groupRemark(groupAccountMsg, remark) }
//endregion
//region set group remark async
////////////// async //////////////////
fun setGroupRemarkAsync(groupCode: String, memberCode: String, remark: String?) {
launch { groupRemark(groupCode, memberCode, remark) }
}
fun setGroupRemarkAsync(groupCode: Long, memberCode: Long, remark: String?) {
launch { groupRemark(groupCode, memberCode, remark) }
}
fun setGroupRemarkAsync(group: GroupCodeContainer, member: AccountCodeContainer, remark: String?) {
launch { groupRemark(group, member, remark) }
}
fun setGroupRemarkAsync(group: GroupContainer, member: AccountContainer, remark: String?) {
launch { groupRemark(group, member, remark) }
}
fun setGroupRemarkAsync(groupAccountMsg: T, remark: String?) where T : GroupCodeContainer,
T : AccountCodeContainer {
launch { groupRemark(groupAccountMsg, remark) }
}
fun setGroupRemarkAsync(groupAccountMsg: T, remark: String?) where T : GroupContainer,
T : AccountContainer {
launch { groupRemark(groupAccountMsg, remark) }
}
//endregion
/**
* 退出或解散某群。
* @param groupCode 要退群的群号
* @param forcibly 如果账号的退群操作相当于群解散操作,则需要此参数为 `true`才可以解散群聊,否则失败。
*
* @return 设置操作的回执,一般代表是否成功。**不会捕获异常**。
*
*/
@JvmSynthetic
suspend fun groupQuit(groupCode: String, forcibly: Boolean): Carrier
@JvmSynthetic
suspend fun groupQuit(groupCode: Long, forcibly: Boolean): Carrier =
groupQuit(groupCode.toString(), forcibly)
@JvmSynthetic
suspend fun groupQuit(group: GroupCodeContainer, forcibly: Boolean): Carrier =
groupQuit(group.groupCode, forcibly)
@JvmSynthetic
suspend fun groupQuit(group: GroupContainer, forcibly: Boolean): Carrier =
groupQuit(group.groupInfo, forcibly)
//region ste group quit blocking
//////////////// blocking /////////////////
fun setGroupQuit(groupCode: String, forcibly: Boolean): Carrier =
runBlocking { groupQuit(groupCode, forcibly) }
fun setGroupQuit(groupCode: Long, forcibly: Boolean): Carrier =
runBlocking { groupQuit(groupCode, forcibly) }
fun setGroupQuit(group: GroupCodeContainer, forcibly: Boolean): Carrier =
runBlocking { groupQuit(group, forcibly) }
fun setGroupQuit(group: GroupContainer, forcibly: Boolean): Carrier =
runBlocking { groupQuit(group, forcibly) }
//endregion
//region ste group quit async
//////////////// async /////////////////
fun setGroupQuitAsync(groupCode: String, forcibly: Boolean) {
launch { groupQuit(groupCode, forcibly) }
}
fun setGroupQuitAsync(groupCode: Long, forcibly: Boolean) {
launch { groupQuit(groupCode, forcibly) }
}
fun setGroupQuitAsync(group: GroupCodeContainer, forcibly: Boolean) {
launch { groupQuit(group, forcibly) }
}
fun setGroupQuitAsync(group: GroupContainer, forcibly: Boolean) {
launch { groupQuit(group, forcibly) }
}
//endregion
/**
* 踢出某群员。需要拥有对应权限。
*
* @param groupCode 群号
* @param memberCode 群员号
* @param why 踢出理由。可以为null。
* @param blackList 踢出后加入黑名单
*/
@JvmSynthetic
suspend fun groupMemberKick(
groupCode: String,
memberCode: String,
why: String?,
blackList: Boolean,
): Carrier
@JvmSynthetic
suspend fun groupMemberKick(groupCode: Long, memberCode: Long, why: String?, blackList: Boolean): Carrier =
groupMemberKick(groupCode.toString(), memberCode.toString(), why, blackList)
@JvmSynthetic
suspend fun groupMemberKick(
group: GroupCodeContainer,
member: AccountCodeContainer,
why: String?,
blackList: Boolean,
): Carrier =
groupMemberKick(group.groupCode, member.accountCode, why, blackList)
@JvmSynthetic
suspend fun groupMemberKick(
group: GroupContainer,
member: AccountContainer,
why: String?,
blackList: Boolean,
): Carrier =
groupMemberKick(group.groupInfo, member.accountInfo, why, blackList)
@JvmSynthetic
suspend fun groupMemberKick(groupAccountMsg: T, why: String?, blackList: Boolean): Carrier
where T : GroupCodeContainer,
T : AccountCodeContainer =
groupMemberKick(groupAccountMsg, groupAccountMsg, why, blackList)
@JvmSynthetic
suspend fun groupMemberKick(groupAccountMsg: T, why: String?, blackList: Boolean): Carrier
where T : GroupContainer,
T : AccountContainer =
groupMemberKick(groupAccountMsg.groupInfo, groupAccountMsg.accountInfo, why, blackList)
//region set group member kick blocking
/////////////// blocking //////////////////
fun setGroupMemberKick(groupCode: String, memberCode: String, why: String?, blackList: Boolean): Carrier =
runBlocking { groupMemberKick(groupCode, memberCode, why, blackList) }
fun setGroupMemberKick(groupCode: Long, memberCode: Long, why: String?, blackList: Boolean): Carrier =
runBlocking { groupMemberKick(groupCode, memberCode, why, blackList) }
fun setGroupMemberKick(
group: GroupCodeContainer,
member: AccountCodeContainer,
why: String?,
blackList: Boolean,
): Carrier =
runBlocking { groupMemberKick(group, member, why, blackList) }
fun setGroupMemberKick(
group: GroupContainer,
member: AccountContainer,
why: String?,
blackList: Boolean,
): Carrier =
runBlocking { groupMemberKick(group, member, why, blackList) }
fun setGroupMemberKick(groupAccountMsg: T, why: String?, blackList: Boolean): Carrier
where T : GroupCodeContainer,
T : AccountCodeContainer =
runBlocking { groupMemberKick(groupAccountMsg, why, blackList) }
fun setGroupMemberKick(groupAccountMsg: T, why: String?, blackList: Boolean): Carrier
where T : GroupContainer,
T : AccountContainer =
runBlocking { groupMemberKick(groupAccountMsg, why, blackList) }
//endregion
//region set group member kick async
/////////////// async //////////////////
fun setGroupMemberKickAsync(groupCode: String, memberCode: String, why: String?, blackList: Boolean) {
launch { groupMemberKick(groupCode, memberCode, why, blackList) }
}
fun setGroupMemberKickAsync(groupCode: Long, memberCode: Long, why: String?, blackList: Boolean) {
launch { groupMemberKick(groupCode, memberCode, why, blackList) }
}
fun setGroupMemberKickAsync(
group: GroupCodeContainer,
member: AccountCodeContainer,
why: String?,
blackList: Boolean,
) {
launch { groupMemberKick(group, member, why, blackList) }
}
fun setGroupMemberKickAsync(
group: GroupContainer,
member: AccountContainer,
why: String?,
blackList: Boolean,
) {
launch { groupMemberKick(group, member, why, blackList) }
}
fun setGroupMemberKickAsync(groupAccountMsg: T, why: String?, blackList: Boolean)
where T : GroupCodeContainer,
T : AccountCodeContainer {
launch { groupMemberKick(groupAccountMsg, why, blackList) }
}
fun setGroupMemberKickAsync(groupAccountMsg: T, why: String?, blackList: Boolean) where T : GroupContainer, T : AccountContainer {
launch { groupMemberKick(groupAccountMsg, why, blackList) }
}
//endregion
/**
* 设置群成员专属头衔。需要拥有对应权限。
*
* @param groupCode 群号
* @param memberCode 群成员账号
* @param title 头衔。可以为null。
*
* @return 设置操作的回执,一般代表设置后的值。**不会捕获异常**。
*/
@JvmSynthetic
suspend fun groupMemberSpecialTitle(groupCode: String, memberCode: String, title: String?): Carrier
@JvmSynthetic
suspend fun groupMemberSpecialTitle(groupCode: Long, memberCode: Long, title: String?): Carrier =
groupMemberSpecialTitle(groupCode.toString(), memberCode.toString(), title)
@JvmSynthetic
suspend fun groupMemberSpecialTitle(
group: GroupCodeContainer,
member: AccountCodeContainer,
title: String?,
): Carrier =
groupMemberSpecialTitle(group.groupCode, member.accountCode, title)
@JvmSynthetic
suspend fun groupMemberSpecialTitle(
group: GroupContainer,
member: AccountContainer,
title: String?,
): Carrier =
groupMemberSpecialTitle(group.groupInfo, member.accountInfo, title)
@JvmSynthetic
suspend fun groupMemberSpecialTitle(groupAccountMsg: T, title: String?): Carrier
where T : GroupCodeContainer,
T : AccountCodeContainer =
groupMemberSpecialTitle(groupAccountMsg, groupAccountMsg, title)
@JvmSynthetic
suspend fun groupMemberSpecialTitle(groupAccountMsg: T, title: String?): Carrier
where T : GroupContainer,
T : AccountContainer =
groupMemberSpecialTitle(groupAccountMsg.groupInfo, groupAccountMsg.accountInfo, title)
//region set group member special title blocking
/////////////// blocking ///////////////
fun setGroupMemberSpecialTitle(groupCode: String, memberCode: String, title: String?): Carrier =
runBlocking { groupMemberSpecialTitle(groupCode, memberCode, title) }
fun setGroupMemberSpecialTitle(groupCode: Long, memberCode: Long, title: String?): Carrier =
runBlocking { groupMemberSpecialTitle(groupCode, memberCode, title) }
fun setGroupMemberSpecialTitle(
group: GroupCodeContainer,
member: AccountCodeContainer,
title: String?,
): Carrier =
runBlocking { groupMemberSpecialTitle(group, member, title) }
fun setGroupMemberSpecialTitle(group: GroupContainer, member: AccountContainer, title: String?): Carrier =
runBlocking { groupMemberSpecialTitle(group, member, title) }
fun setGroupMemberSpecialTitle(groupAccountMsg: T, title: String?): Carrier
where T : GroupCodeContainer,
T : AccountCodeContainer =
runBlocking { groupMemberSpecialTitle(groupAccountMsg, title) }
fun setGroupMemberSpecialTitle(groupAccountMsg: T, title: String?): Carrier
where T : GroupContainer,
T : AccountContainer =
runBlocking { groupMemberSpecialTitle(groupAccountMsg, title) }
//endregion
//region set group member special title async
/////////////// async ///////////////
fun setGroupMemberSpecialTitleAsync(groupCode: String, memberCode: String, title: String?) {
launch { groupMemberSpecialTitle(groupCode, memberCode, title) }
}
fun setGroupMemberSpecialTitleAsync(groupCode: Long, memberCode: Long, title: String?) {
launch { groupMemberSpecialTitle(groupCode, memberCode, title) }
}
fun setGroupMemberSpecialTitleAsync(
group: GroupCodeContainer,
member: AccountCodeContainer,
title: String?,
) {
launch { groupMemberSpecialTitle(group, member, title) }
}
fun setGroupMemberSpecialTitleAsync(group: GroupContainer, member: AccountContainer, title: String?) {
launch { groupMemberSpecialTitle(group, member, title) }
}
fun setGroupMemberSpecialTitleAsync(groupAccountMsg: T, title: String?)
where T : GroupCodeContainer,
T : AccountCodeContainer {
launch { groupMemberSpecialTitle(groupAccountMsg, title) }
}
fun setGroupMemberSpecialTitleAsync(groupAccountMsg: T, title: String?)
where T : GroupContainer,
T : AccountContainer {
launch { groupMemberSpecialTitle(groupAccountMsg, title) }
}
//endregion
/**
* 设置消息撤回
*
* @param flag 消息标识
*
* @return 设置操作的回执,一般代表是否成功。**不会捕获意料外的异常**。
*/
@JvmSynthetic
suspend fun msgRecall(flag: MessageGet.MessageFlag): Carrier
fun setMsgRecall(flag: MessageGet.MessageFlag): Carrier =
runBlocking { msgRecall(flag) }
/**
* 设置群名称
*
* @param groupCode 群号
* @param name 群名称,不可为null。
*/
@JvmSynthetic
suspend fun groupName(groupCode: String, name: String): Carrier
@JvmSynthetic
suspend fun groupName(groupCode: Long, name: String): Carrier =
groupName(groupCode.toString(), name)
@JvmSynthetic
suspend fun groupName(group: GroupCodeContainer, name: String): Carrier = groupName(group.groupCode, name)
@JvmSynthetic
suspend fun groupName(group: GroupContainer, name: String): Carrier = groupName(group.groupInfo, name)
//region set group name blocking
///////// blocking ///////////
fun setGroupName(groupCode: String, name: String): Carrier = runBlocking { groupName(groupCode, name) }
fun setGroupName(groupCode: Long, name: String): Carrier =
runBlocking { groupName(groupCode, name) }
fun setGroupName(group: GroupCodeContainer, name: String): Carrier = runBlocking { groupName(group, name) }
fun setGroupName(group: GroupContainer, name: String): Carrier = runBlocking { groupName(group, name) }
//endregion
//region set group name async
///////// async ///////////
fun setGroupNameAsync(groupCode: String, name: String) {
launch { groupName(groupCode, name) }
}
fun setGroupNameAsync(groupCode: Long, name: String) {
launch { groupName(groupCode, name) }
}
fun setGroupNameAsync(group: GroupCodeContainer, name: String) {
launch { groupName(group, name) }
}
fun setGroupNameAsync(group: GroupContainer, name: String) {
launch { groupName(group, name) }
}
//endregion
/**
* 删除好友
*/
@JvmSynthetic
suspend fun friendDelete(friend: String): Carrier
@JvmSynthetic
suspend fun friendDelete(friend: Long): Carrier = friendDelete(friend.toString())
@JvmSynthetic
suspend fun friendDelete(friend: AccountContainer): Carrier = friendDelete(friend.accountInfo)
@JvmSynthetic
suspend fun friendDelete(friend: AccountCodeContainer): Carrier = friendDelete(friend.accountCode)
//region set friend delete blocking
//////////// blocking //////////////
fun setFriendDelete(friend: String): Carrier =
runBlocking { friendDelete(friend) }
fun setFriendDelete(friend: Long): Carrier = runBlocking { friendDelete(friend) }
fun setFriendDelete(friend: AccountContainer): Carrier = runBlocking { friendDelete(friend) }
fun setFriendDelete(friend: AccountCodeContainer): Carrier = runBlocking { friendDelete(friend) }
//endregion
//region set friend delete async
//////////// async //////////////
fun setFriendDeleteAsync(friend: String){
launch { friendDelete(friend) }
}
fun setFriendDeleteAsync(friend: Long){
launch { friendDelete(friend) }
}
fun setFriendDeleteAsync(friend: AccountContainer){
launch { friendDelete(friend) }
}
fun setFriendDeleteAsync(friend: AccountCodeContainer) {
launch { friendDelete(friend) }
}
//endregion
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy