Compare commits

...

16 Commits
0.0.3 ... 0.0.9

5 changed files with 32 additions and 15 deletions

View File

@@ -3,5 +3,5 @@
This project was created due to neccessity of additional libraries over [tgbotapi](https://github.com/InsanusMokrassar/TelegramBotAPI).
Currently there are plans to create several libraries at the start of this project:
* Cache library for media (saving and autorefreshing of `fileId`)
* Cache library for admins (saving chat admins, autoupdate and refreshing by command (maybe))
* Cache library for media (saving and autorefreshing of `fileId`) (**currently in TBD state**)
* Cache library for admins (saving chat admins, autoupdate and refreshing by command (maybe)) (you may retrieve it using github packages for now)

View File

@@ -1,13 +1,20 @@
package dev.inmo.tgbotapi.libraries.cache.admins
import dev.inmo.tgbotapi.extensions.utils.asGroupContentMessage
import dev.inmo.tgbotapi.types.*
import dev.inmo.tgbotapi.types.ChatMember.abstracts.AdministratorChatMember
import dev.inmo.tgbotapi.types.message.abstracts.GroupContentMessage
import dev.inmo.tgbotapi.types.message.abstracts.Message
interface AdminsCacheAPI {
suspend fun getChatAdmins(chatId: ChatId): List<AdministratorChatMember>?
suspend fun isAdmin(chatId: ChatId, userId: UserId): Boolean = getChatAdmins(chatId) ?.any {
it.user.id == userId
} == true
suspend fun sentByAdmin(groupContentMessage: GroupContentMessage<*>): Boolean
suspend fun sentByAdmin(message: Message): Boolean? {
return sentByAdmin(message.asGroupContentMessage() ?: return null)
}
suspend fun settings(): AdminsCacheSettingsAPI
}

View File

@@ -6,6 +6,7 @@ import dev.inmo.tgbotapi.extensions.api.bot.getMe
import dev.inmo.tgbotapi.extensions.api.chat.get.getChatAdministrators
import dev.inmo.tgbotapi.types.*
import dev.inmo.tgbotapi.types.ChatMember.abstracts.AdministratorChatMember
import dev.inmo.tgbotapi.types.message.abstracts.*
import kotlinx.serialization.Serializable
interface DefaultAdminsCacheAPIRepo {
@@ -49,6 +50,17 @@ class DefaultAdminsCacheAPI(
}
}
override suspend fun sentByAdmin(groupContentMessage: GroupContentMessage<*>): Boolean {
return when (groupContentMessage) {
is AnonymousGroupContentMessage -> true
is CommonGroupContentMessage -> isAdmin(
groupContentMessage.chat.id,
groupContentMessage.user.id
)
else -> false
}
}
override suspend fun settings(): AdminsCacheSettingsAPI = settingsAPI
}

View File

@@ -6,15 +6,15 @@ kotlin.incremental.js=true
android.useAndroidX=true
android.enableJetifier=true
kotlin_version=1.4.32
kotlin_serialisation_core_version=1.1.0
kotlin_version=1.5.10
kotlin_serialisation_core_version=1.2.1
github_release_plugin_version=2.2.12
tgbotapi_version=0.33.1
micro_utils_version=0.4.31
exposed_version=0.29.1
plagubot_version=0.1.6
tgbotapi_version=0.35.0
micro_utils_version=0.5.7
exposed_version=0.32.1
plagubot_version=0.3.0
# ANDROID
@@ -28,10 +28,10 @@ espresso_core=3.3.0
# Dokka
dokka_version=1.4.20
dokka_version=1.4.32
# Project data
group=dev.inmo
version=0.0.3
android_code_version=3
version=0.0.9
android_code_version=8

View File

@@ -4,10 +4,8 @@ project.group = "$group"
apply from: "$publishGradlePath"
kotlin {
jvm {
compilations.main.kotlinOptions.useIR = true
}
js (BOTH) {
jvm()
js (IR) {
browser()
nodejs()
}