mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2025-11-22 07:15:45 +00:00
Compare commits
58 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f80bb18ca5 | |||
| 40eaffb8e3 | |||
| 0c9f9f59c1 | |||
| 12496f8261 | |||
| 3fe7bd1382 | |||
| e3117f3679 | |||
| 562459f0b7 | |||
| e98e61747c | |||
| e1082c3741 | |||
| 3fa2071847 | |||
| 4c60b8fd82 | |||
| cb30beaa31 | |||
| 10df8cbc55 | |||
| 4b66617db6 | |||
| 9ddab0bf29 | |||
| e43d7350ed | |||
| 82129205fa | |||
| 034b30d65f | |||
| 0d72c51448 | |||
| fe11b088fc | |||
| 336f280b8a | |||
| 0f9e048274 | |||
| f8b6073cd4 | |||
| 0899a69762 | |||
| 031c61a872 | |||
| 33d8dcf977 | |||
| 2f09504f08 | |||
| f4c11cacc6 | |||
| 4ac01d5331 | |||
| bb3ebb455e | |||
| 7694b25d33 | |||
| b095f07b9c | |||
| 72127ce133 | |||
| 398adf06ff | |||
| dbef69ffac | |||
| f68edebd24 | |||
| 482d924070 | |||
| e7495468a2 | |||
| bba37d8889 | |||
| 198e15a937 | |||
| 5ee472305c | |||
| 47428dd6f9 | |||
| b4e4bed622 | |||
| 4dd2a8437c | |||
| 8b93922f82 | |||
| 43b08e9319 | |||
| 62d474b7cc | |||
| 0066e814b3 | |||
| ef7e94ba68 | |||
| 27aba72a5a | |||
| 680e960037 | |||
| ff47168fdc | |||
| a68c31f9d1 | |||
| ac915b79f7 | |||
| 1659f6f909 | |||
| 5249fb517f | |||
| fdf45d7566 | |||
| dc93997b8c |
115
CHANGELOG.md
115
CHANGELOG.md
@@ -1,5 +1,103 @@
|
|||||||
# TelegramBotAPI changelog
|
# TelegramBotAPI changelog
|
||||||
|
|
||||||
|
## 0.22.0
|
||||||
|
|
||||||
|
* **`KtorCallFactory` must return `HttpStatement` instead of `HttpClientCall`**
|
||||||
|
* `SendMessage` was renamed to `SendTextMessage` and previous `SendMessage` is deprecated
|
||||||
|
* All `AbleToBe*` interfaces was renamed to `Possibly*`
|
||||||
|
* `AbleToBeEditedMessage` -> `PossiblyEditedMessage`
|
||||||
|
* `AbleToBeForwardedMessage` -> `PossiblyForwardedMessage`
|
||||||
|
* `AbleToBeMarkedUp` -> `PossiblyMarkedUp`
|
||||||
|
* `AbleToBeEditedMessage` -> `PossiblyEditedMessage`
|
||||||
|
* `ForwardedMessage` type was renamed to `ForwardInfo`
|
||||||
|
* `AnonymousForwardedMessage` -> `AnonymousForwardInfo`
|
||||||
|
* `UserForwardedMessage` -> `UserForwardInfo`
|
||||||
|
* `ForwardedFromChannelMessage` -> `ForwardFromChannelInfo`
|
||||||
|
* `PossiblyForwardedMessage#forwarded` field now renamed to `forwardInfo`
|
||||||
|
* All serializers in library now are `internal`. **If you have used some of them or I have marked as internal by a
|
||||||
|
mistake - don't hesitate to say this.**
|
||||||
|
* `EditChatMessage` now have generic type and extends `SimpleRequest<ContentMessage<GenericType>>`
|
||||||
|
* `ResendableContent` now extends `Request<out Message>` instead of `Request<Message>`
|
||||||
|
* Most part of requests have changed return type. They are listed below:
|
||||||
|
<details>
|
||||||
|
|
||||||
|
* `ForwardMessage`
|
||||||
|
* `GetChatAdministrators`
|
||||||
|
* `EditChatMessageLiveLocation`
|
||||||
|
* `StopChatMessageLiveLocation`
|
||||||
|
* `EditChatMessageText`
|
||||||
|
* `EditChatMessageCaption`
|
||||||
|
* `EditChatMessageMedia`
|
||||||
|
* `EditChatMessageReplyMarkup`
|
||||||
|
* `SendAnimation`
|
||||||
|
* `SendAudio`
|
||||||
|
* `SendContact`
|
||||||
|
* `SendLocation`
|
||||||
|
* `SendTextMessage`
|
||||||
|
* `SendPoll`
|
||||||
|
* `SendVenue`
|
||||||
|
* `SendGame`
|
||||||
|
* `SendDocument`
|
||||||
|
* `SendMediaGroup`
|
||||||
|
* `SendPhoto`
|
||||||
|
* `SendVideo`
|
||||||
|
* `SendVideoNote`
|
||||||
|
* `SendVoice`
|
||||||
|
* `SendSticker`
|
||||||
|
|
||||||
|
</details>
|
||||||
|
* Changed type of `createResend`
|
||||||
|
<details>
|
||||||
|
|
||||||
|
* `GameContent`
|
||||||
|
* `LocationContent`
|
||||||
|
* `PollContent`
|
||||||
|
* `TextContent`
|
||||||
|
* `VenueContent`
|
||||||
|
* `AnimationContent`
|
||||||
|
* `AudioContent`
|
||||||
|
* `DocumentContent`
|
||||||
|
* `ContactContent`
|
||||||
|
* `PhotoContent`
|
||||||
|
* `VideoContent`
|
||||||
|
* `VideoNoteContent`
|
||||||
|
* `VoiceContent`
|
||||||
|
* `StickerContent`
|
||||||
|
|
||||||
|
</details>
|
||||||
|
* Version updates:
|
||||||
|
* Ktor `1.2.6` -> `1.3.0`
|
||||||
|
|
||||||
|
## 0.21.0 TelegramBotAPI 4.5
|
||||||
|
|
||||||
|
* _**All `MessageEntity`'es now are replaced with `TextPart`**_
|
||||||
|
* Added support of strikethrough and underline
|
||||||
|
* Added `UnderlineTextSource`
|
||||||
|
* Added `StrikethroughTextSource`
|
||||||
|
* Added support in `RawMessageEntity`
|
||||||
|
* Added support of `MarkdownV2`
|
||||||
|
* Now will not be thrown exception when there is income unknown type of `RawMessageEntity`. Instead of this will be
|
||||||
|
created `RegularTextSource` with the same text
|
||||||
|
* Fixed problem that usually string formatting did not trigger escaping of control characters
|
||||||
|
* Actualized work with `pre` type of text - now it is possible to use `language` for formatting of text
|
||||||
|
* Removed constructor of `TextMentionTextSource`, which was deprecated previously
|
||||||
|
* All `TelegramMediaFile` instances now have field `fileUniqueId`, which represents `file_unique_id` field from API
|
||||||
|
* Now `ChatPhoto` have two additional fields: `smallFileUniqueId` and `bigFileUniqueId`
|
||||||
|
* Now any administrator object instance have `customTitle` nullable field
|
||||||
|
* Added the new request `SetChatAdministratorCustomTitle` to manage the custom titles of administrators promoted by the
|
||||||
|
bot.
|
||||||
|
* Added the field `slowModeDelay` to the `ExtendedSupergroupChat` objects.
|
||||||
|
|
||||||
|
* `CaptionedInput` now have extension `fullEntitiesList` which will return list of `TextPart` with `RegularSource`'s
|
||||||
|
* `TextPart` added - it will be used as part of some text and can be not related to telegram bot
|
||||||
|
* `MultilevelTextSource` was added - it is type of `TextSource`, which can have subsources as parts of this text
|
||||||
|
* In all `TextSource`s all fields now are lazy for avoiding of potential risk for performance issues
|
||||||
|
|
||||||
|
* Updates in versions:
|
||||||
|
* Coroutines `1.3.2` -> `1.3.3`
|
||||||
|
* Klock `1.8.0` -> `1.8.6`
|
||||||
|
* UUID `0.0.6` -> `0.0.7`
|
||||||
|
|
||||||
## 0.20.0 MPP Migration
|
## 0.20.0 MPP Migration
|
||||||
|
|
||||||
* Time library change: `joda-time` -> `com.soywiz.korlibs.klock:klock`
|
* Time library change: `joda-time` -> `com.soywiz.korlibs.klock:klock`
|
||||||
@@ -13,7 +111,7 @@
|
|||||||
* `User` now implement `PrivateChat`
|
* `User` now implement `PrivateChat`
|
||||||
* `TextMentionMessageEntity` now accept `PrivateChat` instead of `User` in main constructor
|
* `TextMentionMessageEntity` now accept `PrivateChat` instead of `User` in main constructor
|
||||||
* `TextMentionMessageEntity` now contains not user, but contains `PrivateChat`
|
* `TextMentionMessageEntity` now contains not user, but contains `PrivateChat`
|
||||||
* Fixeed: `TextMentionMessageEntity#asHtmlSource` previously worked incorrect
|
* Fixed: `TextMentionMessageEntity#asHtmlSource` previously worked incorrect
|
||||||
* Abstraction `TextSource`
|
* Abstraction `TextSource`
|
||||||
* `MessageEntity` now extends `TextSource`
|
* `MessageEntity` now extends `TextSource`
|
||||||
* `createFormattedText` method now accept `List<TextSource>`
|
* `createFormattedText` method now accept `List<TextSource>`
|
||||||
@@ -22,6 +120,21 @@
|
|||||||
* A lot of `TextSource` implementors was added. More info [here](src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/textsources/)
|
* A lot of `TextSource` implementors was added. More info [here](src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/textsources/)
|
||||||
* All `MessageEntity` implementations now are using new `TextSource` analogues as delegates
|
* All `MessageEntity` implementations now are using new `TextSource` analogues as delegates
|
||||||
|
|
||||||
|
### 0.20.2
|
||||||
|
|
||||||
|
* New exception type `MessageIsNotModifierException` was added
|
||||||
|
* New exception type `MessageToEditNotFoundException` was added
|
||||||
|
* Now exceptions in requests will be caught correctly
|
||||||
|
|
||||||
|
### 0.20.3
|
||||||
|
|
||||||
|
* Now `LeftChatMamber` is a `CommonEvent`
|
||||||
|
|
||||||
|
### 0.20.4
|
||||||
|
|
||||||
|
* Now `setWebhook` supports setting up of path for listening
|
||||||
|
* Now `setWebhook` supports custom listen address even if certificate was not provided
|
||||||
|
|
||||||
## 0.19.0 ImplicitReflection removing
|
## 0.19.0 ImplicitReflection removing
|
||||||
|
|
||||||
* Total rework of serialization for requests. Now all `SimpleRequest` children have:
|
* Total rework of serialization for requests. Now all `SimpleRequest` children have:
|
||||||
|
|||||||
35
README.md
35
README.md
@@ -1,7 +1,7 @@
|
|||||||
# TelegramBotAPI
|
# TelegramBotAPI
|
||||||
|
|
||||||
[ ](https://bintray.com/insanusmokrassar/StandardRepository/TelegramBotAPI/_latestVersion)
|
[ ](https://bintray.com/insanusmokrassar/StandardRepository/TelegramBotAPI/_latestVersion)
|
||||||
[](https://jenkins.insanusmokrassar.space/job/TelegramBotAPI_master__publishing/)
|
[](https://jenkins.insanusmokrassar.com/job/TelegramBotAPI_master__publishing/)
|
||||||
|
|
||||||
## What is it?
|
## What is it?
|
||||||
|
|
||||||
@@ -10,7 +10,7 @@ moments are describing by official [Telegram Bot API](https://core.telegram.org/
|
|||||||
|
|
||||||
## Compatibility
|
## Compatibility
|
||||||
|
|
||||||
This version compatible with [29th of July 2019 update of TelegramBotAPI](https://core.telegram.org/bots/api#july-29-2019).
|
This version compatible with [31th of December 2019 update of TelegramBotAPI (version 4.5)](https://core.telegram.org/bots/api#december-31-2019).
|
||||||
There is Telegram Passport API exception of implemented functionality, which was presented in
|
There is Telegram Passport API exception of implemented functionality, which was presented in
|
||||||
[August 2018 update of TelegramBotAPI](https://core.telegram.org/bots/api#august-27-2018) update. It will be implemented
|
[August 2018 update of TelegramBotAPI](https://core.telegram.org/bots/api#august-27-2018) update. It will be implemented
|
||||||
as soon as possible. All APIs that are not included are presented
|
as soon as possible. All APIs that are not included are presented
|
||||||
@@ -34,19 +34,6 @@ of signed artifacts in Bintray). You can:
|
|||||||
|
|
||||||
### Maven
|
### Maven
|
||||||
|
|
||||||
To use last versions you will need to add several lines in repositories block of your pom.xml:
|
|
||||||
|
|
||||||
```xml
|
|
||||||
<repository>
|
|
||||||
<snapshots>
|
|
||||||
<enabled>false</enabled>
|
|
||||||
</snapshots>
|
|
||||||
<id>central</id>
|
|
||||||
<name>bintray</name>
|
|
||||||
<url>http://jcenter.bintray.com</url>
|
|
||||||
</repository>
|
|
||||||
```
|
|
||||||
|
|
||||||
Dependency config presented here:
|
Dependency config presented here:
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
@@ -59,11 +46,9 @@ Dependency config presented here:
|
|||||||
|
|
||||||
### Gradle
|
### Gradle
|
||||||
|
|
||||||
To use last versions you will need to add one line in repositories block of your build.gradle:
|
To use last versions you will need to add one line in repositories block of your `build.gradle`:
|
||||||
|
|
||||||
```groovy
|
`jcenter()` or `mavenCentral()`
|
||||||
jcenter()
|
|
||||||
```
|
|
||||||
|
|
||||||
And add next line to your dependencies block:
|
And add next line to your dependencies block:
|
||||||
|
|
||||||
@@ -82,9 +67,9 @@ compile "com.github.insanusmokrassar:TelegramBotAPI:$telegrambotapi_version"
|
|||||||
For now, this library have no some API god-object. Instead of this, this library has several
|
For now, this library have no some API god-object. Instead of this, this library has several
|
||||||
important objects:
|
important objects:
|
||||||
|
|
||||||
* [RequestsExecutor](src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/RequestsExecutor.kt)
|
* [RequestsExecutor](https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/RequestsExecutor.kt)
|
||||||
* [Requests](src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests)
|
* [Requests](https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests)
|
||||||
* [Types](src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types)
|
* [Types](https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types)
|
||||||
|
|
||||||
### Types
|
### Types
|
||||||
|
|
||||||
@@ -111,8 +96,8 @@ val requestsExecutor: RequestsExecutor = ...
|
|||||||
requestsExecutor.execute(GetMe())
|
requestsExecutor.execute(GetMe())
|
||||||
```
|
```
|
||||||
|
|
||||||
The result type of [GetMe](src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetMe) request is
|
The result type of [GetMe](https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetMe.kt) request is
|
||||||
[User](src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/User). In fact, in this result must contain
|
[User](https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/User.kt). In fact, in this result must contain
|
||||||
`isBot` equal to `true` always.
|
`isBot` equal to `true` always.
|
||||||
|
|
||||||
|
|
||||||
@@ -203,6 +188,6 @@ Here:
|
|||||||
|
|
||||||
* `WEBHOOK_URL` - the url which will be used by Telegram system to send updates
|
* `WEBHOOK_URL` - the url which will be used by Telegram system to send updates
|
||||||
* `INTERNAL_PORT` - the port which will be used in bot for listening of updates
|
* `INTERNAL_PORT` - the port which will be used in bot for listening of updates
|
||||||
* `filter` - instance of [UpdatesFilter](src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/extensions/UpdatesFilter.kt),
|
* `filter` - instance of [UpdatesFilter](https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/updateshandlers/UpdatesFilter.kt),
|
||||||
which will be used to filter incoming updates
|
which will be used to filter incoming updates
|
||||||
* `ENGINE_FACTORY` - used factory name, for example, `CIO` in case of usage `io.ktor:ktor-server-cio` as server engine
|
* `ENGINE_FACTORY` - used factory name, for example, `CIO` in case of usage `io.ktor:ktor-server-cio` as server engine
|
||||||
|
|||||||
1
_config.yml
Normal file
1
_config.yml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
theme: jekyll-theme-cayman
|
||||||
@@ -17,7 +17,7 @@ plugins {
|
|||||||
id "org.jetbrains.kotlin.plugin.serialization" version "$kotlin_version"
|
id "org.jetbrains.kotlin.plugin.serialization" version "$kotlin_version"
|
||||||
}
|
}
|
||||||
|
|
||||||
project.version = "0.20.1"
|
project.version = "0.22.0"
|
||||||
project.group = "com.github.insanusmokrassar"
|
project.group = "com.github.insanusmokrassar"
|
||||||
|
|
||||||
apply from: "publish.gradle"
|
apply from: "publish.gradle"
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
kotlin.code.style=official
|
kotlin.code.style=official
|
||||||
kotlin_version=1.3.61
|
kotlin_version=1.3.61
|
||||||
kotlin_coroutines_version=1.3.2
|
kotlin_coroutines_version=1.3.3
|
||||||
kotlin_serialisation_runtime_version=0.14.0
|
kotlin_serialisation_runtime_version=0.14.0
|
||||||
klock_version=1.8.0
|
klock_version=1.8.6
|
||||||
uuid_version=0.0.6
|
uuid_version=0.0.7
|
||||||
ktor_version=1.2.6
|
ktor_version=1.3.0
|
||||||
|
|
||||||
gradle_bintray_plugin_version=1.8.4
|
gradle_bintray_plugin_version=1.8.4
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
apply plugin: 'maven-publish'
|
apply plugin: 'maven-publish'
|
||||||
apply plugin: 'signing'
|
|
||||||
|
|
||||||
task javadocsJar(type: Jar) {
|
task javadocsJar(type: Jar) {
|
||||||
classifier = 'javadoc'
|
classifier = 'javadoc'
|
||||||
@@ -35,25 +34,24 @@ publishing {
|
|||||||
}
|
}
|
||||||
|
|
||||||
developers {
|
developers {
|
||||||
|
|
||||||
developer {
|
developer {
|
||||||
id "InsanusMokrassar"
|
id "InsanusMokrassar"
|
||||||
name "Ovsiannikov Aleksei"
|
name "Ovsiannikov Aleksei"
|
||||||
email "ovsyannikov.alexey95@gmail.com"
|
email "ovsyannikov.alexey95@gmail.com"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
licenses {
|
licenses {
|
||||||
|
|
||||||
license {
|
license {
|
||||||
name "Apache Software License 2.0"
|
name "Apache Software License 2.0"
|
||||||
url "https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/LICENSE"
|
url "https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/LICENSE"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
signing {
|
|
||||||
useGpgCmd()
|
|
||||||
sign(publishing.publications)
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -5,6 +5,23 @@ apply from: "maven.publish.gradle"
|
|||||||
bintray {
|
bintray {
|
||||||
user = project.hasProperty('BINTRAY_USER') ? project.property('BINTRAY_USER') : System.getenv('BINTRAY_USER')
|
user = project.hasProperty('BINTRAY_USER') ? project.property('BINTRAY_USER') : System.getenv('BINTRAY_USER')
|
||||||
key = project.hasProperty('BINTRAY_KEY') ? project.property('BINTRAY_KEY') : System.getenv('BINTRAY_KEY')
|
key = project.hasProperty('BINTRAY_KEY') ? project.property('BINTRAY_KEY') : System.getenv('BINTRAY_KEY')
|
||||||
|
filesSpec {
|
||||||
|
from "${buildDir}/publications/"
|
||||||
|
eachFile {
|
||||||
|
if (it.getName() == "module.json") {
|
||||||
|
File file = it.getFile()
|
||||||
|
String directorySubname = file.parentFile.name
|
||||||
|
if (directorySubname == "kotlinMultiplatform") {
|
||||||
|
it.setPath("${project.name}/${project.version}/${project.name}-${project.version}.module")
|
||||||
|
} else {
|
||||||
|
it.setPath("${project.name}-${directorySubname}/${project.version}/${project.name}-${directorySubname}-${project.version}.module")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
it.exclude()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
into "${project.group}".replace(".", "/")
|
||||||
|
}
|
||||||
pkg {
|
pkg {
|
||||||
repo = "StandardRepository"
|
repo = "StandardRepository"
|
||||||
name = "${project.name}"
|
name = "${project.name}"
|
||||||
@@ -14,14 +31,22 @@ bintray {
|
|||||||
name = "${project.version}"
|
name = "${project.version}"
|
||||||
released = new Date()
|
released = new Date()
|
||||||
vcsTag = "${project.version}"
|
vcsTag = "${project.version}"
|
||||||
|
gpg {
|
||||||
|
sign = true
|
||||||
|
passphrase = project.hasProperty('signing.gnupg.passphrase') ? project.property('signing.gnupg.passphrase') : System.getenv('signing.gnupg.passphrase')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bintrayUpload.doFirst {
|
bintrayUpload.doFirst {
|
||||||
publications = publishing.publications.collect {
|
publications = publishing.publications.collect {
|
||||||
it.name
|
if (it.name.contains('kotlinMultiplatform')) {
|
||||||
}
|
null
|
||||||
|
} else {
|
||||||
|
it.name
|
||||||
|
}
|
||||||
|
} - null
|
||||||
}
|
}
|
||||||
|
|
||||||
bintrayUpload.dependsOn publishToMavenLocal
|
bintrayUpload.dependsOn publishToMavenLocal
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts
|
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.MessageEntity
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.fullListOfSubSource
|
||||||
|
|
||||||
interface Captioned {
|
interface Captioned {
|
||||||
val caption: String?
|
val caption: String?
|
||||||
@@ -12,5 +12,7 @@ interface CaptionedOutput : Captioned {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface CaptionedInput : Captioned {
|
interface CaptionedInput : Captioned {
|
||||||
val captionEntities: List<MessageEntity>
|
val captionEntities: List<TextPart>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun CaptionedInput.fullEntitiesList() = caption ?.fullListOfSubSource(captionEntities) ?.map { it.source } ?: emptyList()
|
||||||
|
|||||||
@@ -2,5 +2,16 @@ package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts
|
|||||||
|
|
||||||
interface TextSource {
|
interface TextSource {
|
||||||
val asMarkdownSource: String
|
val asMarkdownSource: String
|
||||||
|
val asMarkdownV2Source: String
|
||||||
val asHtmlSource: String
|
val asHtmlSource: String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
interface MultilevelTextSource : TextSource {
|
||||||
|
val textParts: List<TextPart>
|
||||||
|
}
|
||||||
|
|
||||||
|
data class TextPart(
|
||||||
|
val range: IntRange,
|
||||||
|
val source: TextSource
|
||||||
|
)
|
||||||
|
|||||||
@@ -3,11 +3,12 @@ package com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request
|
||||||
import io.ktor.client.HttpClient
|
import io.ktor.client.HttpClient
|
||||||
import io.ktor.client.call.HttpClientCall
|
import io.ktor.client.call.HttpClientCall
|
||||||
|
import io.ktor.client.statement.HttpStatement
|
||||||
|
|
||||||
interface KtorCallFactory {
|
interface KtorCallFactory {
|
||||||
suspend fun <T: Any> prepareCall(
|
suspend fun <T: Any> prepareCall(
|
||||||
client: HttpClient,
|
client: HttpClient,
|
||||||
baseUrl: String,
|
baseUrl: String,
|
||||||
request: Request<T>
|
request: Request<T>
|
||||||
) : HttpClientCall?
|
) : HttpStatement?
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,8 +11,10 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.Response
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.RetryAfterError
|
import com.github.insanusmokrassar.TelegramBotAPI.types.RetryAfterError
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.TelegramAPIUrlsKeeper
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.TelegramAPIUrlsKeeper
|
||||||
import io.ktor.client.HttpClient
|
import io.ktor.client.HttpClient
|
||||||
import io.ktor.client.call.HttpClientCall
|
|
||||||
import io.ktor.client.call.receive
|
import io.ktor.client.call.receive
|
||||||
|
import io.ktor.client.features.ClientRequestException
|
||||||
|
import io.ktor.client.statement.HttpStatement
|
||||||
|
import io.ktor.client.statement.readText
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
|
|
||||||
@@ -34,40 +36,48 @@ class KtorRequestsExecutor(
|
|||||||
|
|
||||||
override suspend fun <T : Any> execute(request: Request<T>): T {
|
override suspend fun <T : Any> execute(request: Request<T>): T {
|
||||||
return requestsLimiter.limit {
|
return requestsLimiter.limit {
|
||||||
var call: HttpClientCall? = null
|
var statement: HttpStatement? = null
|
||||||
for (factory in callsFactories) {
|
for (factory in callsFactories) {
|
||||||
call = factory.prepareCall(
|
statement = factory.prepareCall(
|
||||||
client,
|
client,
|
||||||
telegramAPIUrlsKeeper.commonAPIUrl,
|
telegramAPIUrlsKeeper.commonAPIUrl,
|
||||||
request
|
request
|
||||||
)
|
)
|
||||||
if (call != null) {
|
if (statement != null) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (call == null) {
|
try {
|
||||||
throw IllegalArgumentException("Can't execute request: $request")
|
val response = statement ?.execute() ?: throw IllegalArgumentException("Can't execute request: $request")
|
||||||
}
|
val content = response.receive<String>()
|
||||||
val content = call.response.receive<String>()
|
val responseObject = jsonFormatter.parse(Response.serializer(), content)
|
||||||
val responseObject = jsonFormatter.parse(Response.serializer(), content)
|
|
||||||
|
|
||||||
(responseObject.result ?.let {
|
(responseObject.result?.let {
|
||||||
jsonFormatter.fromJson(request.resultDeserializer, it)
|
jsonFormatter.fromJson(request.resultDeserializer, it)
|
||||||
} ?: responseObject.parameters ?.let {
|
} ?: responseObject.parameters?.let {
|
||||||
val error = it.error
|
val error = it.error
|
||||||
if (error is RetryAfterError) {
|
if (error is RetryAfterError) {
|
||||||
delay(error.leftToRetry)
|
delay(error.leftToRetry)
|
||||||
execute(request)
|
execute(request)
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
} ?: call.let {
|
} ?: response.let {
|
||||||
|
throw newRequestException(
|
||||||
|
responseObject,
|
||||||
|
content,
|
||||||
|
"Can't get result object from $content"
|
||||||
|
)
|
||||||
|
})
|
||||||
|
} catch (e: ClientRequestException) {
|
||||||
|
val content = e.response.readText()
|
||||||
|
val responseObject = jsonFormatter.parse(Response.serializer(), content)
|
||||||
throw newRequestException(
|
throw newRequestException(
|
||||||
responseObject,
|
responseObject,
|
||||||
content,
|
content,
|
||||||
"Can't get result object from $content"
|
"Can't get result object from $content"
|
||||||
)
|
)
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,13 +4,10 @@ import com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor.KtorCallFactory
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request
|
||||||
import io.ktor.client.HttpClient
|
import io.ktor.client.HttpClient
|
||||||
import io.ktor.client.call.HttpClientCall
|
import io.ktor.client.call.HttpClientCall
|
||||||
import io.ktor.client.call.call
|
import io.ktor.client.request.*
|
||||||
import io.ktor.client.request.accept
|
import io.ktor.client.statement.HttpStatement
|
||||||
import io.ktor.client.request.url
|
|
||||||
import io.ktor.http.ContentType
|
import io.ktor.http.ContentType
|
||||||
import io.ktor.http.HttpMethod
|
import io.ktor.http.HttpMethod
|
||||||
import kotlin.collections.MutableMap
|
|
||||||
import kotlin.collections.mutableMapOf
|
|
||||||
import kotlin.collections.set
|
import kotlin.collections.set
|
||||||
|
|
||||||
abstract class AbstractRequestCallFactory : KtorCallFactory {
|
abstract class AbstractRequestCallFactory : KtorCallFactory {
|
||||||
@@ -19,20 +16,23 @@ abstract class AbstractRequestCallFactory : KtorCallFactory {
|
|||||||
client: HttpClient,
|
client: HttpClient,
|
||||||
baseUrl: String,
|
baseUrl: String,
|
||||||
request: Request<T>
|
request: Request<T>
|
||||||
): HttpClientCall? {
|
): HttpStatement? {
|
||||||
val preparedBody = prepareCallBody(client, baseUrl, request) ?: return null
|
val preparedBody = prepareCallBody(client, baseUrl, request) ?: return null
|
||||||
|
|
||||||
return client.call {
|
return HttpStatement(
|
||||||
url(
|
HttpRequestBuilder().apply {
|
||||||
methodsCache[request.method()] ?: "$baseUrl/${request.method()}".also {
|
url(
|
||||||
methodsCache[request.method()] = it
|
methodsCache[request.method()] ?: "$baseUrl/${request.method()}".also {
|
||||||
}
|
methodsCache[request.method()] = it
|
||||||
)
|
}
|
||||||
method = HttpMethod.Post
|
)
|
||||||
accept(ContentType.Application.Json)
|
method = HttpMethod.Post
|
||||||
|
accept(ContentType.Application.Json)
|
||||||
|
|
||||||
body = preparedBody
|
body = preparedBody
|
||||||
}
|
},
|
||||||
|
client
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract fun <T : Any> prepareCallBody(
|
protected abstract fun <T : Any> prepareCallBody(
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.bot
|
package com.github.insanusmokrassar.TelegramBotAPI.bot
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request
|
||||||
import kotlinx.io.core.Closeable
|
import io.ktor.utils.io.core.Closeable
|
||||||
|
|
||||||
interface RequestsExecutor : Closeable {
|
interface RequestsExecutor : Closeable {
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.bot
|
package com.github.insanusmokrassar.TelegramBotAPI.bot
|
||||||
|
|
||||||
|
import io.ktor.utils.io.core.Closeable
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.io.core.Closeable
|
|
||||||
|
|
||||||
interface UpdatesPoller : Closeable {
|
interface UpdatesPoller : Closeable {
|
||||||
fun start(scope: CoroutineScope = CoroutineScope(Dispatchers.Default))
|
fun start(scope: CoroutineScope = CoroutineScope(Dispatchers.Default))
|
||||||
|
|||||||
@@ -1,27 +1,30 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.bot.exceptions
|
package com.github.insanusmokrassar.TelegramBotAPI.bot.exceptions
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.Response
|
import com.github.insanusmokrassar.TelegramBotAPI.types.Response
|
||||||
import kotlinx.io.errors.IOException
|
import kotlinx.io.IOException
|
||||||
|
|
||||||
fun newRequestException(
|
fun newRequestException(
|
||||||
response: Response,
|
response: Response,
|
||||||
plainAnswer: String,
|
plainAnswer: String,
|
||||||
message: String? = null,
|
message: String? = null,
|
||||||
cause: Throwable? = null
|
cause: Throwable? = null
|
||||||
) = when (response.description) {
|
) = response.description ?.let { description ->
|
||||||
"Bad Request: reply message not found" -> ReplyMessageNotFoundException(response, plainAnswer, message, cause)
|
when {
|
||||||
"Unauthorized" -> UnauthorizedException(response, plainAnswer, message, cause)
|
description == "Bad Request: reply message not found" -> ReplyMessageNotFoundException(response, plainAnswer, message, cause)
|
||||||
else -> CommonRequestException(response, plainAnswer, message, cause)
|
description == "Bad Request: message to edit not found" -> MessageToEditNotFoundException(response, plainAnswer, message, cause)
|
||||||
}
|
description.contains("Bad Request: message is not modified") -> MessageIsNotModifiedException(response, plainAnswer, message, cause)
|
||||||
|
description == "Unauthorized" -> UnauthorizedException(response, plainAnswer, message, cause)
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
} ?: CommonRequestException(response, plainAnswer, message, cause)
|
||||||
|
|
||||||
sealed class RequestException constructor(
|
sealed class RequestException constructor(
|
||||||
val response: Response,
|
val response: Response,
|
||||||
val plainAnswer: String,
|
val plainAnswer: String,
|
||||||
message: String? = null,
|
message: String? = null,
|
||||||
cause: Throwable? = null
|
override val cause: Throwable? = null
|
||||||
) : IOException(
|
) : IOException(
|
||||||
message ?: "Something went wrong",
|
message ?: "Something went wrong"
|
||||||
cause
|
|
||||||
)
|
)
|
||||||
|
|
||||||
class CommonRequestException(response: Response, plainAnswer: String, message: String?, cause: Throwable?) :
|
class CommonRequestException(response: Response, plainAnswer: String, message: String?, cause: Throwable?) :
|
||||||
@@ -32,3 +35,9 @@ class UnauthorizedException(response: Response, plainAnswer: String, message: St
|
|||||||
|
|
||||||
class ReplyMessageNotFoundException(response: Response, plainAnswer: String, message: String?, cause: Throwable?) :
|
class ReplyMessageNotFoundException(response: Response, plainAnswer: String, message: String?, cause: Throwable?) :
|
||||||
RequestException(response, plainAnswer, message, cause)
|
RequestException(response, plainAnswer, message, cause)
|
||||||
|
|
||||||
|
class MessageIsNotModifiedException(response: Response, plainAnswer: String, message: String?, cause: Throwable?) :
|
||||||
|
RequestException(response, plainAnswer, message, cause)
|
||||||
|
|
||||||
|
class MessageToEditNotFoundException(response: Response, plainAnswer: String, message: String?, cause: Throwable?) :
|
||||||
|
RequestException(response, plainAnswer, message, cause)
|
||||||
|
|||||||
@@ -3,10 +3,11 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.MessageAction
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.MessageAction
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
|
private val AbleToBeForwardedMessageDeserializer = TelegramBotAPIMessageDeserializationStrategyClass<PossiblyForwardedMessage>()
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class ForwardMessage(
|
data class ForwardMessage(
|
||||||
@SerialName(fromChatIdField)
|
@SerialName(fromChatIdField)
|
||||||
@@ -17,15 +18,14 @@ data class ForwardMessage(
|
|||||||
override val messageId: MessageIdentifier,
|
override val messageId: MessageIdentifier,
|
||||||
@SerialName(disableNotificationField)
|
@SerialName(disableNotificationField)
|
||||||
val disableNotification: Boolean = false
|
val disableNotification: Boolean = false
|
||||||
): SimpleRequest<Message>, MessageAction {
|
): SimpleRequest<PossiblyForwardedMessage>, MessageAction {
|
||||||
@Transient
|
|
||||||
override val chatId: ChatIdentifier
|
override val chatId: ChatIdentifier
|
||||||
get() = fromChatId
|
get() = fromChatId
|
||||||
|
|
||||||
override fun method(): String = "forwardMessage"
|
override fun method(): String = "forwardMessage"
|
||||||
|
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<PossiblyForwardedMessage>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = AbleToBeForwardedMessageDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ data class FileId(
|
|||||||
fun String.toInputFile(): InputFile = FileId(this)
|
fun String.toInputFile(): InputFile = FileId(this)
|
||||||
|
|
||||||
@Serializer(InputFile::class)
|
@Serializer(InputFile::class)
|
||||||
object InputFileSerializer : KSerializer<InputFile> {
|
internal object InputFileSerializer : KSerializer<InputFile> {
|
||||||
override val descriptor: SerialDescriptor = StringDescriptor.withName(FileId::class.toString())
|
override val descriptor: SerialDescriptor = StringDescriptor.withName(FileId::class.toString())
|
||||||
override fun serialize(encoder: Encoder, obj: InputFile) = encoder.encodeString(obj.fileId)
|
override fun serialize(encoder: Encoder, obj: InputFile) = encoder.encodeString(obj.fileId)
|
||||||
override fun deserialize(decoder: Decoder): FileId = FileId(decoder.decodeString())
|
override fun deserialize(decoder: Decoder): FileId = FileId(decoder.decodeString())
|
||||||
|
|||||||
@@ -51,6 +51,6 @@ fun InlineQuery.createAnswer(
|
|||||||
switchPmParameter
|
switchPmParameter
|
||||||
)
|
)
|
||||||
|
|
||||||
object InlineQueryAnswersResultsSerializer: KSerializer<List<InlineQueryResult>> by ArrayListSerializer(
|
internal object InlineQueryAnswersResultsSerializer: KSerializer<List<InlineQueryResult>> by ArrayListSerializer(
|
||||||
InlineQueryResultSerializer
|
InlineQueryResultSerializer
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ data class AnswerShippingQueryOk(
|
|||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
|
|
||||||
object ShippingOptionsSerializer : KSerializer<List<ShippingOption>> by ArrayListSerializer(
|
internal object ShippingOptionsSerializer : KSerializer<List<ShippingOption>> by ArrayListSerializer(
|
||||||
ShippingOption.serializer()
|
ShippingOption.serializer()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -3,23 +3,22 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.get
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.ChatMember
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.ChatMemberSerializerWithoutDeserialization
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField
|
import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
import kotlinx.serialization.internal.ArrayListSerializer
|
import kotlinx.serialization.internal.ArrayListSerializer
|
||||||
|
|
||||||
private val chatMembersListSerializer = ArrayListSerializer(
|
private val chatMembersListSerializer = ArrayListSerializer(
|
||||||
ChatMemberSerializerWithoutDeserialization
|
AdministratorChatMemberSerializerWithoutDeserialization
|
||||||
)
|
)
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class GetChatAdministrators(
|
data class GetChatAdministrators(
|
||||||
@SerialName(chatIdField)
|
@SerialName(chatIdField)
|
||||||
override val chatId: ChatIdentifier
|
override val chatId: ChatIdentifier
|
||||||
): ChatRequest, SimpleRequest<List<ChatMember>> {
|
): ChatRequest, SimpleRequest<List<AdministratorChatMember>> {
|
||||||
override fun method(): String = "getChatAdministrators"
|
override fun method(): String = "getChatAdministrators"
|
||||||
override val resultDeserializer: DeserializationStrategy<List<ChatMember>>
|
override val resultDeserializer: DeserializationStrategy<List<AdministratorChatMember>>
|
||||||
get() = chatMembersListSerializer
|
get() = chatMembersListSerializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.members
|
||||||
|
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.chat.abstracts.ChatMemberRequest
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||||
|
import kotlinx.serialization.*
|
||||||
|
import kotlinx.serialization.internal.BooleanSerializer
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Representation of https://core.telegram.org/bots/api#setchatadministratorcustomtitle
|
||||||
|
*
|
||||||
|
* Please, remember about restrictions for characters in custom title
|
||||||
|
*/
|
||||||
|
@Serializable
|
||||||
|
data class SetChatAdministratorCustomTitle(
|
||||||
|
@SerialName(chatIdField)
|
||||||
|
override val chatId: ChatId,
|
||||||
|
@SerialName(userIdField)
|
||||||
|
override val userId: UserId,
|
||||||
|
@SerialName(customTitleField)
|
||||||
|
val customTitle: String
|
||||||
|
) : ChatMemberRequest<Boolean> {
|
||||||
|
override fun method(): String = "setChatAdministratorCustomTitle"
|
||||||
|
override val resultDeserializer: DeserializationStrategy<Boolean>
|
||||||
|
get() = BooleanSerializer
|
||||||
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
|
get() = RestrictChatMember.serializer()
|
||||||
|
|
||||||
|
init {
|
||||||
|
if (customTitle.length !in customTitleLength) {
|
||||||
|
throw IllegalArgumentException("Custom title length must be in range $customTitleLength, but was ${customTitle.length}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,10 +3,15 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.LiveLocation
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.*
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.LocationContent
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.TextContent
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
|
private val commonResultDeserializer = TelegramBotAPIMessageDeserializationStrategyClass<ContentMessage<LocationContent>>()
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class EditChatMessageLiveLocation(
|
data class EditChatMessageLiveLocation(
|
||||||
@SerialName(chatIdField)
|
@SerialName(chatIdField)
|
||||||
@@ -19,10 +24,10 @@ data class EditChatMessageLiveLocation(
|
|||||||
override val longitude: Double,
|
override val longitude: Double,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: InlineKeyboardMarkup? = null
|
override val replyMarkup: InlineKeyboardMarkup? = null
|
||||||
) : EditChatMessage, EditReplyMessage, EditLocationMessage {
|
) : EditChatMessage<LocationContent>, EditReplyMessage, EditLocationMessage {
|
||||||
override fun method(): String = "editMessageLiveLocation"
|
override fun method(): String = "editMessageLiveLocation"
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<LocationContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = commonResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,10 +4,14 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditCh
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditReplyMessage
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditReplyMessage
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.LocationContent
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
|
private val commonResultDeserializer = TelegramBotAPIMessageDeserializationStrategyClass<ContentMessage<LocationContent>>()
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class StopChatMessageLiveLocation(
|
data class StopChatMessageLiveLocation(
|
||||||
@SerialName(chatIdField)
|
@SerialName(chatIdField)
|
||||||
@@ -16,10 +20,10 @@ data class StopChatMessageLiveLocation(
|
|||||||
override val messageId: MessageIdentifier,
|
override val messageId: MessageIdentifier,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: InlineKeyboardMarkup? = null
|
override val replyMarkup: InlineKeyboardMarkup? = null
|
||||||
) : EditChatMessage, EditReplyMessage {
|
) : EditChatMessage<LocationContent>, EditReplyMessage {
|
||||||
override fun method(): String = "stopMessageLiveLocation"
|
override fun method(): String = "stopMessageLiveLocation"
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<LocationContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = commonResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,12 +4,16 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditCh
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditReplyMessage
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditReplyMessage
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
const val editMessageReplyMarkupMethod = "editMessageReplyMarkup"
|
const val editMessageReplyMarkupMethod = "editMessageReplyMarkup"
|
||||||
|
|
||||||
|
private val commonResultDeserializer = TelegramBotAPIMessageDeserializationStrategyClass<ContentMessage<MessageContent>>()
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class EditChatMessageReplyMarkup(
|
data class EditChatMessageReplyMarkup(
|
||||||
@SerialName(chatIdField)
|
@SerialName(chatIdField)
|
||||||
@@ -18,11 +22,11 @@ data class EditChatMessageReplyMarkup(
|
|||||||
override val messageId: MessageIdentifier,
|
override val messageId: MessageIdentifier,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: InlineKeyboardMarkup? = null
|
override val replyMarkup: InlineKeyboardMarkup? = null
|
||||||
) : EditChatMessage, EditReplyMessage {
|
) : EditChatMessage<MessageContent>, EditReplyMessage {
|
||||||
|
|
||||||
override fun method(): String = editMessageReplyMarkupMethod
|
override fun method(): String = editMessageReplyMarkupMethod
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<MessageContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = commonResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts
|
|||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.MessageAction
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.MessageAction
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent
|
||||||
|
|
||||||
interface EditChatMessage : SimpleRequest<Message>, MessageAction
|
interface EditChatMessage<MT: MessageContent> : SimpleRequest<ContentMessage<MT>>, MessageAction
|
||||||
|
|||||||
@@ -1,12 +1,15 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.caption
|
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.caption
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.*
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.*
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.media.MediaContentMessageResultDeserializer
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.TextContent
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
const val editMessageCaptionMethod = "editMessageCaption"
|
const val editMessageCaptionMethod = "editMessageCaption"
|
||||||
@@ -23,11 +26,11 @@ data class EditChatMessageCaption(
|
|||||||
override val parseMode: ParseMode? = null,
|
override val parseMode: ParseMode? = null,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: InlineKeyboardMarkup? = null
|
override val replyMarkup: InlineKeyboardMarkup? = null
|
||||||
) : EditChatMessage, EditTextChatMessage, EditReplyMessage {
|
) : EditChatMessage<MediaContent>, EditTextChatMessage, EditReplyMessage {
|
||||||
|
|
||||||
override fun method(): String = editMessageCaptionMethod
|
override fun method(): String = editMessageCaptionMethod
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<MediaContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = MediaContentMessageResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,12 +5,15 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.*
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMedia
|
import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMedia
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
const val editMessageMediaMethod = "editMessageMedia"
|
const val editMessageMediaMethod = "editMessageMedia"
|
||||||
|
|
||||||
|
internal val MediaContentMessageResultDeserializer = TelegramBotAPIMessageDeserializationStrategyClass<ContentMessage<MediaContent>>()
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class EditChatMessageMedia(
|
data class EditChatMessageMedia(
|
||||||
@SerialName(chatIdField)
|
@SerialName(chatIdField)
|
||||||
@@ -21,7 +24,7 @@ data class EditChatMessageMedia(
|
|||||||
override val media: InputMedia,
|
override val media: InputMedia,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: InlineKeyboardMarkup? = null
|
override val replyMarkup: InlineKeyboardMarkup? = null
|
||||||
) : EditChatMessage, EditReplyMessage, EditMediaMessage {
|
) : EditChatMessage<MediaContent>, EditReplyMessage, EditMediaMessage {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
if (media.file is MultipartFile) {
|
if (media.file is MultipartFile) {
|
||||||
@@ -30,8 +33,8 @@ data class EditChatMessageMedia(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun method(): String = editMessageMediaMethod
|
override fun method(): String = editMessageMediaMethod
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<MediaContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = MediaContentMessageResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.text
|
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.text
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.*
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.*
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.TextContentMessageResultDeserializer
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.TextContent
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
const val editMessageTextMethod = "editMessageText"
|
const val editMessageTextMethod = "editMessageText"
|
||||||
@@ -25,11 +27,11 @@ data class EditChatMessageText(
|
|||||||
override val disableWebPagePreview: Boolean? = null,
|
override val disableWebPagePreview: Boolean? = null,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: InlineKeyboardMarkup? = null
|
override val replyMarkup: InlineKeyboardMarkup? = null
|
||||||
) : EditChatMessage, EditTextChatMessage, EditReplyMessage, EditDisableWebPagePreviewMessage {
|
) : EditChatMessage<TextContent>, EditTextChatMessage, EditReplyMessage, EditDisableWebPagePreviewMessage {
|
||||||
|
|
||||||
override fun method(): String = editMessageTextMethod
|
override fun method(): String = editMessageTextMethod
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<TextContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = TextContentMessageResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,4 +15,4 @@ interface GetGameHighScores : SimpleRequest<List<GameHighScore>> {
|
|||||||
get() = GameHighScoresSerializer
|
get() = GameHighScoresSerializer
|
||||||
}
|
}
|
||||||
|
|
||||||
object GameHighScoresSerializer : KSerializer<List<GameHighScore>> by ArrayListSerializer(GameHighScore.serializer())
|
internal object GameHighScoresSerializer : KSerializer<List<GameHighScore>> by ArrayListSerializer(GameHighScore.serializer())
|
||||||
|
|||||||
@@ -4,10 +4,14 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.Replyi
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMessageRequest
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMessageRequest
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.ContactContent
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
|
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<ContactContent>>
|
||||||
|
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class SendContact(
|
data class SendContact(
|
||||||
@SerialName(chatIdField)
|
@SerialName(chatIdField)
|
||||||
@@ -24,8 +28,8 @@ data class SendContact(
|
|||||||
override val replyToMessageId: MessageIdentifier? = null,
|
override val replyToMessageId: MessageIdentifier? = null,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: KeyboardMarkup? = null
|
override val replyMarkup: KeyboardMarkup? = null
|
||||||
) : SendMessageRequest<Message>,
|
) : SendMessageRequest<ContentMessage<ContactContent>>,
|
||||||
ReplyingMarkupSendMessageRequest<Message>
|
ReplyingMarkupSendMessageRequest<ContentMessage<ContactContent>>
|
||||||
{
|
{
|
||||||
constructor(
|
constructor(
|
||||||
chatId: ChatIdentifier,
|
chatId: ChatIdentifier,
|
||||||
@@ -44,8 +48,8 @@ data class SendContact(
|
|||||||
)
|
)
|
||||||
|
|
||||||
override fun method(): String = "sendContact"
|
override fun method(): String = "sendContact"
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<ContactContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = commonResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,10 +3,15 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.send
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.*
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.LocationContent
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
|
|
||||||
|
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<LocationContent>>
|
||||||
|
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||||
|
|
||||||
// TODO:: Add location tracker for tracking location
|
// TODO:: Add location tracker for tracking location
|
||||||
@Serializable
|
@Serializable
|
||||||
data class SendLocation(
|
data class SendLocation(
|
||||||
@@ -24,14 +29,14 @@ data class SendLocation(
|
|||||||
override val replyToMessageId: MessageIdentifier? = null,
|
override val replyToMessageId: MessageIdentifier? = null,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: KeyboardMarkup? = null
|
override val replyMarkup: KeyboardMarkup? = null
|
||||||
) : SendMessageRequest<Message>,
|
) : SendMessageRequest<ContentMessage<LocationContent>>,
|
||||||
ReplyingMarkupSendMessageRequest<Message>,
|
ReplyingMarkupSendMessageRequest<ContentMessage<LocationContent>>,
|
||||||
PositionedSendMessageRequest<Message>
|
PositionedSendMessageRequest<ContentMessage<LocationContent>>
|
||||||
{
|
{
|
||||||
|
|
||||||
override fun method(): String = "sendLocation"
|
override fun method(): String = "sendLocation"
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<LocationContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = commonResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,12 +6,15 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.TextContent
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
|
internal val TextContentMessageResultDeserializer: DeserializationStrategy<ContentMessage<TextContent>>
|
||||||
|
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class SendMessage(
|
data class SendTextMessage(
|
||||||
@SerialName(chatIdField)
|
@SerialName(chatIdField)
|
||||||
override val chatId: ChatIdentifier,
|
override val chatId: ChatIdentifier,
|
||||||
@SerialName(textField)
|
@SerialName(textField)
|
||||||
@@ -26,9 +29,9 @@ data class SendMessage(
|
|||||||
override val replyToMessageId: MessageIdentifier? = null,
|
override val replyToMessageId: MessageIdentifier? = null,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: KeyboardMarkup? = null
|
override val replyMarkup: KeyboardMarkup? = null
|
||||||
) : SendMessageRequest<Message>,
|
) : SendMessageRequest<ContentMessage<TextContent>>,
|
||||||
ReplyingMarkupSendMessageRequest<Message>,
|
ReplyingMarkupSendMessageRequest<ContentMessage<TextContent>>,
|
||||||
TextableSendMessageRequest<Message>,
|
TextableSendMessageRequest<ContentMessage<TextContent>>,
|
||||||
DisableWebPagePreview
|
DisableWebPagePreview
|
||||||
{
|
{
|
||||||
init {
|
init {
|
||||||
@@ -38,8 +41,16 @@ data class SendMessage(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun method(): String = "sendMessage"
|
override fun method(): String = "sendMessage"
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<TextContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = TextContentMessageResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated(
|
||||||
|
"This declaration is deprecated due violation of common naming rules",
|
||||||
|
ReplaceWith(
|
||||||
|
"SendTextMessage"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
typealias SendMessage = SendTextMessage
|
||||||
|
|||||||
@@ -4,10 +4,14 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.Replyi
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMessageRequest
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMessageRequest
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.PollContent
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
|
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<PollContent>>
|
||||||
|
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class SendPoll(
|
data class SendPoll(
|
||||||
@SerialName(chatIdField)
|
@SerialName(chatIdField)
|
||||||
@@ -22,8 +26,8 @@ data class SendPoll(
|
|||||||
override val replyToMessageId: MessageIdentifier? = null,
|
override val replyToMessageId: MessageIdentifier? = null,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: KeyboardMarkup? = null
|
override val replyMarkup: KeyboardMarkup? = null
|
||||||
) : SendMessageRequest<Message>,
|
) : SendMessageRequest<ContentMessage<PollContent>>,
|
||||||
ReplyingMarkupSendMessageRequest<Message> {
|
ReplyingMarkupSendMessageRequest<ContentMessage<PollContent>> {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
if (question.length !in pollQuestionTextLength) {
|
if (question.length !in pollQuestionTextLength) {
|
||||||
@@ -40,8 +44,8 @@ data class SendPoll(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun method(): String = "sendPoll"
|
override fun method(): String = "sendPoll"
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<PollContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = commonResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
@@ -3,10 +3,13 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.send
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.*
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.VenueContent
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
|
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<VenueContent>>
|
||||||
|
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class SendVenue(
|
data class SendVenue(
|
||||||
@SerialName(chatIdField)
|
@SerialName(chatIdField)
|
||||||
@@ -27,10 +30,10 @@ data class SendVenue(
|
|||||||
override val replyToMessageId: MessageIdentifier? = null,
|
override val replyToMessageId: MessageIdentifier? = null,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: KeyboardMarkup? = null
|
override val replyMarkup: KeyboardMarkup? = null
|
||||||
) : SendMessageRequest<Message>,
|
) : SendMessageRequest<ContentMessage<VenueContent>>,
|
||||||
PositionedSendMessageRequest<Message>,
|
PositionedSendMessageRequest<ContentMessage<VenueContent>>,
|
||||||
TitledSendMessageRequest<Message>,
|
TitledSendMessageRequest<ContentMessage<VenueContent>>,
|
||||||
ReplyingMarkupSendMessageRequest<Message>
|
ReplyingMarkupSendMessageRequest<ContentMessage<VenueContent>>
|
||||||
{
|
{
|
||||||
constructor(
|
constructor(
|
||||||
chatId: ChatIdentifier,
|
chatId: ChatIdentifier,
|
||||||
@@ -51,8 +54,8 @@ data class SendVenue(
|
|||||||
)
|
)
|
||||||
|
|
||||||
override fun method(): String = "sendVenue"
|
override fun method(): String = "sendVenue"
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<VenueContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = commonResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,10 +4,14 @@ import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ReplyMar
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMessageRequest
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMessageRequest
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.GameContent
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
|
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<GameContent>>
|
||||||
|
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class SendGame (
|
data class SendGame (
|
||||||
@SerialName(chatIdField)
|
@SerialName(chatIdField)
|
||||||
@@ -20,11 +24,11 @@ data class SendGame (
|
|||||||
override val replyToMessageId: MessageIdentifier? = null,
|
override val replyToMessageId: MessageIdentifier? = null,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: KeyboardMarkup? = null
|
override val replyMarkup: KeyboardMarkup? = null
|
||||||
) : SendMessageRequest<Message>,
|
) : SendMessageRequest<ContentMessage<GameContent>>,
|
||||||
ReplyMarkup {
|
ReplyMarkup {
|
||||||
override fun method(): String = "sendGame"
|
override fun method(): String = "sendGame"
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<GameContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = commonResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
@@ -7,8 +7,9 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.media.AnimationContent
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
@@ -24,7 +25,7 @@ fun SendAnimation(
|
|||||||
disableNotification: Boolean = false,
|
disableNotification: Boolean = false,
|
||||||
replyToMessageId: MessageIdentifier? = null,
|
replyToMessageId: MessageIdentifier? = null,
|
||||||
replyMarkup: KeyboardMarkup? = null
|
replyMarkup: KeyboardMarkup? = null
|
||||||
): Request<Message> {
|
): Request<ContentMessage<AnimationContent>> {
|
||||||
val animationAsFileId = (animation as? FileId) ?.fileId
|
val animationAsFileId = (animation as? FileId) ?.fileId
|
||||||
val animationAsFile = animation as? MultipartFile
|
val animationAsFile = animation as? MultipartFile
|
||||||
val thumbAsFileId = (thumb as? FileId) ?.fileId
|
val thumbAsFileId = (thumb as? FileId) ?.fileId
|
||||||
@@ -54,6 +55,9 @@ fun SendAnimation(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<AnimationContent>>
|
||||||
|
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class SendAnimationData internal constructor(
|
data class SendAnimationData internal constructor(
|
||||||
@SerialName(chatIdField)
|
@SerialName(chatIdField)
|
||||||
@@ -78,13 +82,13 @@ data class SendAnimationData internal constructor(
|
|||||||
override val replyToMessageId: MessageIdentifier? = null,
|
override val replyToMessageId: MessageIdentifier? = null,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: KeyboardMarkup? = null
|
override val replyMarkup: KeyboardMarkup? = null
|
||||||
) : DataRequest<Message>,
|
) : DataRequest<ContentMessage<AnimationContent>>,
|
||||||
SendMessageRequest<Message>,
|
SendMessageRequest<ContentMessage<AnimationContent>>,
|
||||||
ReplyingMarkupSendMessageRequest<Message>,
|
ReplyingMarkupSendMessageRequest<ContentMessage<AnimationContent>>,
|
||||||
TextableSendMessageRequest<Message>,
|
TextableSendMessageRequest<ContentMessage<AnimationContent>>,
|
||||||
ThumbedSendMessageRequest<Message>,
|
ThumbedSendMessageRequest<ContentMessage<AnimationContent>>,
|
||||||
DuratedSendMessageRequest<Message>,
|
DuratedSendMessageRequest<ContentMessage<AnimationContent>>,
|
||||||
SizedSendMessageRequest<Message>
|
SizedSendMessageRequest<ContentMessage<AnimationContent>>
|
||||||
{
|
{
|
||||||
init {
|
init {
|
||||||
text ?.let {
|
text ?.let {
|
||||||
@@ -95,8 +99,8 @@ data class SendAnimationData internal constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun method(): String = "sendAnimation"
|
override fun method(): String = "sendAnimation"
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<AnimationContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = commonResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,8 +8,9 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.media.AudioContent
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
@@ -25,7 +26,7 @@ fun SendAudio(
|
|||||||
disableNotification: Boolean = false,
|
disableNotification: Boolean = false,
|
||||||
replyToMessageId: MessageIdentifier? = null,
|
replyToMessageId: MessageIdentifier? = null,
|
||||||
replyMarkup: KeyboardMarkup? = null
|
replyMarkup: KeyboardMarkup? = null
|
||||||
): Request<Message> {
|
): Request<ContentMessage<AudioContent>> {
|
||||||
val audioAsFileId = (audio as? FileId) ?.fileId
|
val audioAsFileId = (audio as? FileId) ?.fileId
|
||||||
val audioAsFile = audio as? MultipartFile
|
val audioAsFile = audio as? MultipartFile
|
||||||
val thumbAsFileId = (thumb as? FileId) ?.fileId
|
val thumbAsFileId = (thumb as? FileId) ?.fileId
|
||||||
@@ -55,6 +56,9 @@ fun SendAudio(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<AudioContent>>
|
||||||
|
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class SendAudioData internal constructor(
|
data class SendAudioData internal constructor(
|
||||||
@SerialName(chatIdField)
|
@SerialName(chatIdField)
|
||||||
@@ -79,13 +83,13 @@ data class SendAudioData internal constructor(
|
|||||||
override val replyToMessageId: MessageIdentifier? = null,
|
override val replyToMessageId: MessageIdentifier? = null,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: KeyboardMarkup? = null
|
override val replyMarkup: KeyboardMarkup? = null
|
||||||
) : DataRequest<Message>,
|
) : DataRequest<ContentMessage<AudioContent>>,
|
||||||
SendMessageRequest<Message>,
|
SendMessageRequest<ContentMessage<AudioContent>>,
|
||||||
ReplyingMarkupSendMessageRequest<Message>,
|
ReplyingMarkupSendMessageRequest<ContentMessage<AudioContent>>,
|
||||||
TextableSendMessageRequest<Message>,
|
TextableSendMessageRequest<ContentMessage<AudioContent>>,
|
||||||
ThumbedSendMessageRequest<Message>,
|
ThumbedSendMessageRequest<ContentMessage<AudioContent>>,
|
||||||
TitledSendMessageRequest<Message>,
|
TitledSendMessageRequest<ContentMessage<AudioContent>>,
|
||||||
DuratedSendMessageRequest<Message>,
|
DuratedSendMessageRequest<ContentMessage<AudioContent>>,
|
||||||
Performerable
|
Performerable
|
||||||
{
|
{
|
||||||
init {
|
init {
|
||||||
@@ -97,8 +101,8 @@ data class SendAudioData internal constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun method(): String = "sendAudio"
|
override fun method(): String = "sendAudio"
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<AudioContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = commonResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,9 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.media.DocumentContent
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
@@ -21,7 +22,7 @@ fun SendDocument(
|
|||||||
disableNotification: Boolean = false,
|
disableNotification: Boolean = false,
|
||||||
replyToMessageId: MessageIdentifier? = null,
|
replyToMessageId: MessageIdentifier? = null,
|
||||||
replyMarkup: KeyboardMarkup? = null
|
replyMarkup: KeyboardMarkup? = null
|
||||||
): Request<Message> {
|
): Request<ContentMessage<DocumentContent>> {
|
||||||
val documentAsFileId = (document as? FileId) ?.fileId
|
val documentAsFileId = (document as? FileId) ?.fileId
|
||||||
val documentAsFile = document as? MultipartFile
|
val documentAsFile = document as? MultipartFile
|
||||||
val thumbAsFileId = (thumb as? FileId) ?.fileId
|
val thumbAsFileId = (thumb as? FileId) ?.fileId
|
||||||
@@ -48,6 +49,9 @@ fun SendDocument(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<DocumentContent>>
|
||||||
|
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class SendDocumentData internal constructor(
|
data class SendDocumentData internal constructor(
|
||||||
@SerialName(chatIdField)
|
@SerialName(chatIdField)
|
||||||
@@ -66,11 +70,11 @@ data class SendDocumentData internal constructor(
|
|||||||
override val replyToMessageId: MessageIdentifier? = null,
|
override val replyToMessageId: MessageIdentifier? = null,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: KeyboardMarkup? = null
|
override val replyMarkup: KeyboardMarkup? = null
|
||||||
) : DataRequest<Message>,
|
) : DataRequest<ContentMessage<DocumentContent>>,
|
||||||
SendMessageRequest<Message>,
|
SendMessageRequest<ContentMessage<DocumentContent>>,
|
||||||
ReplyingMarkupSendMessageRequest<Message>,
|
ReplyingMarkupSendMessageRequest<ContentMessage<DocumentContent>>,
|
||||||
TextableSendMessageRequest<Message>,
|
TextableSendMessageRequest<ContentMessage<DocumentContent>>,
|
||||||
ThumbedSendMessageRequest<Message>
|
ThumbedSendMessageRequest<ContentMessage<DocumentContent>>
|
||||||
{
|
{
|
||||||
init {
|
init {
|
||||||
text ?.let {
|
text ?.let {
|
||||||
@@ -81,8 +85,8 @@ data class SendDocumentData internal constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun method(): String = "sendDocument"
|
override fun method(): String = "sendDocument"
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<DocumentContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = commonResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMe
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.base.*
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.base.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.MediaGroupMessage
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializerClass
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.toJsonWithoutNulls
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.toJsonWithoutNulls
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
import kotlinx.serialization.internal.ArrayListSerializer
|
import kotlinx.serialization.internal.ArrayListSerializer
|
||||||
@@ -20,7 +20,7 @@ fun SendMediaGroup(
|
|||||||
media: List<MediaGroupMemberInputMedia>,
|
media: List<MediaGroupMemberInputMedia>,
|
||||||
disableNotification: Boolean = false,
|
disableNotification: Boolean = false,
|
||||||
replyToMessageId: MessageIdentifier? = null
|
replyToMessageId: MessageIdentifier? = null
|
||||||
): Request<List<Message>> {
|
): Request<List<MediaGroupMessage>> {
|
||||||
if (media.size !in membersCountInMediaGroup) {
|
if (media.size !in membersCountInMediaGroup) {
|
||||||
throw IllegalArgumentException("Count of members for media group must be in $membersCountInMediaGroup range")
|
throw IllegalArgumentException("Count of members for media group must be in $membersCountInMediaGroup range")
|
||||||
}
|
}
|
||||||
@@ -53,7 +53,8 @@ fun SendMediaGroup(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val messagesListSerializer = ArrayListSerializer(TelegramBotAPIMessageDeserializeOnlySerializer)
|
private val messagesListSerializer: ArrayListSerializer<MediaGroupMessage>
|
||||||
|
= ArrayListSerializer(TelegramBotAPIMessageDeserializeOnlySerializerClass())
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class SendMediaGroupData internal constructor(
|
data class SendMediaGroupData internal constructor(
|
||||||
@@ -64,7 +65,7 @@ data class SendMediaGroupData internal constructor(
|
|||||||
override val disableNotification: Boolean = false,
|
override val disableNotification: Boolean = false,
|
||||||
@SerialName(replyToMessageIdField)
|
@SerialName(replyToMessageIdField)
|
||||||
override val replyToMessageId: MessageIdentifier? = null
|
override val replyToMessageId: MessageIdentifier? = null
|
||||||
) : DataRequest<List<Message>>, SendMessageRequest<List<Message>> {
|
) : DataRequest<List<MediaGroupMessage>>, SendMessageRequest<List<MediaGroupMessage>> {
|
||||||
@SerialName(mediaField)
|
@SerialName(mediaField)
|
||||||
private val convertedMedia: String
|
private val convertedMedia: String
|
||||||
get() = jsonArray {
|
get() = jsonArray {
|
||||||
@@ -77,7 +78,7 @@ data class SendMediaGroupData internal constructor(
|
|||||||
override fun method(): String = "sendMediaGroup"
|
override fun method(): String = "sendMediaGroup"
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
override val resultDeserializer: DeserializationStrategy<List<Message>>
|
override val resultDeserializer: DeserializationStrategy<List<MediaGroupMessage>>
|
||||||
get() = messagesListSerializer
|
get() = messagesListSerializer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,9 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.media.PhotoContent
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
fun SendPhoto(
|
fun SendPhoto(
|
||||||
@@ -19,7 +20,7 @@ fun SendPhoto(
|
|||||||
disableNotification: Boolean = false,
|
disableNotification: Boolean = false,
|
||||||
replyToMessageId: MessageIdentifier? = null,
|
replyToMessageId: MessageIdentifier? = null,
|
||||||
replyMarkup: KeyboardMarkup? = null
|
replyMarkup: KeyboardMarkup? = null
|
||||||
): Request<Message> {
|
): Request<ContentMessage<PhotoContent>> {
|
||||||
val data = SendPhotoData(
|
val data = SendPhotoData(
|
||||||
chatId,
|
chatId,
|
||||||
(photo as? FileId) ?.fileId,
|
(photo as? FileId) ?.fileId,
|
||||||
@@ -37,6 +38,9 @@ fun SendPhoto(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<PhotoContent>>
|
||||||
|
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class SendPhotoData internal constructor(
|
data class SendPhotoData internal constructor(
|
||||||
@SerialName(chatIdField)
|
@SerialName(chatIdField)
|
||||||
@@ -53,10 +57,10 @@ data class SendPhotoData internal constructor(
|
|||||||
override val replyToMessageId: MessageIdentifier? = null,
|
override val replyToMessageId: MessageIdentifier? = null,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: KeyboardMarkup? = null
|
override val replyMarkup: KeyboardMarkup? = null
|
||||||
) : DataRequest<Message>,
|
) : DataRequest<ContentMessage<PhotoContent>>,
|
||||||
SendMessageRequest<Message>,
|
SendMessageRequest<ContentMessage<PhotoContent>>,
|
||||||
ReplyingMarkupSendMessageRequest<Message>,
|
ReplyingMarkupSendMessageRequest<ContentMessage<PhotoContent>>,
|
||||||
TextableSendMessageRequest<Message>
|
TextableSendMessageRequest<ContentMessage<PhotoContent>>
|
||||||
{
|
{
|
||||||
init {
|
init {
|
||||||
text ?.let {
|
text ?.let {
|
||||||
@@ -67,8 +71,8 @@ data class SendPhotoData internal constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun method(): String = "sendPhoto"
|
override fun method(): String = "sendPhoto"
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<PhotoContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = commonResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,8 +5,9 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.Replyi
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMessageRequest
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMessageRequest
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.media.StickerContent
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.toJsonWithoutNulls
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.toJsonWithoutNulls
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
import kotlinx.serialization.json.JsonObject
|
import kotlinx.serialization.json.JsonObject
|
||||||
@@ -17,7 +18,7 @@ fun SendSticker(
|
|||||||
disableNotification: Boolean = false,
|
disableNotification: Boolean = false,
|
||||||
replyToMessageId: MessageIdentifier? = null,
|
replyToMessageId: MessageIdentifier? = null,
|
||||||
replyMarkup: KeyboardMarkup? = null
|
replyMarkup: KeyboardMarkup? = null
|
||||||
): Request<Message> = SendStickerByFileId(
|
): Request<ContentMessage<StickerContent>> = SendStickerByFileId(
|
||||||
chatId,
|
chatId,
|
||||||
sticker as? FileId,
|
sticker as? FileId,
|
||||||
disableNotification,
|
disableNotification,
|
||||||
@@ -30,6 +31,9 @@ fun SendSticker(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<StickerContent>>
|
||||||
|
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class SendStickerByFileId internal constructor(
|
data class SendStickerByFileId internal constructor(
|
||||||
@SerialName(chatIdField)
|
@SerialName(chatIdField)
|
||||||
@@ -42,10 +46,10 @@ data class SendStickerByFileId internal constructor(
|
|||||||
override val replyToMessageId: MessageIdentifier? = null,
|
override val replyToMessageId: MessageIdentifier? = null,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: KeyboardMarkup? = null
|
override val replyMarkup: KeyboardMarkup? = null
|
||||||
) : SendMessageRequest<Message>, ReplyingMarkupSendMessageRequest<Message> {
|
) : SendMessageRequest<ContentMessage<StickerContent>>, ReplyingMarkupSendMessageRequest<ContentMessage<StickerContent>> {
|
||||||
override fun method(): String = "sendSticker"
|
override fun method(): String = "sendSticker"
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<StickerContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = commonResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
@@ -54,7 +58,7 @@ data class SendStickerByFile internal constructor(
|
|||||||
@Transient
|
@Transient
|
||||||
private val sendStickerByFileId: SendStickerByFileId,
|
private val sendStickerByFileId: SendStickerByFileId,
|
||||||
val sticker: MultipartFile
|
val sticker: MultipartFile
|
||||||
) : MultipartRequest<Message>, Request<Message> by sendStickerByFileId {
|
) : MultipartRequest<ContentMessage<StickerContent>>, Request<ContentMessage<StickerContent>> by sendStickerByFileId {
|
||||||
override val mediaMap: Map<String, MultipartFile> = mapOf(stickerField to sticker)
|
override val mediaMap: Map<String, MultipartFile> = mapOf(stickerField to sticker)
|
||||||
override val paramsJson: JsonObject = sendStickerByFileId.toJsonWithoutNulls(SendStickerByFileId.serializer())
|
override val paramsJson: JsonObject = sendStickerByFileId.toJsonWithoutNulls(SendStickerByFileId.serializer())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,9 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.media.VideoContent
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
@@ -25,7 +26,7 @@ fun SendVideo(
|
|||||||
disableNotification: Boolean = false,
|
disableNotification: Boolean = false,
|
||||||
replyToMessageId: MessageIdentifier? = null,
|
replyToMessageId: MessageIdentifier? = null,
|
||||||
replyMarkup: KeyboardMarkup? = null
|
replyMarkup: KeyboardMarkup? = null
|
||||||
): Request<Message> {
|
): Request<ContentMessage<VideoContent>> {
|
||||||
val videoAsFileId = (video as? FileId) ?.fileId
|
val videoAsFileId = (video as? FileId) ?.fileId
|
||||||
val videoAsFile = video as? MultipartFile
|
val videoAsFile = video as? MultipartFile
|
||||||
val thumbAsFileId = (thumb as? FileId) ?.fileId
|
val thumbAsFileId = (thumb as? FileId) ?.fileId
|
||||||
@@ -56,6 +57,9 @@ fun SendVideo(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<VideoContent>>
|
||||||
|
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class SendVideoData internal constructor(
|
data class SendVideoData internal constructor(
|
||||||
@SerialName(chatIdField)
|
@SerialName(chatIdField)
|
||||||
@@ -82,13 +86,13 @@ data class SendVideoData internal constructor(
|
|||||||
override val replyToMessageId: MessageIdentifier? = null,
|
override val replyToMessageId: MessageIdentifier? = null,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: KeyboardMarkup? = null
|
override val replyMarkup: KeyboardMarkup? = null
|
||||||
) : DataRequest<Message>,
|
) : DataRequest<ContentMessage<VideoContent>>,
|
||||||
SendMessageRequest<Message>,
|
SendMessageRequest<ContentMessage<VideoContent>>,
|
||||||
ReplyingMarkupSendMessageRequest<Message>,
|
ReplyingMarkupSendMessageRequest<ContentMessage<VideoContent>>,
|
||||||
TextableSendMessageRequest<Message>,
|
TextableSendMessageRequest<ContentMessage<VideoContent>>,
|
||||||
ThumbedSendMessageRequest<Message>,
|
ThumbedSendMessageRequest<ContentMessage<VideoContent>>,
|
||||||
DuratedSendMessageRequest<Message>,
|
DuratedSendMessageRequest<ContentMessage<VideoContent>>,
|
||||||
SizedSendMessageRequest<Message>
|
SizedSendMessageRequest<ContentMessage<VideoContent>>
|
||||||
{
|
{
|
||||||
init {
|
init {
|
||||||
text ?.let {
|
text ?.let {
|
||||||
@@ -99,8 +103,8 @@ data class SendVideoData internal constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun method(): String = "sendVideo"
|
override fun method(): String = "sendVideo"
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<VideoContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = commonResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,9 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.media.VideoNoteContent
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
@@ -23,7 +24,7 @@ fun SendVideoNote(
|
|||||||
disableNotification: Boolean = false,
|
disableNotification: Boolean = false,
|
||||||
replyToMessageId: MessageIdentifier? = null,
|
replyToMessageId: MessageIdentifier? = null,
|
||||||
replyMarkup: KeyboardMarkup? = null
|
replyMarkup: KeyboardMarkup? = null
|
||||||
): Request<Message> {
|
): Request<ContentMessage<VideoNoteContent>> {
|
||||||
val videoNoteAsFileId = (videoNote as? FileId) ?.fileId
|
val videoNoteAsFileId = (videoNote as? FileId) ?.fileId
|
||||||
val videoNoteAsFile = videoNote as? MultipartFile
|
val videoNoteAsFile = videoNote as? MultipartFile
|
||||||
val thumbAsFileId = (thumb as? FileId) ?.fileId
|
val thumbAsFileId = (thumb as? FileId) ?.fileId
|
||||||
@@ -52,6 +53,9 @@ fun SendVideoNote(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<VideoNoteContent>>
|
||||||
|
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class SendVideoNoteData internal constructor(
|
data class SendVideoNoteData internal constructor(
|
||||||
@SerialName(chatIdField)
|
@SerialName(chatIdField)
|
||||||
@@ -74,13 +78,13 @@ data class SendVideoNoteData internal constructor(
|
|||||||
override val replyToMessageId: MessageIdentifier? = null,
|
override val replyToMessageId: MessageIdentifier? = null,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: KeyboardMarkup? = null
|
override val replyMarkup: KeyboardMarkup? = null
|
||||||
) : DataRequest<Message>,
|
) : DataRequest<ContentMessage<VideoNoteContent>>,
|
||||||
SendMessageRequest<Message>,
|
SendMessageRequest<ContentMessage<VideoNoteContent>>,
|
||||||
ReplyingMarkupSendMessageRequest<Message>,
|
ReplyingMarkupSendMessageRequest<ContentMessage<VideoNoteContent>>,
|
||||||
TextableSendMessageRequest<Message>,
|
TextableSendMessageRequest<ContentMessage<VideoNoteContent>>,
|
||||||
ThumbedSendMessageRequest<Message>,
|
ThumbedSendMessageRequest<ContentMessage<VideoNoteContent>>,
|
||||||
DuratedSendMessageRequest<Message>,
|
DuratedSendMessageRequest<ContentMessage<VideoNoteContent>>,
|
||||||
SizedSendMessageRequest<Message>
|
SizedSendMessageRequest<ContentMessage<VideoNoteContent>>
|
||||||
{
|
{
|
||||||
override val height: Int?
|
override val height: Int?
|
||||||
get() = width
|
get() = width
|
||||||
@@ -94,8 +98,8 @@ data class SendVideoNoteData internal constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun method(): String = "sendVideoNote"
|
override fun method(): String = "sendVideoNote"
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<VideoNoteContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = commonResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,9 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.media.VoiceContent
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
@@ -22,7 +23,7 @@ fun SendVoice(
|
|||||||
disableNotification: Boolean = false,
|
disableNotification: Boolean = false,
|
||||||
replyToMessageId: MessageIdentifier? = null,
|
replyToMessageId: MessageIdentifier? = null,
|
||||||
replyMarkup: KeyboardMarkup? = null
|
replyMarkup: KeyboardMarkup? = null
|
||||||
): Request<Message> {
|
): Request<ContentMessage<VoiceContent>> {
|
||||||
val voiceAsFileId = (voice as? FileId) ?.fileId
|
val voiceAsFileId = (voice as? FileId) ?.fileId
|
||||||
val voiceAsFile = voice as? MultipartFile
|
val voiceAsFile = voice as? MultipartFile
|
||||||
val thumbAsFileId = (thumb as? FileId) ?.fileId
|
val thumbAsFileId = (thumb as? FileId) ?.fileId
|
||||||
@@ -50,6 +51,9 @@ fun SendVoice(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<VoiceContent>>
|
||||||
|
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class SendVoiceData internal constructor(
|
data class SendVoiceData internal constructor(
|
||||||
@SerialName(chatIdField)
|
@SerialName(chatIdField)
|
||||||
@@ -70,12 +74,12 @@ data class SendVoiceData internal constructor(
|
|||||||
override val replyToMessageId: MessageIdentifier? = null,
|
override val replyToMessageId: MessageIdentifier? = null,
|
||||||
@SerialName(replyMarkupField)
|
@SerialName(replyMarkupField)
|
||||||
override val replyMarkup: KeyboardMarkup? = null
|
override val replyMarkup: KeyboardMarkup? = null
|
||||||
) : DataRequest<Message>,
|
) : DataRequest<ContentMessage<VoiceContent>>,
|
||||||
SendMessageRequest<Message>,
|
SendMessageRequest<ContentMessage<VoiceContent>>,
|
||||||
ReplyingMarkupSendMessageRequest<Message>,
|
ReplyingMarkupSendMessageRequest<ContentMessage<VoiceContent>>,
|
||||||
TextableSendMessageRequest<Message>,
|
TextableSendMessageRequest<ContentMessage<VoiceContent>>,
|
||||||
ThumbedSendMessageRequest<Message>,
|
ThumbedSendMessageRequest<ContentMessage<VoiceContent>>,
|
||||||
DuratedSendMessageRequest<Message>
|
DuratedSendMessageRequest<ContentMessage<VoiceContent>>
|
||||||
{
|
{
|
||||||
init {
|
init {
|
||||||
text ?.let {
|
text ?.let {
|
||||||
@@ -86,8 +90,8 @@ data class SendVoiceData internal constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun method(): String = "sendVoice"
|
override fun method(): String = "sendVoice"
|
||||||
override val resultDeserializer: DeserializationStrategy<Message>
|
override val resultDeserializer: DeserializationStrategy<ContentMessage<VoiceContent>>
|
||||||
get() = TelegramBotAPIMessageDeserializationStrategy
|
get() = commonResultDeserializer
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
override val requestSerializer: SerializationStrategy<*>
|
||||||
get() = serializer()
|
get() = serializer()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ data class AdministratorChatMemberImpl(
|
|||||||
override val canInviteUsers: Boolean,
|
override val canInviteUsers: Boolean,
|
||||||
override val canRestrictMembers: Boolean,
|
override val canRestrictMembers: Boolean,
|
||||||
override val canPinMessages: Boolean,
|
override val canPinMessages: Boolean,
|
||||||
override val canPromoteMembers: Boolean
|
override val canPromoteMembers: Boolean,
|
||||||
|
override val customTitle: String?
|
||||||
) : AdministratorChatMember
|
) : AdministratorChatMember
|
||||||
|
|||||||
@@ -3,8 +3,10 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.AdministratorChatMember
|
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.AdministratorChatMember
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.User
|
import com.github.insanusmokrassar.TelegramBotAPI.types.User
|
||||||
|
|
||||||
data class CreatorChatMember(override val user: User) :
|
data class CreatorChatMember(
|
||||||
AdministratorChatMember {
|
override val user: User,
|
||||||
|
override val customTitle: String?
|
||||||
|
) : AdministratorChatMember {
|
||||||
override val canBeEdited: Boolean = true
|
override val canBeEdited: Boolean = true
|
||||||
override val canChangeInfo: Boolean = true
|
override val canChangeInfo: Boolean = true
|
||||||
override val canPostMessages: Boolean = true
|
override val canPostMessages: Boolean = true
|
||||||
|
|||||||
@@ -39,11 +39,13 @@ internal data class RawChatMember(
|
|||||||
@SerialName(canSendOtherMessagesField)
|
@SerialName(canSendOtherMessagesField)
|
||||||
private val canSendOtherMessages: Boolean = false,
|
private val canSendOtherMessages: Boolean = false,
|
||||||
@SerialName(canAddWebPagePreviewsField)
|
@SerialName(canAddWebPagePreviewsField)
|
||||||
private val canAddWebPagePreviews: Boolean = false
|
private val canAddWebPagePreviews: Boolean = false,
|
||||||
|
@SerialName(customTitleField)
|
||||||
|
private val customTitle: String? = null
|
||||||
) {
|
) {
|
||||||
val asChatMember: ChatMember by lazy {
|
val asChatMember: ChatMember by lazy {
|
||||||
when (status) {
|
when (status) {
|
||||||
"creator" -> CreatorChatMember(user)
|
"creator" -> CreatorChatMember(user, customTitle)
|
||||||
"administrator" -> AdministratorChatMemberImpl(
|
"administrator" -> AdministratorChatMemberImpl(
|
||||||
user,
|
user,
|
||||||
canBeEdited,
|
canBeEdited,
|
||||||
@@ -54,7 +56,8 @@ internal data class RawChatMember(
|
|||||||
canInviteUsers,
|
canInviteUsers,
|
||||||
canRestrictMembers,
|
canRestrictMembers,
|
||||||
canPinMessages,
|
canPinMessages,
|
||||||
canPromoteMembers
|
canPromoteMembers,
|
||||||
|
customTitle
|
||||||
)
|
)
|
||||||
"member" -> MemberChatMember(user)
|
"member" -> MemberChatMember(user)
|
||||||
"restricted" -> RestrictedChatMember(
|
"restricted" -> RestrictedChatMember(
|
||||||
|
|||||||
@@ -7,4 +7,5 @@ interface AdministratorChatMember : SpecialRightsChatMember {
|
|||||||
val canRemoveMessages: Boolean
|
val canRemoveMessages: Boolean
|
||||||
val canRestrictMembers: Boolean
|
val canRestrictMembers: Boolean
|
||||||
val canPromoteMembers: Boolean
|
val canPromoteMembers: Boolean
|
||||||
|
val customTitle: String?
|
||||||
}
|
}
|
||||||
@@ -9,11 +9,12 @@ interface ChatMember {
|
|||||||
val user: User
|
val user: User
|
||||||
}
|
}
|
||||||
|
|
||||||
internal object ChatMemberSerializerWithoutDeserialization : KSerializer<ChatMember> {
|
internal object AdministratorChatMemberSerializerWithoutDeserialization : KSerializer<AdministratorChatMember> {
|
||||||
override val descriptor: SerialDescriptor = StringDescriptor.withName("ChatMemberSerializerWithoutDeserialization")
|
override val descriptor: SerialDescriptor = StringDescriptor.withName("ChatMemberSerializerWithoutDeserialization")
|
||||||
|
|
||||||
override fun deserialize(decoder: Decoder): ChatMember = ChatMemberDeserializationStrategy.deserialize(decoder)
|
override fun deserialize(decoder: Decoder): AdministratorChatMember
|
||||||
override fun serialize(encoder: Encoder, obj: ChatMember) = throw UnsupportedOperationException()
|
= ChatMemberDeserializationStrategy.deserialize(decoder) as AdministratorChatMember
|
||||||
|
override fun serialize(encoder: Encoder, obj: AdministratorChatMember) = throw UnsupportedOperationException()
|
||||||
}
|
}
|
||||||
|
|
||||||
internal object ChatMemberDeserializationStrategy : DeserializationStrategy<ChatMember> {
|
internal object ChatMemberDeserializationStrategy : DeserializationStrategy<ChatMember> {
|
||||||
|
|||||||
@@ -5,8 +5,12 @@ import kotlinx.serialization.Serializable
|
|||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class ChatPhoto(
|
data class ChatPhoto(
|
||||||
@SerialName("small_file_id")
|
@SerialName(smallFileIdField)
|
||||||
val smallFileId: String,
|
val smallFileId: String,
|
||||||
@SerialName("big_file_id")
|
@SerialName(bigFileIdField)
|
||||||
val bigFileId: String
|
val bigFileId: String,
|
||||||
|
@SerialName(smallFileUniqueIdField)
|
||||||
|
val smallFileUniqueId: FileUniqueId,
|
||||||
|
@SerialName(bigFileUniqueIdField)
|
||||||
|
val bigFileUniqueId: FileUniqueId
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ typealias StartParameter = String
|
|||||||
typealias InlineMessageIdentifier = String
|
typealias InlineMessageIdentifier = String
|
||||||
typealias PollIdentifier = String
|
typealias PollIdentifier = String
|
||||||
typealias StickerSetName = String
|
typealias StickerSetName = String
|
||||||
|
typealias FileUniqueId = String
|
||||||
|
|
||||||
val callbackQueryAnswerLength = 0 until 200
|
val callbackQueryAnswerLength = 0 until 200
|
||||||
val captionLength = 0 until 1024
|
val captionLength = 0 until 1024
|
||||||
@@ -40,6 +41,8 @@ val livePeriodLimit = 60 .. 86400
|
|||||||
|
|
||||||
val inlineQueryAnswerResultsLimit = 0 .. 50
|
val inlineQueryAnswerResultsLimit = 0 .. 50
|
||||||
|
|
||||||
|
val customTitleLength = 0 .. 16
|
||||||
|
|
||||||
const val chatIdField = "chat_id"
|
const val chatIdField = "chat_id"
|
||||||
const val messageIdField = "message_id"
|
const val messageIdField = "message_id"
|
||||||
const val updateIdField = "update_id"
|
const val updateIdField = "update_id"
|
||||||
@@ -57,6 +60,7 @@ const val languageCodeField = "language_code"
|
|||||||
const val textEntitiesField = "text_entities"
|
const val textEntitiesField = "text_entities"
|
||||||
const val stickerSetNameField = "set_name"
|
const val stickerSetNameField = "set_name"
|
||||||
const val stickerSetNameFullField = "sticker_set_name"
|
const val stickerSetNameFullField = "sticker_set_name"
|
||||||
|
const val slowModeDelayField = "slow_mode_delay"
|
||||||
const val maskPositionField = "mask_position"
|
const val maskPositionField = "mask_position"
|
||||||
const val phoneNumberField = "phone_number"
|
const val phoneNumberField = "phone_number"
|
||||||
const val userIdField = "user_id"
|
const val userIdField = "user_id"
|
||||||
@@ -94,6 +98,7 @@ const val switchInlineQueryField = "switch_inline_query"
|
|||||||
const val isAnimatedField = "is_animated"
|
const val isAnimatedField = "is_animated"
|
||||||
const val inviteLinkField = "invite_link"
|
const val inviteLinkField = "invite_link"
|
||||||
const val pinnedMessageField = "pinned_message"
|
const val pinnedMessageField = "pinned_message"
|
||||||
|
const val customTitleField = "custom_title"
|
||||||
|
|
||||||
|
|
||||||
const val requestWriteAccessField = "request_write_access"
|
const val requestWriteAccessField = "request_write_access"
|
||||||
@@ -217,6 +222,14 @@ const val yShiftField = "y_shift"
|
|||||||
const val scaleField = "scale"
|
const val scaleField = "scale"
|
||||||
|
|
||||||
|
|
||||||
|
const val smallFileIdField = "small_file_id"
|
||||||
|
const val bigFileIdField = "big_file_id"
|
||||||
|
const val smallFileUniqueIdField = "small_file_unique_id"
|
||||||
|
const val bigFileUniqueIdField = "big_file_unique_id"
|
||||||
|
|
||||||
|
const val fileUniqueIdField = "file_unique_id"
|
||||||
|
|
||||||
|
|
||||||
const val currencyField = "currency"
|
const val currencyField = "currency"
|
||||||
const val startParameterField = "start_parameter"
|
const val startParameterField = "start_parameter"
|
||||||
const val totalAmountField = "total_amount"
|
const val totalAmountField = "total_amount"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import kotlinx.serialization.*
|
|||||||
import kotlinx.serialization.internal.StringDescriptor
|
import kotlinx.serialization.internal.StringDescriptor
|
||||||
|
|
||||||
@Serializer(InlineQueryResult::class)
|
@Serializer(InlineQueryResult::class)
|
||||||
object InlineQueryResultSerializer : KSerializer<InlineQueryResult> {
|
internal object InlineQueryResultSerializer : KSerializer<InlineQueryResult> {
|
||||||
override val descriptor: SerialDescriptor = StringDescriptor.withName(InlineQueryResult::class.toString())
|
override val descriptor: SerialDescriptor = StringDescriptor.withName(InlineQueryResult::class.toString())
|
||||||
override fun serialize(encoder: Encoder, obj: InlineQueryResult) {
|
override fun serialize(encoder: Encoder, obj: InlineQueryResult) {
|
||||||
when(obj) {
|
when(obj) {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import kotlinx.serialization.*
|
|||||||
import kotlinx.serialization.internal.StringDescriptor
|
import kotlinx.serialization.internal.StringDescriptor
|
||||||
|
|
||||||
@Serializer(InputMessageContent::class)
|
@Serializer(InputMessageContent::class)
|
||||||
object InputMessageContentSerializer : KSerializer<InputMessageContent> {
|
internal object InputMessageContentSerializer : KSerializer<InputMessageContent> {
|
||||||
override val descriptor: SerialDescriptor = StringDescriptor.withName(InputMessageContent::class.toString())
|
override val descriptor: SerialDescriptor = StringDescriptor.withName(InputMessageContent::class.toString())
|
||||||
override fun serialize(encoder: Encoder, obj: InputMessageContent) {
|
override fun serialize(encoder: Encoder, obj: InputMessageContent) {
|
||||||
when (obj) {
|
when (obj) {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import kotlinx.serialization.*
|
|||||||
import kotlinx.serialization.internal.StringDescriptor
|
import kotlinx.serialization.internal.StringDescriptor
|
||||||
|
|
||||||
@Serializer(InputMedia::class)
|
@Serializer(InputMedia::class)
|
||||||
object InputMediaSerializer : KSerializer<InputMedia> {
|
internal object InputMediaSerializer : KSerializer<InputMedia> {
|
||||||
override val descriptor: SerialDescriptor = StringDescriptor.withName(InputMedia::class.toString())
|
override val descriptor: SerialDescriptor = StringDescriptor.withName(InputMedia::class.toString())
|
||||||
override fun serialize(encoder: Encoder, obj: InputMedia) {
|
override fun serialize(encoder: Encoder, obj: InputMedia) {
|
||||||
when (obj) {
|
when (obj) {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import kotlinx.serialization.*
|
|||||||
import kotlinx.serialization.internal.StringDescriptor
|
import kotlinx.serialization.internal.StringDescriptor
|
||||||
|
|
||||||
@Serializer(MediaGroupMemberInputMedia::class)
|
@Serializer(MediaGroupMemberInputMedia::class)
|
||||||
object MediaGroupMemberInputMediaSerializer : KSerializer<MediaGroupMemberInputMedia> {
|
internal object MediaGroupMemberInputMediaSerializer : KSerializer<MediaGroupMemberInputMedia> {
|
||||||
override val descriptor: SerialDescriptor = StringDescriptor.withName(MediaGroupMemberInputMedia::class.toString())
|
override val descriptor: SerialDescriptor = StringDescriptor.withName(MediaGroupMemberInputMedia::class.toString())
|
||||||
override fun serialize(encoder: Encoder, obj: MediaGroupMemberInputMedia) {
|
override fun serialize(encoder: Encoder, obj: MediaGroupMemberInputMedia) {
|
||||||
when (obj) {
|
when (obj) {
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources.BoldTextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.boldHTML
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.boldMarkdown
|
|
||||||
|
|
||||||
data class BoldTextMessageEntity(
|
|
||||||
override val offset: Int,
|
|
||||||
override val length: Int,
|
|
||||||
override val sourceString: String
|
|
||||||
) : MessageEntity, TextSource by BoldTextSource(sourceString)
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources.BotCommandTextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.commandHTML
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.commandMarkdown
|
|
||||||
|
|
||||||
data class BotCommandMessageEntity(
|
|
||||||
override val offset: Int,
|
|
||||||
override val length: Int,
|
|
||||||
override val sourceString: String,
|
|
||||||
private val botCommandTextSource: BotCommandTextSource = BotCommandTextSource(sourceString)
|
|
||||||
) : MessageEntity, TextSource by botCommandTextSource {
|
|
||||||
val command: String
|
|
||||||
get() = botCommandTextSource.command
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources.CodeTextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.codeHTML
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.codeMarkdown
|
|
||||||
|
|
||||||
data class CodeTextMessageEntity(
|
|
||||||
override val offset: Int,
|
|
||||||
override val length: Int,
|
|
||||||
override val sourceString: String
|
|
||||||
) : MessageEntity, TextSource by CodeTextSource(sourceString)
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources.EMailTextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.emailHTML
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.emailMarkdown
|
|
||||||
|
|
||||||
data class EMailMessageEntity(
|
|
||||||
override val offset: Int,
|
|
||||||
override val length: Int,
|
|
||||||
override val sourceString: String
|
|
||||||
) : MessageEntity, TextSource by EMailTextSource(sourceString)
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources.HashTagTextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.hashTagHTML
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.hashTagMarkdown
|
|
||||||
|
|
||||||
data class HashTagMessageEntity(
|
|
||||||
override val offset: Int,
|
|
||||||
override val length: Int,
|
|
||||||
override val sourceString: String
|
|
||||||
) : MessageEntity, TextSource by HashTagTextSource(sourceString)
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources.ItalicTextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.italicHTML
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.italicMarkdown
|
|
||||||
|
|
||||||
data class ItalicTextMessageEntity(
|
|
||||||
override val offset: Int,
|
|
||||||
override val length: Int,
|
|
||||||
override val sourceString: String
|
|
||||||
) : MessageEntity, TextSource by ItalicTextSource(sourceString)
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources.MentionTextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.mentionHTML
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.mentionMarkdown
|
|
||||||
|
|
||||||
class MentionMessageEntity(
|
|
||||||
override val offset: Int,
|
|
||||||
override val length: Int,
|
|
||||||
override val sourceString: String
|
|
||||||
) : MessageEntity, TextSource by MentionTextSource(sourceString)
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
|
||||||
|
|
||||||
interface MessageEntity : TextSource {
|
|
||||||
val offset: Int
|
|
||||||
val length: Int
|
|
||||||
val sourceString: String
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources.PhoneNumberTextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.phoneHTML
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.phoneMarkdown
|
|
||||||
|
|
||||||
data class PhoneNumberMessageEntity(
|
|
||||||
override val offset: Int,
|
|
||||||
override val length: Int,
|
|
||||||
override val sourceString: String
|
|
||||||
) : MessageEntity, TextSource by PhoneNumberTextSource(sourceString)
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources.PreTextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.preHTML
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.preMarkdown
|
|
||||||
|
|
||||||
data class PreTextMessageEntity(
|
|
||||||
override val offset: Int,
|
|
||||||
override val length: Int,
|
|
||||||
override val sourceString: String
|
|
||||||
) : MessageEntity, TextSource by PreTextSource(sourceString)
|
|
||||||
@@ -1,9 +1,11 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity
|
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity
|
||||||
|
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.MultilevelTextSource
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextPart
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.User
|
import com.github.insanusmokrassar.TelegramBotAPI.types.User
|
||||||
import kotlinx.serialization.KSerializer
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.shiftSourcesToTheLeft
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import kotlinx.serialization.internal.ArrayListSerializer
|
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
internal data class RawMessageEntity(
|
internal data class RawMessageEntity(
|
||||||
@@ -12,30 +14,74 @@ internal data class RawMessageEntity(
|
|||||||
val length: Int,
|
val length: Int,
|
||||||
val url: String? = null,
|
val url: String? = null,
|
||||||
val user: User? = null
|
val user: User? = null
|
||||||
) {
|
)
|
||||||
fun asMessageEntity(source: String): MessageEntity {
|
|
||||||
val sourceSubstring = source.substring(offset, offset + length)
|
internal fun RawMessageEntity.asTextParts(source: String, subParts: List<TextPart>): List<TextPart> {
|
||||||
return when (type) {
|
val sourceSubstring = source.substring(offset, offset + length)
|
||||||
"mention" -> MentionMessageEntity(offset, length, sourceSubstring)
|
val range = offset until (offset + length)
|
||||||
"hashtag" -> HashTagMessageEntity(offset, length, sourceSubstring)
|
val shiftedSubParts = subParts.shiftSourcesToTheLeft(offset)
|
||||||
"cashtag" -> TODO()
|
return when (type) {
|
||||||
"bot_command" -> BotCommandMessageEntity(offset, length, sourceSubstring)
|
"mention" -> MentionTextSource(sourceSubstring, shiftedSubParts)
|
||||||
"url" -> URLMessageEntity(offset, length, sourceSubstring)
|
"hashtag" -> HashTagTextSource(sourceSubstring, shiftedSubParts)
|
||||||
"email" -> EMailMessageEntity(offset, length, sourceSubstring)
|
"cashtag" -> TODO()
|
||||||
"phone_number" -> PhoneNumberMessageEntity(offset, length, sourceSubstring)
|
"bot_command" -> BotCommandTextSource(sourceSubstring, shiftedSubParts)
|
||||||
"bold" -> BoldTextMessageEntity(offset, length, sourceSubstring)
|
"url" -> URLTextSource(sourceSubstring)
|
||||||
"italic" -> ItalicTextMessageEntity(offset, length, sourceSubstring)
|
"email" -> EMailTextSource(sourceSubstring, shiftedSubParts)
|
||||||
"code" -> CodeTextMessageEntity(offset, length, sourceSubstring)
|
"phone_number" -> PhoneNumberTextSource(sourceSubstring, shiftedSubParts)
|
||||||
"pre" -> PreTextMessageEntity(offset, length, sourceSubstring)
|
"bold" -> BoldTextSource(sourceSubstring, shiftedSubParts)
|
||||||
"text_link" -> TextLinkMessageEntity(offset, length, sourceSubstring, url ?: throw IllegalStateException("URL must not be null for text link"))
|
"italic" -> ItalicTextSource(sourceSubstring, shiftedSubParts)
|
||||||
"text_mention" -> TextMentionMessageEntity(offset, length, sourceSubstring, user ?: throw IllegalStateException("User must not be null for text mention"))
|
"code" -> CodeTextSource(sourceSubstring)
|
||||||
else -> throw IllegalArgumentException("Unknown type of message entity")
|
"pre" -> PreTextSource(sourceSubstring)
|
||||||
|
"text_link" -> TextLinkTextSource(sourceSubstring, url ?: throw IllegalStateException("URL must not be null for text link"))
|
||||||
|
"text_mention" -> TextMentionTextSource(sourceSubstring, user ?: throw IllegalStateException("User must not be null for text mention"), shiftedSubParts)
|
||||||
|
"underline" -> UnderlineTextSource(sourceSubstring, shiftedSubParts)
|
||||||
|
"strikethrough" -> StrikethroughTextSource(sourceSubstring, shiftedSubParts)
|
||||||
|
else -> RegularTextSource(sourceSubstring)
|
||||||
|
}.let {
|
||||||
|
val part = TextPart(range, it)
|
||||||
|
if (it !is MultilevelTextSource && subParts.isNotEmpty()) {
|
||||||
|
(subParts + part).sortedBy { currentPart -> currentPart.range.first }
|
||||||
|
} else {
|
||||||
|
listOf(part)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal typealias RawMessageEntities = List<RawMessageEntity>
|
internal fun createTextPart(from: String, entities: RawMessageEntities): List<TextPart> {
|
||||||
|
val mutableEntities = entities.toMutableList()
|
||||||
|
mutableEntities.sortBy { it.offset }
|
||||||
|
val resultList = mutableListOf<TextPart>()
|
||||||
|
|
||||||
internal object RawMessageEntitiesSerializer : KSerializer<List<RawMessageEntity>> by ArrayListSerializer(
|
while (mutableEntities.isNotEmpty()) {
|
||||||
RawMessageEntity.serializer()
|
val currentFirst = mutableEntities.removeAt(0)
|
||||||
)
|
val subEntities = if (mutableEntities.isNotEmpty()) {
|
||||||
|
val lastIndex = currentFirst.offset + currentFirst.length
|
||||||
|
val subEntities = mutableListOf<RawMessageEntity>()
|
||||||
|
while (mutableEntities.isNotEmpty()) {
|
||||||
|
val currentPossibleSubEntity = mutableEntities.first()
|
||||||
|
if (currentPossibleSubEntity.offset < lastIndex) {
|
||||||
|
subEntities.add(currentPossibleSubEntity)
|
||||||
|
mutableEntities.removeAt(0)
|
||||||
|
} else {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
subEntities
|
||||||
|
} else {
|
||||||
|
emptyList<RawMessageEntity>()
|
||||||
|
}
|
||||||
|
|
||||||
|
resultList.addAll(
|
||||||
|
currentFirst.asTextParts(
|
||||||
|
from,
|
||||||
|
createTextPart(from, subEntities)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultList
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun RawMessageEntities.asTextParts(sourceString: String): List<TextPart> = createTextPart(sourceString, this)
|
||||||
|
|
||||||
|
internal typealias RawMessageEntities = List<RawMessageEntity>
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources.RegularTextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.toHtml
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.toMarkdown
|
|
||||||
|
|
||||||
data class RegularTextMessageEntity(
|
|
||||||
override val offset: Int,
|
|
||||||
override val length: Int,
|
|
||||||
override val sourceString: String
|
|
||||||
) : MessageEntity, TextSource by RegularTextSource(sourceString)
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources.TextLinkTextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.linkHTML
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.linkMarkdown
|
|
||||||
|
|
||||||
data class TextLinkMessageEntity(
|
|
||||||
override val offset: Int,
|
|
||||||
override val length: Int,
|
|
||||||
override val sourceString: String,
|
|
||||||
val url: String
|
|
||||||
) : MessageEntity, TextSource by TextLinkTextSource(sourceString, url)
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources.TextMentionTextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.User
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.PrivateChat
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.mentionHTML
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.mentionMarkdown
|
|
||||||
|
|
||||||
class TextMentionMessageEntity(
|
|
||||||
override val offset: Int,
|
|
||||||
override val length: Int,
|
|
||||||
override val sourceString: String,
|
|
||||||
val privateChat: PrivateChat
|
|
||||||
) : MessageEntity, TextSource by TextMentionTextSource(sourceString, privateChat) {
|
|
||||||
@Deprecated("Deprecated due to the fact that there is more common constructor")
|
|
||||||
constructor(
|
|
||||||
offset: Int,
|
|
||||||
length: Int,
|
|
||||||
sourceString: String,
|
|
||||||
user: User
|
|
||||||
) : this(offset, length, sourceString, user as PrivateChat)
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources.URLTextSource
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.linkHTML
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.linkMarkdown
|
|
||||||
|
|
||||||
data class URLMessageEntity(
|
|
||||||
override val offset: Int,
|
|
||||||
override val length: Int,
|
|
||||||
override val sourceString: String
|
|
||||||
) : MessageEntity, TextSource by URLTextSource(sourceString) {
|
|
||||||
val url: String = sourceString
|
|
||||||
}
|
|
||||||
@@ -1,12 +1,15 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.MultilevelTextSource
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.boldHTML
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextPart
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.boldMarkdown
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.*
|
||||||
|
|
||||||
class BoldTextSource(
|
class BoldTextSource(
|
||||||
sourceString: String
|
source: String,
|
||||||
) : TextSource {
|
textParts: List<TextPart>
|
||||||
override val asMarkdownSource: String = sourceString.boldMarkdown()
|
) : MultilevelTextSource {
|
||||||
override val asHtmlSource: String = sourceString.boldHTML()
|
override val textParts: List<TextPart> by lazy { source.fullListOfSubSource(textParts) }
|
||||||
|
override val asMarkdownSource: String by lazy { source.boldMarkdown() }
|
||||||
|
override val asMarkdownV2Source: String by lazy { boldMarkdownV2() }
|
||||||
|
override val asHtmlSource: String by lazy { boldHTML() }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,25 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.MultilevelTextSource
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.commandHTML
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextPart
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.commandMarkdown
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.*
|
||||||
|
|
||||||
private val commandRegex = Regex("[/!][^@\\s]*")
|
private val commandRegex = Regex("[/!][^@\\s]*")
|
||||||
|
|
||||||
class BotCommandTextSource(
|
class BotCommandTextSource(
|
||||||
sourceString: String
|
source: String,
|
||||||
) : TextSource {
|
textParts: List<TextPart>
|
||||||
override val asMarkdownSource: String = sourceString.commandMarkdown()
|
) : MultilevelTextSource {
|
||||||
override val asHtmlSource: String = sourceString.commandHTML()
|
|
||||||
|
|
||||||
val command: String by lazy {
|
val command: String by lazy {
|
||||||
commandRegex.find(sourceString) ?.value ?.substring(1) ?: sourceString.substring(1)// skip first symbol like "/" or "!"
|
commandRegex.find(source) ?.value ?.substring(1) ?: source.substring(1)// skip first symbol like "/" or "!"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val textParts: List<TextPart> by lazy {
|
||||||
|
command.fullListOfSubSource(
|
||||||
|
textParts.shiftSourcesToTheLeft(1)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
override val asMarkdownSource: String by lazy { source.commandMarkdown() }
|
||||||
|
override val asMarkdownV2Source: String by lazy { commandMarkdownV2() }
|
||||||
|
override val asHtmlSource: String by lazy { commandHTML() }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.codeHTML
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.codeMarkdown
|
|
||||||
|
|
||||||
class CodeTextSource(
|
class CodeTextSource(
|
||||||
sourceString: String
|
source: String
|
||||||
) : TextSource {
|
) : TextSource {
|
||||||
override val asMarkdownSource: String = sourceString.codeMarkdown()
|
override val asMarkdownSource: String by lazy { source.codeMarkdown() }
|
||||||
override val asHtmlSource: String = sourceString.codeHTML()
|
override val asMarkdownV2Source: String by lazy { source.codeMarkdownV2() }
|
||||||
|
override val asHtmlSource: String by lazy { source.codeHTML() }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,15 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.MultilevelTextSource
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.emailHTML
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextPart
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.emailMarkdown
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.*
|
||||||
|
|
||||||
class EMailTextSource(
|
class EMailTextSource(
|
||||||
sourceString: String
|
source: String,
|
||||||
) : TextSource {
|
textParts: List<TextPart>
|
||||||
override val asMarkdownSource: String = sourceString.emailMarkdown()
|
) : MultilevelTextSource {
|
||||||
override val asHtmlSource: String = sourceString.emailHTML()
|
override val textParts: List<TextPart> by lazy { source.fullListOfSubSource(textParts) }
|
||||||
|
override val asMarkdownSource: String by lazy { source.emailMarkdown() }
|
||||||
|
override val asMarkdownV2Source: String by lazy { emailMarkdownV2(source) }
|
||||||
|
override val asHtmlSource: String by lazy { emailHTML(source) }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,26 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.MultilevelTextSource
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.hashTagHTML
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextPart
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.hashTagMarkdown
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.*
|
||||||
|
|
||||||
|
private val String.withoutSharp
|
||||||
|
get() = if (startsWith("#")){
|
||||||
|
substring(1)
|
||||||
|
} else {
|
||||||
|
this
|
||||||
|
}
|
||||||
|
|
||||||
class HashTagTextSource(
|
class HashTagTextSource(
|
||||||
sourceString: String
|
source: String,
|
||||||
) : TextSource {
|
textParts: List<TextPart>
|
||||||
override val asMarkdownSource: String = sourceString.hashTagMarkdown()
|
) : MultilevelTextSource {
|
||||||
override val asHtmlSource: String = sourceString.hashTagHTML()
|
override val textParts: List<TextPart> by lazy {
|
||||||
|
source.withoutSharp.fullListOfSubSource(
|
||||||
|
textParts.shiftSourcesToTheLeft(1)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
override val asMarkdownSource: String by lazy { source.hashTagMarkdown() }
|
||||||
|
override val asMarkdownV2Source: String by lazy { hashTagMarkdownV2() }
|
||||||
|
override val asHtmlSource: String by lazy { hashTagHTML() }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,15 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.MultilevelTextSource
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.italicHTML
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextPart
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.italicMarkdown
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.*
|
||||||
|
|
||||||
class ItalicTextSource(
|
class ItalicTextSource(
|
||||||
sourceString: String
|
source: String,
|
||||||
) : TextSource {
|
textParts: List<TextPart>
|
||||||
override val asMarkdownSource: String = sourceString.italicMarkdown()
|
) : MultilevelTextSource {
|
||||||
override val asHtmlSource: String = sourceString.italicHTML()
|
override val textParts: List<TextPart> by lazy { source.fullListOfSubSource(textParts) }
|
||||||
|
override val asMarkdownSource: String by lazy { source.italicMarkdown() }
|
||||||
|
override val asMarkdownV2Source: String by lazy { italicMarkdownV2() }
|
||||||
|
override val asHtmlSource: String by lazy { italicHTML() }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,26 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.MultilevelTextSource
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.mentionHTML
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextPart
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.mentionMarkdown
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.*
|
||||||
|
|
||||||
|
private val String.withoutCommercialAt
|
||||||
|
get() = if (startsWith("@")) {
|
||||||
|
substring(1)
|
||||||
|
} else {
|
||||||
|
this
|
||||||
|
}
|
||||||
|
|
||||||
class MentionTextSource(
|
class MentionTextSource(
|
||||||
sourceString: String
|
source: String,
|
||||||
) : TextSource {
|
textParts: List<TextPart>
|
||||||
override val asMarkdownSource: String = sourceString.mentionMarkdown()
|
) : MultilevelTextSource {
|
||||||
override val asHtmlSource: String = sourceString.mentionHTML()
|
override val textParts: List<TextPart> by lazy {
|
||||||
|
source.withoutCommercialAt.fullListOfSubSource(
|
||||||
|
textParts.shiftSourcesToTheLeft(1)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
override val asMarkdownSource: String by lazy { source.mentionMarkdown() }
|
||||||
|
override val asMarkdownV2Source: String by lazy { mentionMarkdownV2() }
|
||||||
|
override val asHtmlSource: String by lazy { mentionHTML() }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,15 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.MultilevelTextSource
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.phoneHTML
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextPart
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.phoneMarkdown
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.*
|
||||||
|
|
||||||
class PhoneNumberTextSource(
|
class PhoneNumberTextSource(
|
||||||
sourceString: String
|
source: String,
|
||||||
) : TextSource {
|
textParts: List<TextPart>
|
||||||
override val asMarkdownSource: String = sourceString.phoneMarkdown()
|
) : MultilevelTextSource {
|
||||||
override val asHtmlSource: String = sourceString.phoneHTML()
|
override val textParts: List<TextPart> by lazy { source.fullListOfSubSource(textParts) }
|
||||||
|
override val asMarkdownSource: String by lazy { source.phoneMarkdown() }
|
||||||
|
override val asMarkdownV2Source: String by lazy { phoneMarkdownV2() }
|
||||||
|
override val asHtmlSource: String by lazy { phoneHTML() }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.preHTML
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.preMarkdown
|
|
||||||
|
|
||||||
class PreTextSource(
|
class PreTextSource(
|
||||||
sourceString: String
|
source: String,
|
||||||
|
val language: String? = null
|
||||||
) : TextSource {
|
) : TextSource {
|
||||||
override val asMarkdownSource: String = sourceString.preMarkdown()
|
override val asMarkdownSource: String by lazy { source.preMarkdown(language) }
|
||||||
override val asHtmlSource: String = sourceString.preHTML()
|
override val asMarkdownV2Source: String by lazy { source.preMarkdownV2(language) }
|
||||||
|
override val asHtmlSource: String by lazy { source.preHTML(language) }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.toHtml
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.toMarkdown
|
|
||||||
|
|
||||||
class RegularTextSource(
|
class RegularTextSource(
|
||||||
sourceString: String
|
source: String
|
||||||
) : TextSource {
|
) : TextSource {
|
||||||
override val asMarkdownSource: String = sourceString.toMarkdown()
|
override val asMarkdownSource: String by lazy { source.regularMarkdown() }
|
||||||
override val asHtmlSource: String = sourceString.toHtml()
|
override val asMarkdownV2Source: String by lazy { source.regularMarkdownV2() }
|
||||||
|
override val asHtmlSource: String by lazy { source.regularHtml() }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
||||||
|
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.MultilevelTextSource
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextPart
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.*
|
||||||
|
|
||||||
|
class StrikethroughTextSource(
|
||||||
|
source: String,
|
||||||
|
textParts: List<TextPart>
|
||||||
|
) : MultilevelTextSource {
|
||||||
|
override val textParts: List<TextPart> by lazy { source.fullListOfSubSource(textParts) }
|
||||||
|
override val asHtmlSource: String by lazy { strikethroughHTML() }
|
||||||
|
override val asMarkdownV2Source: String by lazy { strikethroughMarkdownV2() }
|
||||||
|
override val asMarkdownSource: String by lazy { source.strikethroughMarkdown() }
|
||||||
|
}
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.linkHTML
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.linkMarkdown
|
|
||||||
|
|
||||||
class TextLinkTextSource(
|
class TextLinkTextSource(
|
||||||
sourceString: String,
|
source: String,
|
||||||
url: String
|
url: String
|
||||||
) : TextSource {
|
) : TextSource {
|
||||||
override val asMarkdownSource: String = sourceString.linkMarkdown(url)
|
override val asMarkdownSource: String by lazy { source.linkMarkdown(url) }
|
||||||
override val asHtmlSource: String = sourceString.linkHTML(url)
|
override val asMarkdownV2Source: String by lazy { source.linkMarkdownV2(url) }
|
||||||
|
override val asHtmlSource: String by lazy { source.linkHTML(url) }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,17 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.MultilevelTextSource
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.User
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextPart
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.PrivateChat
|
import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.PrivateChat
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.mentionHTML
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.mentionMarkdown
|
|
||||||
|
|
||||||
class TextMentionTextSource(
|
class TextMentionTextSource(
|
||||||
sourceString: String,
|
source: String,
|
||||||
privateChat: PrivateChat
|
privateChat: PrivateChat,
|
||||||
) : TextSource {
|
textParts: List<TextPart>
|
||||||
@Deprecated("Deprecated due to the fact that there is more common constructor")
|
) : MultilevelTextSource {
|
||||||
constructor(
|
override val textParts: List<TextPart> by lazy { source.fullListOfSubSource(textParts) }
|
||||||
sourceString: String,
|
override val asMarkdownSource: String by lazy { source.textMentionMarkdown(privateChat.id) }
|
||||||
user: User
|
override val asMarkdownV2Source: String by lazy { textMentionMarkdownV2(privateChat.id) }
|
||||||
) : this(sourceString, user as PrivateChat)
|
override val asHtmlSource: String by lazy { textMentionHTML(privateChat.id) }
|
||||||
|
|
||||||
override val asMarkdownSource: String = sourceString.mentionMarkdown(privateChat.id)
|
|
||||||
override val asHtmlSource: String = sourceString.mentionHTML(privateChat.id)
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextSource
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.linkHTML
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.linkMarkdown
|
|
||||||
|
|
||||||
class URLTextSource(
|
class URLTextSource(
|
||||||
sourceString: String
|
source: String
|
||||||
) : TextSource{
|
) : TextSource {
|
||||||
override val asMarkdownSource: String = sourceString.linkMarkdown(sourceString)
|
override val asMarkdownSource: String by lazy { source.linkMarkdown(source) }
|
||||||
override val asHtmlSource: String = sourceString.linkHTML(sourceString)
|
override val asMarkdownV2Source: String by lazy { source.linkMarkdownV2(source) }
|
||||||
|
override val asHtmlSource: String by lazy { source.linkHTML(source) }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources
|
||||||
|
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.MultilevelTextSource
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextPart
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.*
|
||||||
|
|
||||||
|
class UnderlineTextSource(
|
||||||
|
source: String,
|
||||||
|
textParts: List<TextPart>
|
||||||
|
) : MultilevelTextSource {
|
||||||
|
override val textParts: List<TextPart> by lazy { source.fullListOfSubSource(textParts) }
|
||||||
|
override val asMarkdownSource: String by lazy { source.underlineMarkdown() }
|
||||||
|
override val asMarkdownV2Source: String by lazy { underlineMarkdownV2() }
|
||||||
|
override val asHtmlSource: String by lazy { underlineHTML() }
|
||||||
|
}
|
||||||
@@ -16,6 +16,12 @@ object MarkdownParseMode : ParseMode() {
|
|||||||
override val parseModeName: String = "Markdown"
|
override val parseModeName: String = "Markdown"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Serializable(ParseModeSerializerObject::class)
|
||||||
|
object MarkdownV2ParseMode : ParseMode() {
|
||||||
|
@Serializable
|
||||||
|
@SerialName(parseModeField)
|
||||||
|
override val parseModeName: String = "MarkdownV2"
|
||||||
|
}
|
||||||
@Serializable(ParseModeSerializerObject::class)
|
@Serializable(ParseModeSerializerObject::class)
|
||||||
object HTMLParseMode : ParseMode() {
|
object HTMLParseMode : ParseMode() {
|
||||||
@Serializable
|
@Serializable
|
||||||
@@ -24,6 +30,7 @@ object HTMLParseMode : ParseMode() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
typealias Markdown = MarkdownParseMode
|
typealias Markdown = MarkdownParseMode
|
||||||
|
typealias MarkdownV2 = MarkdownV2ParseMode
|
||||||
typealias HTML = HTMLParseMode
|
typealias HTML = HTMLParseMode
|
||||||
|
|
||||||
@Serializer(ParseMode::class)
|
@Serializer(ParseMode::class)
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ data class UserProfilePhotos (
|
|||||||
val photos: List<Photo>
|
val photos: List<Photo>
|
||||||
)
|
)
|
||||||
|
|
||||||
object UserProfilePhotosPhotosSerializer : KSerializer<List<Photo>> by ArrayListSerializer(
|
internal object UserProfilePhotosPhotosSerializer : KSerializer<List<Photo>> by ArrayListSerializer(
|
||||||
PhotoSerializer
|
PhotoSerializer
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import kotlinx.serialization.*
|
|||||||
import kotlinx.serialization.internal.StringDescriptor
|
import kotlinx.serialization.internal.StringDescriptor
|
||||||
import kotlinx.serialization.json.*
|
import kotlinx.serialization.json.*
|
||||||
|
|
||||||
object InlineKeyboardButtonSerializer : KSerializer<InlineKeyboardButton> {
|
internal object InlineKeyboardButtonSerializer : KSerializer<InlineKeyboardButton> {
|
||||||
override val descriptor: SerialDescriptor = StringDescriptor.withName("com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardButtons.InlineKeyboardButton")
|
override val descriptor: SerialDescriptor = StringDescriptor.withName("com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardButtons.InlineKeyboardButton")
|
||||||
|
|
||||||
private fun resolveSerializer(json: JsonObject): KSerializer<out InlineKeyboardButton> {
|
private fun resolveSerializer(json: JsonObject): KSerializer<out InlineKeyboardButton> {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import kotlinx.serialization.*
|
|||||||
import kotlinx.serialization.internal.StringDescriptor
|
import kotlinx.serialization.internal.StringDescriptor
|
||||||
|
|
||||||
@Serializer(KeyboardMarkup::class)
|
@Serializer(KeyboardMarkup::class)
|
||||||
object KeyboardMarkupSerializer : KSerializer<KeyboardMarkup> {
|
internal object KeyboardMarkupSerializer : KSerializer<KeyboardMarkup> {
|
||||||
override val descriptor: SerialDescriptor = StringDescriptor.withName(KeyboardMarkup::class.toString())
|
override val descriptor: SerialDescriptor = StringDescriptor.withName(KeyboardMarkup::class.toString())
|
||||||
override fun serialize(encoder: Encoder, obj: KeyboardMarkup) {
|
override fun serialize(encoder: Encoder, obj: KeyboardMarkup) {
|
||||||
when(obj) {
|
when(obj) {
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import kotlinx.serialization.json.JsonObjectSerializer
|
|||||||
|
|
||||||
private val formatter = Json.nonstrict
|
private val formatter = Json.nonstrict
|
||||||
|
|
||||||
object PreviewChatSerializer : KSerializer<Chat> {
|
internal object PreviewChatSerializer : KSerializer<Chat> {
|
||||||
override val descriptor: SerialDescriptor = StringDescriptor.withName("PreviewChatSerializer")
|
override val descriptor: SerialDescriptor = StringDescriptor.withName("PreviewChatSerializer")
|
||||||
|
|
||||||
override fun deserialize(decoder: Decoder): Chat {
|
override fun deserialize(decoder: Decoder): Chat {
|
||||||
@@ -39,7 +39,7 @@ object PreviewChatSerializer : KSerializer<Chat> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object ExtendedChatSerializer : KSerializer<ExtendedChat> {
|
internal object ExtendedChatSerializer : KSerializer<ExtendedChat> {
|
||||||
override val descriptor: SerialDescriptor = StringDescriptor.withName("PreviewChatSerializer")
|
override val descriptor: SerialDescriptor = StringDescriptor.withName("PreviewChatSerializer")
|
||||||
|
|
||||||
override fun deserialize(decoder: Decoder): ExtendedChat {
|
override fun deserialize(decoder: Decoder): ExtendedChat {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.StickerSetName
|
|||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.SupergroupChat
|
import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.SupergroupChat
|
||||||
|
|
||||||
interface ExtendedSupergroupChat : SupergroupChat, ExtendedGroupChat {
|
interface ExtendedSupergroupChat : SupergroupChat, ExtendedGroupChat {
|
||||||
|
val slowModeDelay: Long?
|
||||||
val stickerSetName: StickerSetName?
|
val stickerSetName: StickerSetName?
|
||||||
val canSetStickerSet: Boolean
|
val canSetStickerSet: Boolean
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ data class ExtendedSupergroupChatImpl(
|
|||||||
override val pinnedMessage: Message? = null,
|
override val pinnedMessage: Message? = null,
|
||||||
@SerialName(stickerSetNameFullField)
|
@SerialName(stickerSetNameFullField)
|
||||||
override val stickerSetName: StickerSetName? = null,
|
override val stickerSetName: StickerSetName? = null,
|
||||||
|
@SerialName(slowModeDelayField)
|
||||||
|
override val slowModeDelay: Long? = null,
|
||||||
@SerialName(canSetStickerSetField)
|
@SerialName(canSetStickerSetField)
|
||||||
override val canSetStickerSet: Boolean = false
|
override val canSetStickerSet: Boolean = false
|
||||||
) : ExtendedSupergroupChat
|
) : ExtendedSupergroupChat
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.files
|
package com.github.insanusmokrassar.TelegramBotAPI.types.files
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.FileUniqueId
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.fileUniqueIdField
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.files.abstracts.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.files.abstracts.*
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
@@ -9,6 +11,8 @@ import kotlinx.serialization.Serializable
|
|||||||
data class AnimationFile(
|
data class AnimationFile(
|
||||||
@SerialName(fileIdField)
|
@SerialName(fileIdField)
|
||||||
override val fileId: FileId,
|
override val fileId: FileId,
|
||||||
|
@SerialName(fileUniqueIdField)
|
||||||
|
override val fileUniqueId: FileUniqueId,
|
||||||
override val width: Int,
|
override val width: Int,
|
||||||
override val height: Int,
|
override val height: Int,
|
||||||
override val duration: Long? = null,
|
override val duration: Long? = null,
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.files
|
|||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.Performerable
|
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.Performerable
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.FileUniqueId
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.fileUniqueIdField
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.files.abstracts.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.files.abstracts.*
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
@@ -10,6 +12,8 @@ import kotlinx.serialization.Serializable
|
|||||||
data class AudioFile(
|
data class AudioFile(
|
||||||
@SerialName(fileIdField)
|
@SerialName(fileIdField)
|
||||||
override val fileId: FileId,
|
override val fileId: FileId,
|
||||||
|
@SerialName(fileUniqueIdField)
|
||||||
|
override val fileUniqueId: FileUniqueId,
|
||||||
override val duration: Long? = null,
|
override val duration: Long? = null,
|
||||||
override val performer: String? = null,
|
override val performer: String? = null,
|
||||||
override val title: String? = null,
|
override val title: String? = null,
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.files
|
package com.github.insanusmokrassar.TelegramBotAPI.types.files
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.FileUniqueId
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.fileUniqueIdField
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.files.abstracts.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.files.abstracts.*
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
@@ -9,6 +11,8 @@ import kotlinx.serialization.Serializable
|
|||||||
data class DocumentFile(
|
data class DocumentFile(
|
||||||
@SerialName(fileIdField)
|
@SerialName(fileIdField)
|
||||||
override val fileId: FileId,
|
override val fileId: FileId,
|
||||||
|
@SerialName(fileUniqueIdField)
|
||||||
|
override val fileUniqueId: FileUniqueId,
|
||||||
@SerialName(fileSizeField)
|
@SerialName(fileSizeField)
|
||||||
override val fileSize: Long? = null,
|
override val fileSize: Long? = null,
|
||||||
override val thumb: PhotoSize? = null,
|
override val thumb: PhotoSize? = null,
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.files
|
package com.github.insanusmokrassar.TelegramBotAPI.types.files
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.FileUniqueId
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.fileUniqueIdField
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.files.abstracts.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.files.abstracts.*
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
@@ -9,6 +11,8 @@ import kotlinx.serialization.Serializable
|
|||||||
data class File(
|
data class File(
|
||||||
@SerialName(fileIdField)
|
@SerialName(fileIdField)
|
||||||
override val fileId: FileId,
|
override val fileId: FileId,
|
||||||
|
@SerialName(fileUniqueIdField)
|
||||||
|
override val fileUniqueId: FileUniqueId,
|
||||||
@SerialName(fileSizeField)
|
@SerialName(fileSizeField)
|
||||||
override val fileSize: Long? = null
|
override val fileSize: Long? = null
|
||||||
): TelegramMediaFile
|
): TelegramMediaFile
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.files
|
package com.github.insanusmokrassar.TelegramBotAPI.types.files
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.FileUniqueId
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.fileUniqueIdField
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.files.abstracts.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.files.abstracts.*
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.TelegramAPIUrlsKeeper
|
import com.github.insanusmokrassar.TelegramBotAPI.utils.TelegramAPIUrlsKeeper
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
@@ -10,6 +12,8 @@ import kotlinx.serialization.Serializable
|
|||||||
data class PathedFile(
|
data class PathedFile(
|
||||||
@SerialName(fileIdField)
|
@SerialName(fileIdField)
|
||||||
override val fileId: FileId,
|
override val fileId: FileId,
|
||||||
|
@SerialName(fileUniqueIdField)
|
||||||
|
override val fileUniqueId: FileUniqueId,
|
||||||
@SerialName(filePathField)
|
@SerialName(filePathField)
|
||||||
val filePath: String,
|
val filePath: String,
|
||||||
@SerialName(fileSizeField)
|
@SerialName(fileSizeField)
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.files
|
package com.github.insanusmokrassar.TelegramBotAPI.types.files
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.FileUniqueId
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.fileUniqueIdField
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.files.abstracts.*
|
import com.github.insanusmokrassar.TelegramBotAPI.types.files.abstracts.*
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
import kotlinx.serialization.internal.ArrayListSerializer
|
import kotlinx.serialization.internal.ArrayListSerializer
|
||||||
@@ -11,7 +13,7 @@ fun Photo.biggest(): PhotoSize? = maxBy {
|
|||||||
it.resolution
|
it.resolution
|
||||||
}
|
}
|
||||||
|
|
||||||
object PhotoSerializer : KSerializer<Photo> by ArrayListSerializer(
|
internal object PhotoSerializer : KSerializer<Photo> by ArrayListSerializer(
|
||||||
PhotoSize.serializer()
|
PhotoSize.serializer()
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -19,6 +21,8 @@ object PhotoSerializer : KSerializer<Photo> by ArrayListSerializer(
|
|||||||
data class PhotoSize(
|
data class PhotoSize(
|
||||||
@SerialName(fileIdField)
|
@SerialName(fileIdField)
|
||||||
override val fileId: FileId,
|
override val fileId: FileId,
|
||||||
|
@SerialName(fileUniqueIdField)
|
||||||
|
override val fileUniqueId: FileUniqueId,
|
||||||
@SerialName(fileSizeField)
|
@SerialName(fileSizeField)
|
||||||
override val fileSize: Long? = null,
|
override val fileSize: Long? = null,
|
||||||
override val width: Int,
|
override val width: Int,
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ import kotlinx.serialization.Serializable
|
|||||||
data class Sticker(
|
data class Sticker(
|
||||||
@SerialName(fileIdField)
|
@SerialName(fileIdField)
|
||||||
override val fileId: FileId,
|
override val fileId: FileId,
|
||||||
|
@SerialName(fileUniqueIdField)
|
||||||
|
override val fileUniqueId: FileUniqueId,
|
||||||
@SerialName(widthField)
|
@SerialName(widthField)
|
||||||
override val width: Int,
|
override val width: Int,
|
||||||
@SerialName(heightField)
|
@SerialName(heightField)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user