mirror of
				https://github.com/InsanusMokrassar/TelegramBotAPI.git
				synced 2025-10-25 17:20:07 +00:00 
			
		
		
		
	
							
								
								
									
										2
									
								
								.github/workflows/kdocs.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/kdocs.yml
									
									
									
									
										vendored
									
									
								
							| @@ -10,7 +10,7 @@ jobs: | |||||||
|       - uses: actions/checkout@v2 |       - uses: actions/checkout@v2 | ||||||
|       - uses: actions/setup-java@v1 |       - uses: actions/setup-java@v1 | ||||||
|         with: |         with: | ||||||
|           java-version: 1.8 |           java-version: 11 | ||||||
|       - name: Build |       - name: Build | ||||||
|         run: ./gradlew dokkaHtml |         run: ./gradlew dokkaHtml | ||||||
|       - name: Publish KDocs |       - name: Publish KDocs | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								.github/workflows/packages_publishing.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								.github/workflows/packages_publishing.yml
									
									
									
									
										vendored
									
									
								
							| @@ -7,10 +7,7 @@ jobs: | |||||||
|       - uses: actions/checkout@v2 |       - uses: actions/checkout@v2 | ||||||
|       - uses: actions/setup-java@v1 |       - uses: actions/setup-java@v1 | ||||||
|         with: |         with: | ||||||
|           java-version: 1.8 |           java-version: 11 | ||||||
|       - name: Fix android 31.0.0 dx |  | ||||||
|         continue-on-error: true |  | ||||||
|         run: cd /usr/local/lib/android/sdk/build-tools/31.0.0/ && mv d8 dx && cd lib  && mv d8.jar dx.jar |  | ||||||
|       - name: Rewrite version |       - name: Rewrite version | ||||||
|         run: | |         run: | | ||||||
|           branch="`echo "${{ github.ref }}" | grep -o "[^/]*$"`" |           branch="`echo "${{ github.ref }}" | grep -o "[^/]*$"`" | ||||||
| @@ -21,7 +18,7 @@ jobs: | |||||||
|         run: ./gradlew build |         run: ./gradlew build | ||||||
|       - name: Publish |       - name: Publish | ||||||
|         continue-on-error: true |         continue-on-error: true | ||||||
|         run: ./gradlew publishAllPublicationsToGithubPackagesRepository --no-parallel -x signJsPublication -x signJvmPublication -x signKotlinMultiplatformPublication |         run: ./gradlew publishAllPublicationsToGithubPackagesRepository --no-parallel | ||||||
|         env: |         env: | ||||||
|           GITHUBPACKAGES_USER: ${{ github.actor }} |           GITHUBPACKAGES_USER: ${{ github.actor }} | ||||||
|           GITHUBPACKAGES_PASSWORD: ${{ secrets.GITHUB_TOKEN }} |           GITHUBPACKAGES_PASSWORD: ${{ secrets.GITHUB_TOKEN }} | ||||||
|   | |||||||
| @@ -1,5 +1,12 @@ | |||||||
| # TelegramBotAPI changelog | # TelegramBotAPI changelog | ||||||
|  |  | ||||||
|  | ## 0.38.10 | ||||||
|  |  | ||||||
|  | * `API`: | ||||||
|  |     * All `with*Action` extensions got a contracts which declare that `block` will be called once | ||||||
|  |     * Add several extensions `TelegramBot#sendPhoto` with `PhotoSize` | ||||||
|  |     * Add several extensions `TelegramBot#reply` with `PhotoSize` | ||||||
|  |  | ||||||
| ## 0.38.9 | ## 0.38.9 | ||||||
|  |  | ||||||
| * `Core`: | * `Core`: | ||||||
|   | |||||||
| @@ -20,6 +20,6 @@ javax_activation_version=1.1.1 | |||||||
| dokka_version=1.6.10 | dokka_version=1.6.10 | ||||||
|  |  | ||||||
| library_group=dev.inmo | library_group=dev.inmo | ||||||
| library_version=0.38.9 | library_version=0.38.10 | ||||||
|  |  | ||||||
| github_release_plugin_version=2.2.12 | github_release_plugin_version=2.2.12 | ||||||
|   | |||||||
| @@ -571,6 +571,17 @@ suspend inline fun TelegramBot.reply( | |||||||
|     replyMarkup: KeyboardMarkup? = null |     replyMarkup: KeyboardMarkup? = null | ||||||
| ) = sendPhoto(to.chat, photo, text, parseMode, disableNotification, protectContent, to.messageId, allowSendingWithoutReply, replyMarkup) | ) = sendPhoto(to.chat, photo, text, parseMode, disableNotification, protectContent, to.messageId, allowSendingWithoutReply, replyMarkup) | ||||||
|  |  | ||||||
|  | suspend inline fun TelegramBot.reply( | ||||||
|  |     to: Message, | ||||||
|  |     photoSize: PhotoSize, | ||||||
|  |     text: String? = null, | ||||||
|  |     parseMode: ParseMode? = null, | ||||||
|  |     disableNotification: Boolean = false, | ||||||
|  |     protectContent: Boolean = false, | ||||||
|  |     allowSendingWithoutReply: Boolean? = null, | ||||||
|  |     replyMarkup: KeyboardMarkup? = null | ||||||
|  | ) = sendPhoto(to.chat, photoSize, text, parseMode, disableNotification, protectContent, to.messageId, allowSendingWithoutReply, replyMarkup) | ||||||
|  |  | ||||||
|  |  | ||||||
| suspend inline fun TelegramBot.replyWithPhoto( | suspend inline fun TelegramBot.replyWithPhoto( | ||||||
|     to: Message, |     to: Message, | ||||||
| @@ -592,6 +603,16 @@ suspend inline fun TelegramBot.reply( | |||||||
|     replyMarkup: KeyboardMarkup? = null |     replyMarkup: KeyboardMarkup? = null | ||||||
| ) = sendPhoto(to.chat, photo, entities, disableNotification, protectContent, to.messageId, allowSendingWithoutReply, replyMarkup) | ) = sendPhoto(to.chat, photo, entities, disableNotification, protectContent, to.messageId, allowSendingWithoutReply, replyMarkup) | ||||||
|  |  | ||||||
|  | suspend inline fun TelegramBot.reply( | ||||||
|  |     to: Message, | ||||||
|  |     photoSize: PhotoSize, | ||||||
|  |     entities: TextSourcesList, | ||||||
|  |     disableNotification: Boolean = false, | ||||||
|  |     protectContent: Boolean = false, | ||||||
|  |     allowSendingWithoutReply: Boolean? = null, | ||||||
|  |     replyMarkup: KeyboardMarkup? = null | ||||||
|  | ) = sendPhoto(to.chat, photoSize, entities, disableNotification, protectContent, to.messageId, allowSendingWithoutReply, replyMarkup) | ||||||
|  |  | ||||||
|  |  | ||||||
| // Sticker | // Sticker | ||||||
|  |  | ||||||
|   | |||||||
| @@ -8,15 +8,20 @@ import dev.inmo.tgbotapi.types.* | |||||||
| import dev.inmo.tgbotapi.types.actions.* | import dev.inmo.tgbotapi.types.actions.* | ||||||
| import dev.inmo.tgbotapi.types.chat.abstracts.Chat | import dev.inmo.tgbotapi.types.chat.abstracts.Chat | ||||||
| import kotlinx.coroutines.* | import kotlinx.coroutines.* | ||||||
|  | import kotlin.contracts.* | ||||||
| import kotlin.coroutines.coroutineContext | import kotlin.coroutines.coroutineContext | ||||||
|  |  | ||||||
| private const val refreshTime: MilliSeconds = (botActionActualityTime - 1) * 1000L | private const val refreshTime: MilliSeconds = (botActionActualityTime - 1) * 1000L | ||||||
| typealias TelegramBotActionCallback<T> = suspend TelegramBot.() -> T | typealias TelegramBotActionCallback<T> = suspend TelegramBot.() -> T | ||||||
|  |  | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
| suspend fun <T> TelegramBot.withAction( | suspend fun <T> TelegramBot.withAction( | ||||||
|     actionRequest: SendAction, |     actionRequest: SendAction, | ||||||
|     block: TelegramBotActionCallback<T> |     block: TelegramBotActionCallback<T> | ||||||
| ): T { | ): T { | ||||||
|  |     contract { | ||||||
|  |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|     val botActionJob = CoroutineScope(coroutineContext).launch { |     val botActionJob = CoroutineScope(coroutineContext).launch { | ||||||
|         while (isActive) { |         while (isActive) { | ||||||
|             delay(refreshTime) |             delay(refreshTime) | ||||||
| @@ -30,46 +35,190 @@ suspend fun <T> TelegramBot.withAction( | |||||||
|     return result.getOrThrow() |     return result.getOrThrow() | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
| suspend fun <T> TelegramBot.withAction( | suspend fun <T> TelegramBot.withAction( | ||||||
|     chatId: ChatId, |     chatId: ChatId, | ||||||
|     action: BotAction, |     action: BotAction, | ||||||
|     block: TelegramBotActionCallback<T> |     block: TelegramBotActionCallback<T> | ||||||
| ) = withAction( | ): T { | ||||||
|     SendAction(chatId, action), |     contract { | ||||||
|     block |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
| ) |     } | ||||||
|  |     return withAction( | ||||||
|  |         SendAction(chatId, action), | ||||||
|  |         block | ||||||
|  |     ) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
| suspend fun <T> TelegramBot.withAction( | suspend fun <T> TelegramBot.withAction( | ||||||
|     chat: Chat, |     chat: Chat, | ||||||
|     action: BotAction, |     action: BotAction, | ||||||
|     block: TelegramBotActionCallback<T> |     block: TelegramBotActionCallback<T> | ||||||
| ) = withAction( | ): T { | ||||||
|     chat.id, |     contract { | ||||||
|     action, |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|     block |     } | ||||||
| ) |     return withAction( | ||||||
|  |         chat.id, | ||||||
|  |         action, | ||||||
|  |         block | ||||||
|  |     ) | ||||||
|  | } | ||||||
|  |  | ||||||
| suspend fun <T> TelegramBot.withTypingAction(chatId: ChatId, block: TelegramBotActionCallback<T>) = withAction(chatId, TypingAction, block) | @OptIn(ExperimentalContracts::class) | ||||||
| suspend fun <T> TelegramBot.withUploadPhotoAction(chatId: ChatId, block: TelegramBotActionCallback<T>) = withAction(chatId, UploadPhotoAction, block) | suspend fun <T> TelegramBot.withTypingAction(chatId: ChatId, block: TelegramBotActionCallback<T>) : T { | ||||||
| suspend fun <T> TelegramBot.withRecordVideoAction(chatId: ChatId, block: TelegramBotActionCallback<T>) = withAction(chatId, RecordVideoAction, block) |     contract { | ||||||
| suspend fun <T> TelegramBot.withUploadVideoAction(chatId: ChatId, block: TelegramBotActionCallback<T>) = withAction(chatId, UploadVideoAction, block) |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
| suspend fun <T> TelegramBot.withRecordVoiceAction(chatId: ChatId, block: TelegramBotActionCallback<T>) = withAction(chatId, RecordVoiceAction, block) |     } | ||||||
| suspend fun <T> TelegramBot.withUploadVoiceAction(chatId: ChatId, block: TelegramBotActionCallback<T>) = withAction(chatId, UploadVoiceAction, block) |     return withAction(chatId, TypingAction, block) | ||||||
| suspend fun <T> TelegramBot.withUploadDocumentAction(chatId: ChatId, block: TelegramBotActionCallback<T>) = withAction(chatId, UploadDocumentAction, block) | } | ||||||
| suspend fun <T> TelegramBot.withFindLocationAction(chatId: ChatId, block: TelegramBotActionCallback<T>) = withAction(chatId, FindLocationAction, block) | @OptIn(ExperimentalContracts::class) | ||||||
| suspend fun <T> TelegramBot.withRecordVideoNoteAction(chatId: ChatId, block: TelegramBotActionCallback<T>) = withAction(chatId, RecordVideoNoteAction, block) | suspend fun <T> TelegramBot.withUploadPhotoAction(chatId: ChatId, block: TelegramBotActionCallback<T>) : T { | ||||||
| suspend fun <T> TelegramBot.withUploadVideoNoteAction(chatId: ChatId, block: TelegramBotActionCallback<T>) = withAction(chatId, UploadVideoNoteAction, block) |     contract { | ||||||
| suspend fun <T> TelegramBot.withChooseStickerAction(chatId: ChatId, block: TelegramBotActionCallback<T>) = withAction(chatId, ChooseStickerAction, block) |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chatId, UploadPhotoAction, block) | ||||||
|  | } | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
|  | suspend fun <T> TelegramBot.withRecordVideoAction(chatId: ChatId, block: TelegramBotActionCallback<T>) : T { | ||||||
|  |     contract { | ||||||
|  |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chatId, RecordVideoAction, block) | ||||||
|  | } | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
|  | suspend fun <T> TelegramBot.withUploadVideoAction(chatId: ChatId, block: TelegramBotActionCallback<T>) : T { | ||||||
|  |     contract { | ||||||
|  |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chatId, UploadVideoAction, block) | ||||||
|  | } | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
|  | suspend fun <T> TelegramBot.withRecordVoiceAction(chatId: ChatId, block: TelegramBotActionCallback<T>) : T { | ||||||
|  |     contract { | ||||||
|  |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chatId, RecordVoiceAction, block) | ||||||
|  | } | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
|  | suspend fun <T> TelegramBot.withUploadVoiceAction(chatId: ChatId, block: TelegramBotActionCallback<T>) : T { | ||||||
|  |     contract { | ||||||
|  |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chatId, UploadVoiceAction, block) | ||||||
|  | } | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
|  | suspend fun <T> TelegramBot.withUploadDocumentAction(chatId: ChatId, block: TelegramBotActionCallback<T>) : T { | ||||||
|  |     contract { | ||||||
|  |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chatId, UploadDocumentAction, block) | ||||||
|  | } | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
|  | suspend fun <T> TelegramBot.withFindLocationAction(chatId: ChatId, block: TelegramBotActionCallback<T>) : T { | ||||||
|  |     contract { | ||||||
|  |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chatId, FindLocationAction, block) | ||||||
|  | } | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
|  | suspend fun <T> TelegramBot.withRecordVideoNoteAction(chatId: ChatId, block: TelegramBotActionCallback<T>) : T { | ||||||
|  |     contract { | ||||||
|  |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chatId, RecordVideoNoteAction, block) | ||||||
|  | } | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
|  | suspend fun <T> TelegramBot.withUploadVideoNoteAction(chatId: ChatId, block: TelegramBotActionCallback<T>) : T { | ||||||
|  |     contract { | ||||||
|  |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chatId, UploadVideoNoteAction, block) | ||||||
|  | } | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
|  | suspend fun <T> TelegramBot.withChooseStickerAction(chatId: ChatId, block: TelegramBotActionCallback<T>) : T { | ||||||
|  |     contract { | ||||||
|  |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chatId, ChooseStickerAction, block) | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
| suspend fun <T> TelegramBot.withTypingAction(chat: Chat, block: TelegramBotActionCallback<T>) = withAction(chat, TypingAction, block) | @OptIn(ExperimentalContracts::class) | ||||||
| suspend fun <T> TelegramBot.withUploadPhotoAction(chat: Chat, block: TelegramBotActionCallback<T>) = withAction(chat, UploadPhotoAction, block) | suspend fun <T> TelegramBot.withTypingAction(chat: Chat, block: TelegramBotActionCallback<T>) : T { | ||||||
| suspend fun <T> TelegramBot.withRecordVideoAction(chat: Chat, block: TelegramBotActionCallback<T>) = withAction(chat, RecordVideoAction, block) |     contract { | ||||||
| suspend fun <T> TelegramBot.withUploadVideoAction(chat: Chat, block: TelegramBotActionCallback<T>) = withAction(chat, UploadVideoAction, block) |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
| suspend fun <T> TelegramBot.withRecordVoiceAction(chat: Chat, block: TelegramBotActionCallback<T>) = withAction(chat, RecordVoiceAction, block) |     } | ||||||
| suspend fun <T> TelegramBot.withUploadVoiceAction(chat: Chat, block: TelegramBotActionCallback<T>) = withAction(chat, UploadVoiceAction, block) |     return withAction(chat, TypingAction, block) | ||||||
| suspend fun <T> TelegramBot.withUploadDocumentAction(chat: Chat, block: TelegramBotActionCallback<T>) = withAction(chat, UploadDocumentAction, block) | } | ||||||
| suspend fun <T> TelegramBot.withFindLocationAction(chat: Chat, block: TelegramBotActionCallback<T>) = withAction(chat, FindLocationAction, block) | @OptIn(ExperimentalContracts::class) | ||||||
| suspend fun <T> TelegramBot.withRecordVideoNoteAction(chat: Chat, block: TelegramBotActionCallback<T>) = withAction(chat, RecordVideoNoteAction, block) | suspend fun <T> TelegramBot.withUploadPhotoAction(chat: Chat, block: TelegramBotActionCallback<T>) : T { | ||||||
| suspend fun <T> TelegramBot.withUploadVideoNoteAction(chat: Chat, block: TelegramBotActionCallback<T>) = withAction(chat, UploadVideoNoteAction, block) |     contract { | ||||||
| suspend fun <T> TelegramBot.withChooseStickerAction(chat: Chat, block: TelegramBotActionCallback<T>) = withAction(chat, ChooseStickerAction, block) |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chat, UploadPhotoAction, block) | ||||||
|  | } | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
|  | suspend fun <T> TelegramBot.withRecordVideoAction(chat: Chat, block: TelegramBotActionCallback<T>) : T { | ||||||
|  |     contract { | ||||||
|  |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chat, RecordVideoAction, block) | ||||||
|  | } | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
|  | suspend fun <T> TelegramBot.withUploadVideoAction(chat: Chat, block: TelegramBotActionCallback<T>) : T { | ||||||
|  |     contract { | ||||||
|  |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chat, UploadVideoAction, block) | ||||||
|  | } | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
|  | suspend fun <T> TelegramBot.withRecordVoiceAction(chat: Chat, block: TelegramBotActionCallback<T>) : T { | ||||||
|  |     contract { | ||||||
|  |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chat, RecordVoiceAction, block) | ||||||
|  | } | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
|  | suspend fun <T> TelegramBot.withUploadVoiceAction(chat: Chat, block: TelegramBotActionCallback<T>) : T { | ||||||
|  |     contract { | ||||||
|  |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chat, UploadVoiceAction, block) | ||||||
|  | } | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
|  | suspend fun <T> TelegramBot.withUploadDocumentAction(chat: Chat, block: TelegramBotActionCallback<T>) : T { | ||||||
|  |     contract { | ||||||
|  |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chat, UploadDocumentAction, block) | ||||||
|  | } | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
|  | suspend fun <T> TelegramBot.withFindLocationAction(chat: Chat, block: TelegramBotActionCallback<T>) : T { | ||||||
|  |     contract { | ||||||
|  |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chat, FindLocationAction, block) | ||||||
|  | } | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
|  | suspend fun <T> TelegramBot.withRecordVideoNoteAction(chat: Chat, block: TelegramBotActionCallback<T>) : T { | ||||||
|  |     contract { | ||||||
|  |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chat, RecordVideoNoteAction, block) | ||||||
|  | } | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
|  | suspend fun <T> TelegramBot.withUploadVideoNoteAction(chat: Chat, block: TelegramBotActionCallback<T>) : T { | ||||||
|  |     contract { | ||||||
|  |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chat, UploadVideoNoteAction, block) | ||||||
|  | } | ||||||
|  | @OptIn(ExperimentalContracts::class) | ||||||
|  | suspend fun <T> TelegramBot.withChooseStickerAction(chat: Chat, block: TelegramBotActionCallback<T>) : T { | ||||||
|  |     contract { | ||||||
|  |         callsInPlace(block, InvocationKind.EXACTLY_ONCE) | ||||||
|  |     } | ||||||
|  |     return withAction(chat, ChooseStickerAction, block) | ||||||
|  | } | ||||||
|   | |||||||
| @@ -9,8 +9,7 @@ import dev.inmo.tgbotapi.types.MessageIdentifier | |||||||
| import dev.inmo.tgbotapi.types.ParseMode.ParseMode | import dev.inmo.tgbotapi.types.ParseMode.ParseMode | ||||||
| import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup | import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup | ||||||
| import dev.inmo.tgbotapi.types.chat.abstracts.Chat | import dev.inmo.tgbotapi.types.chat.abstracts.Chat | ||||||
| import dev.inmo.tgbotapi.types.files.Photo | import dev.inmo.tgbotapi.types.files.* | ||||||
| import dev.inmo.tgbotapi.types.files.biggest |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or |  * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or | ||||||
| @@ -88,6 +87,38 @@ suspend fun TelegramBot.sendPhoto( | |||||||
|     replyMarkup: KeyboardMarkup? = null |     replyMarkup: KeyboardMarkup? = null | ||||||
| ) = sendPhoto(chat.id, photo, text, parseMode, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup) | ) = sendPhoto(chat.id, photo, text, parseMode, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup) | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or | ||||||
|  |  * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param | ||||||
|  |  */ | ||||||
|  | suspend fun TelegramBot.sendPhoto( | ||||||
|  |     chatId: ChatIdentifier, | ||||||
|  |     photoSize: PhotoSize, | ||||||
|  |     text: String? = null, | ||||||
|  |     parseMode: ParseMode? = null, | ||||||
|  |     disableNotification: Boolean = false, | ||||||
|  |     protectContent: Boolean = false, | ||||||
|  |     replyToMessageId: MessageIdentifier? = null, | ||||||
|  |     allowSendingWithoutReply: Boolean? = null, | ||||||
|  |     replyMarkup: KeyboardMarkup? = null | ||||||
|  | ) = sendPhoto(chatId, photoSize.fileId, text, parseMode, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup) | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or | ||||||
|  |  * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param | ||||||
|  |  */ | ||||||
|  | suspend fun TelegramBot.sendPhoto( | ||||||
|  |     chat: Chat, | ||||||
|  |     photoSize: PhotoSize, | ||||||
|  |     text: String? = null, | ||||||
|  |     parseMode: ParseMode? = null, | ||||||
|  |     disableNotification: Boolean = false, | ||||||
|  |     protectContent: Boolean = false, | ||||||
|  |     replyToMessageId: MessageIdentifier? = null, | ||||||
|  |     allowSendingWithoutReply: Boolean? = null, | ||||||
|  |     replyMarkup: KeyboardMarkup? = null | ||||||
|  | ) = sendPhoto(chat.id, photoSize, text, parseMode, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup) | ||||||
|  |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or |  * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or | ||||||
| @@ -159,3 +190,33 @@ suspend inline fun TelegramBot.sendPhoto( | |||||||
|     allowSendingWithoutReply: Boolean? = null, |     allowSendingWithoutReply: Boolean? = null, | ||||||
|     replyMarkup: KeyboardMarkup? = null |     replyMarkup: KeyboardMarkup? = null | ||||||
| ) = sendPhoto(chat.id, photo, entities, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup) | ) = sendPhoto(chat.id, photo, entities, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup) | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or | ||||||
|  |  * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param | ||||||
|  |  */ | ||||||
|  | suspend inline fun TelegramBot.sendPhoto( | ||||||
|  |     chatId: ChatIdentifier, | ||||||
|  |     photoSize: PhotoSize, | ||||||
|  |     entities: TextSourcesList, | ||||||
|  |     disableNotification: Boolean = false, | ||||||
|  |     protectContent: Boolean = false, | ||||||
|  |     replyToMessageId: MessageIdentifier? = null, | ||||||
|  |     allowSendingWithoutReply: Boolean? = null, | ||||||
|  |     replyMarkup: KeyboardMarkup? = null | ||||||
|  | ) = sendPhoto(chatId, photoSize.fileId, entities, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup) | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or | ||||||
|  |  * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param | ||||||
|  |  */ | ||||||
|  | suspend inline fun TelegramBot.sendPhoto( | ||||||
|  |     chat: Chat, | ||||||
|  |     photoSize: PhotoSize, | ||||||
|  |     entities: TextSourcesList, | ||||||
|  |     disableNotification: Boolean = false, | ||||||
|  |     protectContent: Boolean = false, | ||||||
|  |     replyToMessageId: MessageIdentifier? = null, | ||||||
|  |     allowSendingWithoutReply: Boolean? = null, | ||||||
|  |     replyMarkup: KeyboardMarkup? = null | ||||||
|  | ) = sendPhoto(chat.id, photoSize, entities, disableNotification, protectContent, replyToMessageId, allowSendingWithoutReply, replyMarkup) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user