1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2026-03-18 00:32:32 +00:00

Compare commits

..

206 Commits

Author SHA1 Message Date
2a1bd229d6 partial replace of require with warning messages 2026-03-06 19:09:45 +06:00
b30af48b8d improve readability of SetBusinessAccountUsername and fix its api 2026-03-06 18:44:35 +06:00
083fd1b682 returned boolean now returns unit 2026-03-06 00:39:54 +06:00
a8410df038 fill changelog 2026-03-05 21:56:04 +06:00
bd7e8ed55f update dependencies 2026-03-05 21:38:05 +06:00
8c6408bc2b start 32.0.0 2026-03-05 19:27:23 +06:00
e5d18a421f Merge pull request #1032 from InsanusMokrassar/31.2.0
31.2.0
2026-03-04 19:38:06 +06:00
d3c1859338 fix of #1027 and small fix of changelog for #1026 2026-03-03 17:55:40 +06:00
e6d6bbdaa0 fix of #1026 2026-03-03 17:47:45 +06:00
75a977aebb start 31.2.0 2026-03-03 16:07:35 +06:00
f48eb820bf Merge pull request #1031 from InsanusMokrassar/31.1.0
31.1.0
2026-03-02 19:22:43 +06:00
9f9d890831 fix of promoteChatAdministrator 2026-03-02 19:05:38 +06:00
da662603b0 fill changelog and readme 2026-03-02 18:50:51 +06:00
2dd91f47d7 add helper method sender_tag for messages 2026-03-02 17:40:47 +06:00
8eb8e5ee1f add support of iconCustomEmojiId in BottomButton 2026-03-02 16:56:57 +06:00
b533bab95f add support of users tags 2026-03-02 16:51:10 +06:00
4f97327d29 add support of date_time messages entities 2026-03-02 15:29:26 +06:00
b17d7a868a start 31.1.0 2026-03-02 00:30:37 +06:00
df695ceadb Merge pull request #1030 from InsanusMokrassar/31.0.1
31.0.1
2026-02-26 00:54:42 +06:00
ac511d0aed make nanostarAmount in StarTransaction nullable 2026-02-25 22:10:19 +06:00
65cd359002 start 31.0.1 2026-02-25 22:01:55 +06:00
8d7005be80 try to update nmcp version 2026-02-24 18:24:39 +06:00
a20368ee51 Merge pull request #1024 from InsanusMokrassar/31.0.0
31.0.0
2026-02-24 15:07:59 +06:00
744149a674 fill changelog 2026-02-24 15:02:25 +06:00
410183e315 add notes about support of new apis 2026-02-24 14:37:50 +06:00
9776a2474a fix of UniqueGiftModel 2026-02-24 14:09:49 +06:00
aebc571307 upfill changelog 2026-02-24 14:02:37 +06:00
26c11d9d6b add OwnedGifts sealed interface 2026-02-24 12:37:07 +06:00
c9be5041b8 check new fields and other things related to api updates in gifts 2026-02-20 17:49:16 +06:00
f10cfdbe1e add support of getChatGifts and getUserGifts 2026-02-20 17:05:51 +06:00
83b4d2155f add is_burned support 2026-02-20 13:55:19 +06:00
eccc687aec add rarity support 2026-02-20 13:06:53 +06:00
53e79b152e add support of unique gift colors 2026-02-20 12:54:21 +06:00
b9157b1924 completed by chat and completed by user support 2026-02-20 12:45:34 +06:00
e6aaa264f6 improvements of effectId in copyMessage and forwardMessage 2026-02-18 23:37:18 +06:00
e6cb028a71 improve repostStory 2026-02-18 22:55:38 +06:00
10b796c88e fix support of rating info 2026-02-18 22:46:56 +06:00
62a4bf5195 small fill of CHANGELOG and fix of library version 2026-02-18 22:23:42 +06:00
a0bb05ce4a add support of profile audios 2026-02-18 21:22:16 +06:00
e02849ae5e add purchased_paid_media in updates list 2026-02-18 17:52:26 +06:00
4252db489a fix support of paid_message_star_count 2026-02-18 17:18:38 +06:00
ac05fa0fe3 add support of SetMyProfilePhoto and RemoveMyProfilePhoto 2026-02-17 22:05:38 +06:00
bd816b7847 realize ChatOwnerLeft and ChatOwnerChanged 2026-02-17 15:30:25 +06:00
407f2a8bf7 fix serialization of simple keyboard button 2026-02-17 12:09:23 +06:00
10b1c359fa extend support of styles and iconEmojiCustomId 2026-02-16 23:22:04 +06:00
c4f2566b71 add support of style and iconEmojiCustomId 2026-02-16 22:57:45 +06:00
85fb7e42e5 fix RepostStory class 2026-02-16 22:39:18 +06:00
d68c70e898 fix drafts flows signatures 2026-02-16 18:52:41 +06:00
14402f9283 improve drafts flows 2026-02-16 18:48:31 +06:00
b734757062 add drafts flows 2026-02-16 18:24:29 +06:00
fd9ad8dbf1 add drafts 2026-02-16 18:03:05 +06:00
734e6074ef update events triggers 2026-02-16 17:35:46 +06:00
d642a04e01 update forum events 2026-02-16 17:26:35 +06:00
ecd01c9254 classcasts and apiDump 2026-02-16 17:14:28 +06:00
8922b80cff fixes 2026-02-16 17:09:48 +06:00
50a7c9cae2 update forum topic events 2026-02-16 17:08:49 +06:00
f7ee0828ce small improvements 2026-02-16 15:05:37 +06:00
0c87cf95eb improvements(?) in users api 2026-02-16 15:04:33 +06:00
9fea7390e8 add support of extended chat id in private chats 2026-02-15 23:51:39 +06:00
9f0ca8143c update microutils 2026-02-15 21:03:28 +06:00
9d879b90bb fix user rating 2026-02-15 15:14:18 +06:00
2a28f8ab39 fixes in common bot hierarchy 2026-02-15 14:47:47 +06:00
44ce84cb84 fixes? 2026-02-15 13:53:41 +06:00
cea80ccee6 preview version of threads in privats 2026-02-15 13:22:17 +06:00
e1848aa5c9 fix of hasTopicsEnabled and add support of allows_users_to_create_topics 2026-02-15 13:14:18 +06:00
e40424b26a some additions(need to check all this commit) 2026-02-10 16:02:28 +06:00
cc5056b685 make chats to support private forums 2026-01-07 23:19:12 +06:00
9713a668e2 start 31.0.0 2026-01-07 20:45:29 +06:00
90d7bdff56 Merge pull request #1020 from InsanusMokrassar/30.0.2
30.0.2
2025-11-23 17:44:13 +06:00
374f6a93bd hotifx of changelog 2025-11-23 17:43:58 +06:00
28b5fae760 fix of #1019 and improve longPollingFlow 2025-11-23 17:35:59 +06:00
97dae295d6 update dependencies 2025-11-23 16:55:54 +06:00
93597f3940 start 30.0.2 2025-11-23 14:25:58 +06:00
f27caaecde Merge pull request #1014 from InsanusMokrassar/30.0.1
30.0.1
2025-11-07 14:58:22 +06:00
b71b1414b9 fix of target version 2025-10-22 01:52:00 +06:00
f8ceab7640 small hotfix 2025-10-22 01:51:20 +06:00
68897c89c3 start 30.0.1 2025-10-21 23:27:43 +06:00
fb08b7044e Merge pull request #1012 from InsanusMokrassar/30.0.0
30.0.0
2025-10-21 22:25:26 +06:00
7ed021b5bc fill changelog 2025-10-21 22:24:58 +06:00
1cff533265 update dependencies and fix (?) build 2025-10-20 22:44:16 +06:00
8b08e11441 migrate onto 30.0.0 2025-10-20 21:21:31 +06:00
b69c8f1d8f update dependencies
com.github.ben-manes.versions: 0.52.0 -> 0.53.0
2025-10-19 23:33:10 +06:00
fdf393405c start 29.1.0 2025-10-19 22:57:12 +06:00
c951fc3353 Merge pull request #1010 from InsanusMokrassar/29.0.1
29.0.1
2025-10-13 23:10:42 +06:00
02f42c3f52 fix of name for publishing in nexus 2025-10-12 21:46:35 +06:00
0105e46a5f apiDump 2025-10-12 21:22:34 +06:00
325a189ebb fix of #917 2025-10-12 21:09:38 +06:00
1d021c8450 start 29.0.1 2025-10-12 21:07:55 +06:00
6eb9379e0a Merge pull request #998 from InsanusMokrassar/29.0.0
29.0.0
2025-09-25 15:07:02 +06:00
2d97d10ee1 fill changelog and readme 2025-09-25 14:25:22 +06:00
4b7d052ece rewrite firstOf 2025-09-25 14:25:08 +06:00
df512a917b Merge branch 'master' into 29.0.0 2025-09-23 18:21:13 +06:00
67cd836466 Merge pull request #1005 from InsanusMokrassar/28.0.3
28.0.3
2025-09-23 18:17:11 +06:00
eb1fb16117 add support of custom publishing type 2025-09-23 18:13:04 +06:00
ee4cf7c626 add passing of default engines in HttpClient constructors 2025-09-23 17:53:21 +06:00
74d8b31437 start 28.0.3 2025-09-23 17:46:54 +06:00
3f61cfdefb fix of paid message building 2025-09-23 16:12:40 +06:00
91339fc839 rewrite firstof 2025-09-23 13:37:59 +06:00
2e23f48350 fixes in CommonChannelDirectMessagesEventMessage creating 2025-09-23 12:47:58 +06:00
f6211d33bb change events hierarchy of ChannelDirectMessagesEvent 2025-09-23 12:16:30 +06:00
2ff11ad73c improve messages hierarchy 2025-09-22 12:19:34 +06:00
2695b03968 fix of direct message typing 2025-09-17 23:31:08 +06:00
03d23a938e fixes of inheritance of messages for direct ones 2025-09-17 22:46:51 +06:00
719fb1f4a9 complete adding of suggestedPostParameters 2025-09-17 20:21:55 +06:00
c3c69f3e7f some step 2025-09-17 16:30:41 +06:00
4fb662c560 third stage of suggested_post_parameters implementation 2025-09-15 18:14:51 +06:00
cc967c2981 add suggestedPostParameters in contents 2025-09-15 17:53:59 +06:00
aa7bf426f1 second stage of suggested_post_parameters implementation 2025-09-15 17:49:33 +06:00
0b2735ca1e add support of suggestedPostParameters in requests 2025-09-15 16:46:44 +06:00
48bfa76b9e implemented direct message thread id????? 2025-09-15 12:32:35 +06:00
79a0e202d8 fix of directMessageThreadId passes 2025-09-15 12:32:35 +06:00
152bf2af02 fix of apiDump 2025-09-15 12:32:35 +06:00
0163e5ce8c fix of apiDump 2025-09-15 00:32:25 +06:00
62b4a21650 some progress on support of directMessageThreadId 2025-09-15 00:12:53 +06:00
f312e04c0d add directMessageThreadId parameter in create resend 2025-09-14 23:19:54 +06:00
1c36c0a2f7 add directMessageThreadId in factories of sending classes 2025-09-14 15:14:38 +06:00
bd73852253 let forwardMessage(s) extend OptionallyDirectMessageThreadRequest 2025-09-14 14:48:20 +06:00
fbb2511fca Merge branch 'master' into 29.0.0 2025-09-14 14:43:49 +06:00
f22d571484 Merge pull request #1003 from InsanusMokrassar/28.0.2
28.0.2
2025-09-10 15:59:20 +06:00
9be5ebb036 refactor changelog 2025-09-10 15:58:43 +06:00
da4cd527ec fix of #1002 2025-09-10 15:45:45 +06:00
4117288b21 fix of #1001 2025-09-10 15:33:07 +06:00
458bdd3ee4 start 28.0.2 2025-09-10 15:29:55 +06:00
8101c4c9fb add publisher_chat support 2025-09-09 18:00:53 +06:00
255416f72a add support of appriveSuggestedPost and declineSuggestedPost 2025-09-09 17:34:48 +06:00
6eb7563c70 add support of is_paid_post field 2025-09-09 17:15:59 +06:00
b9bdf7cc72 add is_paid_post as simple boolean 2025-09-09 17:12:16 +06:00
4a8e1ee7b7 upfix for updating of chat member rights 2025-09-09 17:02:54 +06:00
23bfe02e6f add support of can_manage_direct_messages right 2025-09-09 16:58:47 +06:00
658c19092c Merge branch 'master' into 29.0.0 2025-09-04 16:39:36 +06:00
d469a88791 Merge pull request #1000 from InsanusMokrassar/28.0.1
28.0.1
2025-09-04 16:38:10 +06:00
514bc699dd update dependencies 2025-09-04 16:37:57 +06:00
bec72b8cf8 fix of default thread id 2025-09-04 16:24:54 +06:00
fb0014dffa start 28.0.1 2025-09-04 16:10:16 +06:00
ebc1c07404 small improvements 2025-09-04 16:09:30 +06:00
989d33acb8 start separate channel direct messages thread id insttead of one merged message thread id 2025-09-03 19:44:42 +06:00
5aa6ac3320 separate messageThreadId with direct_messages_topic in chats creation 2025-08-25 16:48:01 +06:00
048f65b8d4 Partially add DirectMessagesTopic 2025-08-25 16:39:23 +06:00
b69be31362 add a lot of things from update 2025-08-25 15:43:42 +06:00
b92288d7cc add realization of several suggested post events 2025-08-23 16:09:17 +06:00
6c02d57197 add support of reply_to_checklist_task_id 2025-08-19 12:59:29 +06:00
e977c865ea add ReplyParameters#checklistTaskId -.- 2025-08-19 12:30:12 +06:00
18b459fdf8 start 29.0.0 2025-08-19 11:46:36 +06:00
2bbd2e0679 Merge pull request #993 from InsanusMokrassar/28.0.0
28.0.0
2025-08-11 15:55:27 +06:00
bcf7e835e6 add breaking changes note 2025-08-11 15:55:01 +06:00
4dd9740fec fill changelog and add kdocs for firstOf 2025-08-11 15:50:06 +06:00
2182e44bc2 add overloads for containsCommand 2025-08-11 15:28:21 +06:00
08c885de2f add extension of containsCommand 2025-08-11 01:02:22 +06:00
facecf35fb add firstOf 2025-08-11 00:47:35 +06:00
b13f24153f add filtering of waiters with commands for other usernames 2025-08-10 23:28:30 +06:00
12ee862dad small fix in filter of commands 2025-08-10 23:03:17 +06:00
0726574852 improvements in copying of behaviour contexts 2025-08-10 22:50:21 +06:00
9a00193e59 improvements in data filling 2025-08-10 22:47:52 +06:00
0fd8c1e2f3 add filtering out of other bots commands by default 2025-08-10 18:24:34 +06:00
c09d089707 add lazy loadable bot info 2025-08-10 18:05:48 +06:00
ff39271afd start 28.0.0 2025-08-10 17:02:41 +06:00
35a4edd643 start 27.2.0 2025-08-10 16:51:23 +06:00
ba647ee5ab Update README.md 2025-08-06 17:46:43 +06:00
d2924ce1f2 Merge pull request #992 from InsanusMokrassar/27.1.2
27.1.2
2025-08-06 15:59:17 +06:00
72781487f0 add note about Something web wrong 2025-08-06 14:00:29 +06:00
de435e5dbc Merge pull request #986 from BlackBaroness/patch-1
fix: typo in default error messages
2025-08-06 13:57:59 +06:00
f975754058 try to fix cancelling on timeout for long polling 2025-08-06 13:14:22 +06:00
0f7536a21c start 27.1.2 2025-08-06 13:10:42 +06:00
d4c085c9b6 Merge pull request #991 from InsanusMokrassar/27.1.1
27.1.1
2025-08-04 01:59:53 +06:00
667c49f13d update dependencies 2025-08-04 01:36:56 +06:00
e1d9ebff90 jvmApiDump 2025-08-04 01:33:12 +06:00
fbc7088dad fix of #990 2025-08-04 01:25:16 +06:00
4ba9c8ee97 start 27.1.1 2025-08-04 01:24:02 +06:00
92611b5c26 Merge pull request #985 from InsanusMokrassar/27.1.0
27.1.0
2025-07-28 20:23:07 +06:00
2e1c0d41ec update service dependencies 2025-07-28 20:09:58 +06:00
3ce56745f4 add fileLinkUrlMapper to all callers of TelegramAPIUrlsKeeper constructors 2025-07-28 20:04:59 +06:00
1bc9ee4d5a add TelegramAPIUrlsKeeper#fileLinkUrlMapper and fill readme Bot API Server Notice 2025-07-27 15:06:47 +06:00
BlackBaroness
0650fc594f fix: typo in default error messages 2025-07-27 07:34:56 +03:00
2f4de37489 fix build 2025-07-25 21:53:08 +06:00
cec5a0af12 improve support of local bot api servers 2025-07-25 21:35:38 +06:00
5e5dc6b36b start 27.1.0 2025-07-25 21:00:44 +06:00
19265357a2 Merge pull request #981 from InsanusMokrassar/27.0.0
27.0.0
2025-07-22 20:32:37 +06:00
49c2836e62 fill changelog and update dependencies 2025-07-22 19:42:23 +06:00
f7476188eb so, now? 2025-07-21 22:55:36 +06:00
2ba447b126 fix of cancellation exception throwing? 2025-07-21 20:41:51 +06:00
3bd4fab3fe migrate onto 27.0.0 due to potentially breaking changes 2025-07-12 15:44:39 +06:00
9e4d7dd9f9 WAT A HUGE REFACTOR 2025-07-12 15:42:48 +06:00
586a61157d update dependencies 2025-07-12 13:20:02 +06:00
045265f0f8 update dependencies 2025-07-12 13:06:35 +06:00
c125eadaa4 Update README.md 2025-07-10 17:39:40 +06:00
3dd0a91c54 Merge pull request #979 from InsanusMokrassar/26.1.0
26.1.0
2025-07-10 16:44:46 +06:00
2ecd42c859 fill changelog (-.-) and remove redundant file 2025-07-10 16:13:19 +06:00
3857950141 fixes 2025-07-08 18:38:12 +06:00
6d5bedd315 add workarounds for checklists 2025-07-08 11:47:05 +06:00
69a9e8f820 several fixes 2025-07-08 11:43:13 +06:00
6d8693a003 add typed origin, nextTransferDate and last_resale_star_count in GiftSentOrReceived 2025-07-07 22:18:16 +06:00
c990d987f5 add support of general changes 2025-07-07 21:48:23 +06:00
b8530f14ca add checklist as field in ExternalReplyInfo and add support of EditMessageChecklist 2025-07-07 21:29:29 +06:00
db8bac9b52 add ChecklistTasksAdded and ChecklistTasksDone events 2025-07-07 21:19:17 +06:00
e53b3b8198 improve support of send checklist 2025-07-07 21:03:04 +06:00
71ccfc88cc start add SendChecklist 2025-07-07 16:25:21 +06:00
dd2923f92d complete base checklists? 2025-07-07 15:39:48 +06:00
ff78153591 small improvements 2025-07-07 15:18:22 +06:00
e2ce9cfebf preview version of inputs for tasks 2025-07-07 14:38:39 +06:00
0a01d2567e add checklist 2025-07-04 11:53:16 +06:00
e4fb45c09b start realize Bots API 9.1 2025-07-03 22:25:47 +06:00
db0df975c7 start 26.1.0 2025-07-03 22:07:16 +06:00
2003b314a3 update maven badge 2025-06-30 14:00:07 +06:00
55a78375be Merge pull request #977 from centralhardware/PR1
docs: make buildEntities usage more obvious to anyone not familiar with Telegram Bot API or ktgbotapi
2025-06-23 21:20:33 +06:00
alex
256607e336 docs: make buildEntities usage more obvious to anyone not familiar with Telegram Bot API or ktgbotapi 2025-06-23 18:58:08 +08:00
92f2a5afdb Merge pull request #974 from InsanusMokrassar/26.0.0
26.0.0
2025-06-15 19:46:05 +06:00
679 changed files with 23133 additions and 9458 deletions

View File

@@ -28,7 +28,7 @@ jobs:
env: env:
GITHUB_USER: ${{ github.actor }} GITHUB_USER: ${{ github.actor }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Publish to Gitea - name: Publish to InmoNexus
continue-on-error: true continue-on-error: true
run: ./gradlew publishAllPublicationsToInmoNexusRepository run: ./gradlew publishAllPublicationsToInmoNexusRepository
env: env:

2
.gitignore vendored
View File

@@ -1,4 +1,5 @@
.idea .idea
.vscode/
.kotlin .kotlin
out/* out/*
*.iml *.iml
@@ -9,6 +10,7 @@ settings.xml
.gradle/ .gradle/
build/ build/
out/ out/
bin/
local.properties local.properties
kotlin-js-store/ kotlin-js-store/

View File

@@ -1,5 +1,242 @@
# TelegramBotAPI changelog # TelegramBotAPI changelog
## 32.0.0
**THIS UPDATE CONTAINS BREAKING CHANGES**
* `Version`:
* `Kotlin`: `2.2.21` -> `2.3.10`
* `Kotlin Serialization`: `1.9.0` -> `1.10.0`
* `Ktor`: `3.3.2` -> `3.4.1`
* `KSP`: `2.3.2` -> `2.3.6`
* `MicroUtils`: `0.26.9` -> `0.29.1`
* `KSLog`: `1.5.2` -> `1.6.0`
* `Core` + `API`:
* **BREAKING CHANGES: ALL METHODS THAT PREVIOUSLY RETURNED BOOLEAN NOW RETURNS UNIT**
* `Core`:
* **BREAKING CHANGE** `SetChatTitle` init do not throw error in case when `title.length` is outside of `chatTitleLength`
* **BREAKING CHANGE** `SetStickerEmojiList` init do not throw error in case when `emojis.size` is outside of `emojisInStickerLimit`
* **BREAKING CHANGE** `DeleteMessages` init do not throw error in case when title is `messageIds.size` of `deleteMessagesLimit`
* **BREAKING CHANGE** `ForwardMessages` init do not throw error in case when `messageIds.size` is outside of `forwardMessagesLimit`
* **BREAKING CHANGE** `CopyMessages` init do not throw error in case when `messageIds.size` is outside of `copyMessagesLimit`
* **BREAKING CHANGE** `SwitchInlineQueryChosenChat` init do not throw error in case when `messageIds.size` is outside of `copyMessagesLimit`
* **BREAKING CHANGE** `SetStickerKeywords` init do not throw error in case when there are errors in `keywords`
## 31.2.0
* `Core`:
* Potentially fix [#1027](https://github.com/InsanusMokrassar/ktgbotapi/issues/1027) - drop http request exceptions on getting updates
* `Core` + `API`:
* Add `supportsStreaming` in places it haven't been supported (fix of [#1026](https://github.com/InsanusMokrassar/ktgbotapi/issues/1026))
* **PARTIALLY BREAKING CHANGE** `supportStreaming` has been renamed to `supportsStreaming`
## 31.1.0
**THIS UPDATE CONTAINS ADDING SUPPORT OF [Telegram Bots API 9.5](https://core.telegram.org/bots/api-changelog#march-1-2026)**
* `Core`:
* Added `UserTag` value class and `senderTag` field to messages
* Added `SetChatMemberTag` request and `UserTag` support in `PromoteChatMember` and `ChatPermissions`
* Added `DateTimeTextSource` for `tg://time` links support
* Added `DateTimeFormatPart` and `TgDateTimeFormatBuilder` for building date-time format strings
* Added `UnitFromBooleanSerializer`
* `API`:
* Added `setChatMemberTag` extensions
* `Utils`:
* Added `dateTime` and `dateTimeln` extensions to `EntitiesBuilder`
* Added `dateTimeMarkdown`, `dateTimeMarkdownV2`, and `dateTimeHTML` string formatting extensions
* Regenerated class casts extensions
* `WebApps`:
* Added `iconCustomEmojiId` support to `BottomButton` and `BottomButtonParams`
## 31.0.1
* `Core`:
* In `StarTransaction` property `nanostarAmount` become nullable
## 31.0.0
**THIS UPDATE CONTAINS ADDING SUPPORT OF [Telegram Bots API 9.3](https://core.telegram.org/bots/api-changelog#december-31-2025)**
**THIS UPDATE CONTAINS ADDING SUPPORT OF [Telegram Bots API 9.4](https://core.telegram.org/bots/api-changelog#february-9-2026)**
**THIS UPDATE CONTAINS BREAKING CHANGES**
* `Version`:
* `MicroUtils`: `0.26.8` -> `0.26.9`
* `Core`:
* **THIS IS BREAKING CHANGE** All media files with sizes changed type of `fileSize` field from `Long` to `FileSize` (value class)
* **THIS IS BREAKING CHANGE** Class `GiftSentOrReceived` have been renamed to `GiftSentOrReceivedEvent` to clarify naming
* **THIS IS BREAKING CHANGE** New interface `OwnedGift` have been created
* **THIS IS BREAKING CHANGE** `OwnedGifts` have changed its generic type to `OwnedGift`
* **THIS IS BREAKING CHANGE** For `CheclistTask` have been made several changes:
* `ChecklistTask.Done` -> `ChecklistTask.Completed`
* `ChecklistTask.Undone` -> `ChecklistTask.Uncompleted`
* Added several inheritors of `ChecklistTask.Completed` - for completed by chat, by user or just completed tasks
* **THIS IS BREAKING CHANGE** `PrivateChat.id` type changed from `UserId` to `IdChatIdentifier`
* **THIS IS BREAKING CHANGE** `ForumChat` no longer extends `SupergroupChat`; new `SupergroupForumChat` interface created for supergroup forums
* **THIS IS BREAKING CHANGE** Added `PrivateForumChat` and `PrivateUserChat` interfaces to support private forums
* Added support of private forums (`ExtendedPrivateForumChatImpl`, `PrivateForumContentMessage`, `PrivateForumEventMessage`)
* Added `ChatOwnerChanged` and `ChatOwnerLeft` chat events
* Added `SetMyProfilePhoto` and `RemoveMyProfilePhoto` requests
* Added `GetUserProfileAudios` request and `UserProfileAudios` type
* Added `GetChatGifts` and `GetUserGifts` requests
* Added `RepostStory` request
* Added `SendMessageDraft` request with `DraftId` and `DraftIdAllocator`
* Added `KeyboardButtonStyle` support and `iconCustomEmojiId` field to keyboard buttons
* Added `style` and `iconCustomEmojiId` fields to `InlineKeyboardButton`
* Added `VideoCodec` and `VideoQuality` types
* Added `Rarity`, `GiftBackground`, `UniqueGiftName`, and `UniqueGiftColors` types for gifts
* Added new fields to `Gift.Regular`: `personalTotalCount`, `personalRemainingCount`, `isPremium`, `hasColors`, `background`, `uniqueGiftVariantCount`
* Added `isBurned` field support in `GiftSentOrReceivedEvent`
* Added `UserRating` type and `rating` field to `ExtendedPrivateChat`
* Added `Level` and `Rating` value classes
* Added `uniqueGiftColors` field to extended chats (channel, group, private)
* Added `paidMessageStarCount` field to `ExtendedGroupChat` and `ExtendedPrivateChat`
* Added `firstProfileAudio` field to `ExtendedPrivateChat`
* Added `purchased_paid_media` to updates list
* Added `effectId` support in `CopyMessage` and `ForwardMessage`
* Added `WithOptionalPaidMessageStarCount` interface
* Fixed serialization of `SimpleKeyboardButton`
* Fixed support of `paidMessageStarCount`
* `API`:
* Added extensions for `SetMyProfilePhoto`, `RemoveMyProfilePhoto`, `GetUserProfileAudios`
* Added extensions for `GetChatGifts` and `GetUserGifts`
* Added extensions for `RepostStory`
* Added extensions for `SendMessageDraft`
* Added `effectId` parameter to `copyMessage` and `forwardMessage` extensions
* Added `GetBusinessAccountGifts` extensions improvements
* `BehaviourBuilder`:
* Updated event triggers for new chat events (`ChatOwnerChanged`, `ChatOwnerLeft`, private forum events)
* Updated expectations for new event types
* `Utils`:
* Regenerated class casts extensions
* Updated `InlineKeyboardBuilder` and `ReplyKeyboardBuilder` with `style` and `iconCustomEmojiId` support
## 30.0.2
* `Version`:
* `Kotlin`: `2.2.20` -> `2.2.21`
* `Ktor`: `3.3.1` -> `3.3.2`
* `KSP`: `2.2.20-2.0.4` -> `2.3.2`
* `MicroUtils`: `0.26.6` -> `0.26.8`
* `KSLog`: `1.5.1` -> `1.5.2`
* `Core`:
* Allow to use `SetWebhook` with `maxAllowedConnections` up to `100000` (fix of [#1019](https://github.com/InsanusMokrassar/ktgbotapi/issues/1019))
* `KSP`:
* Fixed annotation property access for KSP2 compatibility using `withNoSuchElementWorkaround`
* Removed `ksp.useKSP2=false` workaround from `gradle.properties` (KSP2 is now properly supported)
* `Utils`:
* Regenerated class casts extensions
* Allow to use custom `GetUpdates` in `longPollingFlow`
## 30.0.1
* `Core`:
* Potential fix of [#989](https://github.com/InsanusMokrassar/ktgbotapi/issues/989) by:
* In long polling have been added check for causing by unresolved address exception
* Add `TelegramBotPipelinesHandler.onRequestExceptionInLimiter` which will be triggered in ANY exception during
request execution
## 30.0.0
**THIS UPDATE MAY CONTAINS BREAKING CHANGES**
* `Version`:
* `Kotlin`: `2.2.10` -> `2.2.20`
* `Ktor`: `3.2.3` -> `3.3.1`
* `MicroUtils`: `0.26.3` -> `0.26.6`
* `KSLog`: `1.5.0` -> `1.5.1`
* `BehaviourBuilder`:
* `DefaultCustomBehaviourContextAndTypeReceiver` now extends `suspend (BC, U) -> R` instead of `CustomBehaviourContextAndTypeReceiver<BC, R, U>` (no changes in api in fact)
## 29.0.1
* `Core`:
* Fix of [#917](https://github.com/InsanusMokrassar/ktgbotapi/issues/917): all `OrderInfo` fields now have defaults nulls
## 29.0.0
**THIS UPDATE CONTAINS ADDING SUPPORT OF [Telegram Bots API 9.2](https://core.telegram.org/bots/api-changelog#august-15-2025)**
**THIS UPDATE CONTAINS BREAKING CHANGES**
* `Core`:
* Add function `firstOfOrNull(vararg suspend () -> T): T?`
* Change logic of `firstOf` - now it works based on merged flows and __do not require__ `CoroutineScope` as receiver
## 28.0.3
* `Core`:
* Add passing of default engines in `HttpClient` constructors
## 28.0.2
* `Core`:
* [#1001](https://github.com/InsanusMokrassar/ktgbotapi/issues/1001) - `[Bug] Invalid detection of isCausedByCancellation()`
* [#1002](https://github.com/InsanusMokrassar/ktgbotapi/issues/1002) - `Unable to handle UnauthorizedException with buildBehaviourWithLongPolling`
## 28.0.1
* `Version`:
* `Kotlin`: `2.2.0` -> `2.2.10`
* `MicroUtils`: `0.26.2` -> `0.26.3`
* `Ktor`: `3.2.2` -> `3.2.3`
* `Core`:
* Let all `OptionallyMessageThreadRequest` inheritors to use `@EncodeDefault` annotation to fix default value passing
## 28.0.0
**THIS UPDATE CONTAINS BREAKING CHANGES**
* `Core`:
* Add `firstOf` extension
* `BehaviourBuilder`:
* All builders for behaviours got boolean `useDefaultSubcontextInitialAction`
* Add opportunity to pass `BehaviourContextData` in `DefaultBehaviourContext` constructor and `copy` method
* By default, commands to other bots will be ignored in triggers and waiters
## 27.1.2
* `Core`:
* Try to fix cancelling on timeout for long polling
* Since this update phrase `Something web wrong` will not happen from this library 😭
## 27.1.1
* `Version`:
* `MicroUtils`: `0.26.1` -> `0.26.2`
* `Core`:
* Make `BusinessLocation#location` optional (fix of [#990](https://github.com/InsanusMokrassar/ktgbotapi/issues/990))
## 27.1.0
* `Core`:
* Improve support of local bot api servers files. Next call factories will try to resolve file locally before real call:
* [DownloadFileRequestCallFactory.kt](tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/base/DownloadFileRequestCallFactory.kt) (for [DownloadFile.kt](tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/DownloadFile.kt) as well)
* [DownloadFileChannelRequestCallFactory.kt](tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/bot/ktor/base/DownloadFileChannelRequestCallFactory.kt) (for [DownloadFileStream.kt](tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/DownloadFileStream.kt) as well)
## 27.0.0
**THIS UPDATE MAY CONTAIN BREAKING CHANGES. IN CASE OF ANY MIGRATION PROBLEMS FEEL FREE TO ASK IN [OUR CHAT](https://t.me/ktgbotapi_chat)**
* `Version`:
* `Kotlin`: `2.1.20` -> `2.2.0`
* `Serialization`: `1.8.1` -> `1.9.0`
* `Ktor`: `3.1.3` -> `3.2.2`
* `MicroUtils`: `0.25.7` -> `0.26.1`
* `KSLog`: `1.4.1` -> `1.5.0`
* `Common`:
* In most `data` classes with non-public constructors has been added `ConsistentCopyVisibility` annotation, preventing
public nature in difference with constructor
* Absence of several API methods for requests has been fixed
## 26.1.0
**THIS UPDATE CONTAINS ADDING SUPPORT OF [Telegram Bots API 9.1](https://core.telegram.org/bots/api-changelog#july-3-2025)**
**THIS UPDATE _MAY_ CONTAINS BREAKING CHANGES**
## 26.0.0 ## 26.0.0
**THIS UPDATE CONTAINS BREAKING CHANGES IN BEHAVIOUR BUILDER AND CORE. BE CAREFUL ON UPDATE** **THIS UPDATE CONTAINS BREAKING CHANGES IN BEHAVIOUR BUILDER AND CORE. BE CAREFUL ON UPDATE**

View File

@@ -1,4 +1,4 @@
# TelegramBotAPI [![Maven Central](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi/badge.svg)](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi) [![Supported version](https://img.shields.io/badge/Telegram%20Bot%20API-9.0-blue)](https://core.telegram.org/bots/api-changelog#april-11-2025) # TelegramBotAPI [![Maven Central Version](https://img.shields.io/maven-central/v/dev.inmo/tgbotapi)](https://central.sonatype.com/artifact/dev.inmo/tgbotapi) [![Supported version](https://img.shields.io/badge/Telegram%20Bot%20API-9.5-blue)](https://core.telegram.org/bots/api-changelog#march-1-2026)
| Docs | [![KDocs](https://img.shields.io/static/v1?label=Dokka&message=KDocs&color=blue&logo=kotlin)](https://tgbotapi.inmo.dev/index.html) [![Mini tutorial](https://img.shields.io/static/v1?label=Mk&message=Docs&color=blue&logo=mkdocs)](https://docs.inmo.dev/tgbotapi/index.html) | | Docs | [![KDocs](https://img.shields.io/static/v1?label=Dokka&message=KDocs&color=blue&logo=kotlin)](https://tgbotapi.inmo.dev/index.html) [![Mini tutorial](https://img.shields.io/static/v1?label=Mk&message=Docs&color=blue&logo=mkdocs)](https://docs.inmo.dev/tgbotapi/index.html) |
|:----------------------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| |:----------------------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
@@ -120,3 +120,20 @@ suspend fun main() {
You may find examples in [this project](https://github.com/InsanusMokrassar/TelegramBotAPI-examples). Besides, you are You may find examples in [this project](https://github.com/InsanusMokrassar/TelegramBotAPI-examples). Besides, you are
always welcome in our [docs](https://docs.inmo.dev/tgbotapi/index.html) and always welcome in our [docs](https://docs.inmo.dev/tgbotapi/index.html) and
[chat](https://t.me/InMoTelegramBotAPIChat). [chat](https://t.me/InMoTelegramBotAPIChat).
### Bot API Server Notice
Under the hood, default bots realizations will try to use links
([PathedFile](tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/PathedFile.kt)#filePath) as files each
time you are trying to download file from telegram in any way - via saving to file, use stream or download as byte array.
To let bot correctly download files from bot api server, you must:
* Run bot api server locally
to proxy requests for files to the server where bot api server has been hosted
* In case of local bot api server (shared one host machine) you must ensure that access to bot api server has been
granted for your bot. For example, [aiogram/telegram-bot-api](https://hub.docker.com/r/aiogram/telegram-bot-api) image
use `101` UID/GID in linux for user and group as owners. So, your bot must run under user included in `101` group
(like `systemd-journal`) or be `101` UID user (like `systemd-resolve`)
* **OR** Use some reverse proxy (like nginx). It will allow you to broadcast your bots files without linux rights problems
* Set [TelegramAPIUrlsKeeper](tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/TelegramAPIUrlsKeeper.kt)#fileLinkUrlMapper
to map urls to let bot execute requests to your nginx proxy

View File

@@ -27,8 +27,8 @@ if ((project.hasProperty('SONATYPE_USER') || System.getenv('SONATYPE_USER') != n
centralPortal { centralPortal {
username = project.hasProperty('SONATYPE_USER') ? project.property('SONATYPE_USER') : System.getenv('SONATYPE_USER') username = project.hasProperty('SONATYPE_USER') ? project.property('SONATYPE_USER') : System.getenv('SONATYPE_USER')
password = project.hasProperty('SONATYPE_PASSWORD') ? project.property('SONATYPE_PASSWORD') : System.getenv('SONATYPE_PASSWORD') password = project.hasProperty('SONATYPE_PASSWORD') ? project.property('SONATYPE_PASSWORD') : System.getenv('SONATYPE_PASSWORD')
verificationTimeout = Duration.ofSeconds(0) validationTimeout = Duration.ofSeconds(0)
publishingType = "USER_MANAGED" publishingType = System.getenv('PUBLISHING_TYPE') != "" ? System.getenv('PUBLISHING_TYPE') : "USER_MANAGED"
} }
publishAllProjectsProbablyBreakingProjectIsolation() publishAllProjectsProbablyBreakingProjectIsolation()

View File

@@ -6,4 +6,4 @@ kotlin.incremental=true
kotlin.incremental.js=true kotlin.incremental.js=true
library_group=dev.inmo library_group=dev.inmo
library_version=26.0.0 library_version=32.0.0

View File

@@ -1,28 +1,28 @@
[versions] [versions]
kotlin = "2.1.20" kotlin = "2.3.10"
kotlin-serialization = "1.8.1" kotlin-serialization = "1.10.0"
kotlin-coroutines = "1.10.2" kotlin-coroutines = "1.10.2"
javax-activation = "1.1.1" javax-activation = "1.1.1"
korlibs = "5.4.0" korlibs = "5.4.0"
uuid = "0.8.4" uuid = "0.8.4"
ktor = "3.1.3" ktor = "3.4.1"
ksp = "2.1.20-1.0.31" ksp = "2.3.6"
kotlin-poet = "1.18.1" kotlin-poet = "2.2.0"
microutils = "0.25.7" microutils = "0.29.1"
kslog = "1.4.1" kslog = "1.6.0"
versions = "0.51.0" versions = "0.53.0"
github-release-plugin = "2.5.2" github-release-plugin = "2.5.2"
dokka = "2.0.0" dokka = "2.0.0"
validator = "0.17.0" validator = "0.18.1"
nmcp = "0.1.5" nmcp = "1.4.4"
[libraries] [libraries]
@@ -37,6 +37,8 @@ kotlin-test-js = { module = "org.jetbrains.kotlin:kotlin-test-js", version.ref =
ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" } ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" }
ktor-client-cio = { module = "io.ktor:ktor-client-cio", version.ref = "ktor" } ktor-client-cio = { module = "io.ktor:ktor-client-cio", version.ref = "ktor" }
ktor-client-java = { module = "io.ktor:ktor-client-java", version.ref = "ktor" }
ktor-client-js = { module = "io.ktor:ktor-client-js", version.ref = "ktor" }
ktor-client-curl = { module = "io.ktor:ktor-client-curl", version.ref = "ktor" } ktor-client-curl = { module = "io.ktor:ktor-client-curl", version.ref = "ktor" }
ktor-client-winhttp = { module = "io.ktor:ktor-client-winhttp", version.ref = "ktor" } ktor-client-winhttp = { module = "io.ktor:ktor-client-winhttp", version.ref = "ktor" }
ktor-server = { module = "io.ktor:ktor-server", version.ref = "ktor" } ktor-server = { module = "io.ktor:ktor-server", version.ref = "ktor" }

View File

@@ -4,6 +4,9 @@ project.group = "$group"
apply from: "$mpp_publish" apply from: "$mpp_publish"
kotlin { kotlin {
compilerOptions {
freeCompilerArgs.add("-Xcontext-parameters")
}
js (IR) { js (IR) {
browser() browser()
nodejs() nodejs()

View File

@@ -2,6 +2,9 @@ project.version = "$library_version"
project.group = "$library_group" project.group = "$library_group"
kotlin { kotlin {
compilerOptions {
freeCompilerArgs.add("-Xcontext-parameters")
}
jvm { jvm {
compilations.main { compilations.main {
kotlinOptions { kotlinOptions {

File diff suppressed because it is too large Load Diff

View File

@@ -12,10 +12,11 @@ import io.ktor.client.engine.*
* @param ktorClientEngine Engine like [io.ktor.client.engine.cio.CIO] * @param ktorClientEngine Engine like [io.ktor.client.engine.cio.CIO]
* @param ktorClientConfig Config block for preconfiguring of bot [HttpClient] * @param ktorClientConfig Config block for preconfiguring of bot [HttpClient]
*/ */
@ConsistentCopyVisibility
public data class BotBuilder internal constructor( public data class BotBuilder internal constructor(
var proxy: ProxyConfig? = null, var proxy: ProxyConfig? = null,
var ktorClientEngineFactory: HttpClientEngineFactory<HttpClientEngineConfig>? = null, var ktorClientEngineFactory: HttpClientEngineFactory<HttpClientEngineConfig>? = null,
var ktorClientConfig: (HttpClientConfig<*>.() -> Unit) ? = null var ktorClientConfig: (HttpClientConfig<*>.() -> Unit) ? = null,
) { ) {
internal fun createHttpClient(): HttpClient = ktorClientEngineFactory ?.let { internal fun createHttpClient(): HttpClient = ktorClientEngineFactory ?.let {
HttpClient( HttpClient(
@@ -41,8 +42,14 @@ public fun buildBot(
token: String, token: String,
apiUrl: String = telegramBotAPIDefaultUrl, apiUrl: String = telegramBotAPIDefaultUrl,
testServer: Boolean = false, testServer: Boolean = false,
fileLinkUrlMapper: TelegramAPIUrlsKeeper.(String) -> String = { "${fileBaseUrl}/$it" },
block: BotBuilder.() -> Unit block: BotBuilder.() -> Unit
): TelegramBot = telegramBot( ): TelegramBot = telegramBot(
TelegramAPIUrlsKeeper(token, testServer, apiUrl), urlsKeeper = TelegramAPIUrlsKeeper(
BotBuilder().apply(block).createHttpClient() token = token,
testServer = testServer,
hostUrl = apiUrl,
fileLinkUrlMapper = fileLinkUrlMapper
),
client = BotBuilder().apply(block).createHttpClient()
) )

View File

@@ -3,6 +3,7 @@ package dev.inmo.tgbotapi.extensions.api
import dev.inmo.tgbotapi.bot.ktor.telegramBot import dev.inmo.tgbotapi.bot.ktor.telegramBot
import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.bot.TelegramBot
import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper
import dev.inmo.tgbotapi.utils.defaultKtorEngine
import dev.inmo.tgbotapi.utils.telegramBotAPIDefaultUrl import dev.inmo.tgbotapi.utils.telegramBotAPIDefaultUrl
import io.ktor.client.HttpClient import io.ktor.client.HttpClient
import io.ktor.client.HttpClientConfig import io.ktor.client.HttpClientConfig
@@ -13,7 +14,7 @@ import io.ktor.client.engine.*
*/ */
public fun telegramBot( public fun telegramBot(
urlsKeeper: TelegramAPIUrlsKeeper, urlsKeeper: TelegramAPIUrlsKeeper,
client: HttpClient = HttpClient() client: HttpClient = HttpClient(defaultKtorEngine)
): TelegramBot = telegramBot(urlsKeeper) { ): TelegramBot = telegramBot(urlsKeeper) {
this.client = client this.client = client
} }
@@ -63,22 +64,24 @@ public inline fun telegramBot(
* Allows to create bot using bot [token], [apiUrl] (for custom api servers) and already prepared [client] * Allows to create bot using bot [token], [apiUrl] (for custom api servers) and already prepared [client]
*/ */
@Suppress("NOTHING_TO_INLINE") @Suppress("NOTHING_TO_INLINE")
public inline fun telegramBot( public fun telegramBot(
token: String, token: String,
apiUrl: String = telegramBotAPIDefaultUrl, apiUrl: String = telegramBotAPIDefaultUrl,
testServer: Boolean = false, testServer: Boolean = false,
client: HttpClient = HttpClient() fileLinkUrlMapper: TelegramAPIUrlsKeeper.(String) -> String = { "${fileBaseUrl}/$it" },
): TelegramBot = telegramBot(TelegramAPIUrlsKeeper(token, testServer, apiUrl), client) client: HttpClient = HttpClient(defaultKtorEngine)
): TelegramBot = telegramBot(TelegramAPIUrlsKeeper(token, testServer, apiUrl, fileLinkUrlMapper), client)
@Suppress("NOTHING_TO_INLINE") @Suppress("NOTHING_TO_INLINE")
public inline fun <T: HttpClientEngineConfig> telegramBot( public fun <T: HttpClientEngineConfig> telegramBot(
token: String, token: String,
clientFactory: HttpClientEngineFactory<T>, clientFactory: HttpClientEngineFactory<T>,
apiUrl: String = telegramBotAPIDefaultUrl, apiUrl: String = telegramBotAPIDefaultUrl,
testServer: Boolean = false, testServer: Boolean = false,
noinline clientConfig: HttpClientConfig<T>.() -> Unit = {} fileLinkUrlMapper: TelegramAPIUrlsKeeper.(String) -> String = { "${fileBaseUrl}/$it" },
clientConfig: HttpClientConfig<T>.() -> Unit = {}
): TelegramBot = telegramBot( ): TelegramBot = telegramBot(
TelegramAPIUrlsKeeper(token, testServer, apiUrl), TelegramAPIUrlsKeeper(token, testServer, apiUrl, fileLinkUrlMapper),
clientFactory, clientFactory,
clientConfig clientConfig
) )
@@ -87,15 +90,15 @@ public inline fun <T: HttpClientEngineConfig> telegramBot(
* Allows to create bot using bot [token] and specify [HttpClientEngine] by passing [clientEngine] param and optionally * Allows to create bot using bot [token] and specify [HttpClientEngine] by passing [clientEngine] param and optionally
* configure [HttpClient] using [clientConfig] * configure [HttpClient] using [clientConfig]
*/ */
@Suppress("NOTHING_TO_INLINE") public fun telegramBot(
public inline fun telegramBot(
token: String, token: String,
clientEngine: HttpClientEngine, clientEngine: HttpClientEngine,
apiUrl: String = telegramBotAPIDefaultUrl, apiUrl: String = telegramBotAPIDefaultUrl,
testServer: Boolean = false, testServer: Boolean = false,
noinline clientConfig: HttpClientConfig<*>.() -> Unit = {} fileLinkUrlMapper: TelegramAPIUrlsKeeper.(String) -> String = { "${fileBaseUrl}/$it" },
clientConfig: HttpClientConfig<*>.() -> Unit = {}
): TelegramBot = telegramBot( ): TelegramBot = telegramBot(
TelegramAPIUrlsKeeper(token, testServer, apiUrl), TelegramAPIUrlsKeeper(token, testServer, apiUrl, fileLinkUrlMapper),
clientEngine, clientEngine,
clientConfig clientConfig
) )
@@ -104,13 +107,13 @@ public inline fun telegramBot(
* Allows to create bot using bot [token] and [apiUrl] and specify [HttpClientEngine] by configuring [HttpClient] using * Allows to create bot using bot [token] and [apiUrl] and specify [HttpClientEngine] by configuring [HttpClient] using
* [clientConfig] * [clientConfig]
*/ */
@Suppress("NOTHING_TO_INLINE") public fun telegramBot(
public inline fun telegramBot(
token: String, token: String,
apiUrl: String = telegramBotAPIDefaultUrl, apiUrl: String = telegramBotAPIDefaultUrl,
testServer: Boolean = false, testServer: Boolean = false,
noinline clientConfig: HttpClientConfig<*>.() -> Unit fileLinkUrlMapper: TelegramAPIUrlsKeeper.(String) -> String = { "${fileBaseUrl}/$it" },
clientConfig: HttpClientConfig<*>.() -> Unit
): TelegramBot = telegramBot( ): TelegramBot = telegramBot(
TelegramAPIUrlsKeeper(token, testServer, apiUrl), TelegramAPIUrlsKeeper(token, testServer, apiUrl, fileLinkUrlMapper),
clientConfig clientConfig
) )

View File

@@ -3,5 +3,4 @@ package dev.inmo.tgbotapi.extensions.api
import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.bot.TelegramBot
import dev.inmo.tgbotapi.requests.local.Close import dev.inmo.tgbotapi.requests.local.Close
@Suppress("unused") public suspend inline fun TelegramBot.executeClose(): Unit = execute(Close)
public suspend inline fun TelegramBot.close(): Boolean = execute(Close)

View File

@@ -12,42 +12,42 @@ import dev.inmo.tgbotapi.types.message.content.MediaGroupCollectionContent
public suspend fun TelegramBot.deleteMessage( public suspend fun TelegramBot.deleteMessage(
chatId: ChatIdentifier, chatId: ChatIdentifier,
messageId: MessageId messageId: MessageId
): Boolean = execute( ): Unit = execute(
DeleteMessage(chatId, messageId) DeleteMessage(chatId, messageId)
) )
public suspend fun TelegramBot.deleteMessage( public suspend fun TelegramBot.deleteMessage(
chat: Chat, chat: Chat,
messageId: MessageId messageId: MessageId
): Boolean = deleteMessage(chat.id, messageId) ): Unit = deleteMessage(chat.id, messageId)
public suspend fun TelegramBot.deleteMessage( public suspend fun TelegramBot.deleteMessage(
message: AccessibleMessage message: AccessibleMessage
): Boolean { ): Unit {
val mediaGroupContent = ((message as? ContentMessage<*>) ?.content as? MediaGroupCollectionContent<*>) val mediaGroupContent = ((message as? ContentMessage<*>) ?.content as? MediaGroupCollectionContent<*>)
if (mediaGroupContent == null) { if (mediaGroupContent == null) {
return deleteMessage(message.chat, message.messageId) deleteMessage(message.chat, message.messageId)
} else { } else {
return mediaGroupContent.group.map { mediaGroupContent.group.forEach {
deleteMessage(it.sourceMessage) deleteMessage(it.sourceMessage)
}.all { it } }
} }
} }
public suspend fun TelegramBot.delete( public suspend fun TelegramBot.delete(
chatId: ChatIdentifier, chatId: ChatIdentifier,
messageId: MessageId messageId: MessageId
): Boolean = deleteMessage(chatId, messageId) ): Unit = deleteMessage(chatId, messageId)
public suspend fun TelegramBot.delete( public suspend fun TelegramBot.delete(
chat: Chat, chat: Chat,
messageId: MessageId messageId: MessageId
): Boolean = deleteMessage(chat, messageId) ): Unit = deleteMessage(chat, messageId)
public suspend fun TelegramBot.delete( public suspend fun TelegramBot.delete(
message: AccessibleMessage message: AccessibleMessage
): Boolean = deleteMessage(message) ): Unit = deleteMessage(message)
public suspend fun AccessibleMessage.delete( public suspend fun AccessibleMessage.delete(
requestsExecutor: TelegramBot requestsExecutor: TelegramBot
): Boolean = requestsExecutor.deleteMessage(this) ): Unit = requestsExecutor.deleteMessage(this)

View File

@@ -10,52 +10,52 @@ import kotlin.jvm.JvmName
public suspend fun TelegramBot.deleteMessages( public suspend fun TelegramBot.deleteMessages(
chatId: ChatIdentifier, chatId: ChatIdentifier,
messageIds: List<MessageId> messageIds: List<MessageId>
): Boolean = messageIds.chunked(deleteMessagesLimit.last).map { ): Unit = messageIds.chunked(deleteMessagesLimit.last).forEach {
execute( execute(
DeleteMessages( DeleteMessages(
chatId = chatId, chatId = chatId,
messageIds = it messageIds = it
) )
) )
}.all { it } }
public suspend fun TelegramBot.deleteMessages( public suspend fun TelegramBot.deleteMessages(
chatId: ChatIdentifier, chatId: ChatIdentifier,
messageIds: Array<MessageId> messageIds: Array<MessageId>
): Boolean = deleteMessages( ): Unit = deleteMessages(
chatId = chatId, chatId = chatId,
messageIds = messageIds.toList() messageIds = messageIds.toList()
) )
public suspend fun TelegramBot.deleteMessages( public suspend fun TelegramBot.deleteMessages(
messagesMetas: List<Message.MetaInfo> messagesMetas: List<Message.MetaInfo>
): Boolean = messagesMetas.groupBy { it.chatId }.map { (chatId, messages) -> ): Unit = messagesMetas.groupBy { it.chatId }.forEach { (chatId, messages) ->
deleteMessages( deleteMessages(
chatId = chatId, chatId = chatId,
messageIds = messages.map { it.messageId } messageIds = messages.map { it.messageId }
) )
}.all { it } }
@JvmName("deleteMessagesWithMessages") @JvmName("deleteMessagesWithMessages")
public suspend fun TelegramBot.deleteMessages( public suspend fun TelegramBot.deleteMessages(
messages: List<AccessibleMessage> messages: List<AccessibleMessage>
): Boolean = deleteMessages(messages.map { it.metaInfo }) ): Unit = deleteMessages(messages.map { it.metaInfo })
public suspend fun TelegramBot.delete( public suspend fun TelegramBot.delete(
chatId: ChatIdentifier, chatId: ChatIdentifier,
messageIds: List<MessageId> messageIds: List<MessageId>
): Boolean = deleteMessages(chatId = chatId, messageIds = messageIds) ): Unit = deleteMessages(chatId = chatId, messageIds = messageIds)
public suspend fun TelegramBot.delete( public suspend fun TelegramBot.delete(
chatId: ChatIdentifier, chatId: ChatIdentifier,
messageIds: Array<MessageId> messageIds: Array<MessageId>
): Boolean = deleteMessages(chatId = chatId, messageIds = messageIds) ): Unit = deleteMessages(chatId = chatId, messageIds = messageIds)
public suspend fun TelegramBot.delete( public suspend fun TelegramBot.delete(
messagesMetas: List<Message.MetaInfo> messagesMetas: List<Message.MetaInfo>
): Boolean = deleteMessages(messagesMetas) ): Unit = deleteMessages(messagesMetas)
@JvmName("deleteWithMessages") @JvmName("deleteWithMessages")
public suspend fun TelegramBot.delete( public suspend fun TelegramBot.delete(
messages: List<AccessibleMessage> messages: List<AccessibleMessage>
): Boolean = deleteMessages(messages) ): Unit = deleteMessages(messages)

View File

@@ -3,12 +3,15 @@ package dev.inmo.tgbotapi.extensions.api
import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.bot.TelegramBot
import dev.inmo.tgbotapi.requests.ForwardMessage import dev.inmo.tgbotapi.requests.ForwardMessage
import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.ChatIdentifier
import dev.inmo.tgbotapi.types.DirectMessageThreadId
import dev.inmo.tgbotapi.types.EffectId
import dev.inmo.tgbotapi.types.MessageId import dev.inmo.tgbotapi.types.MessageId
import dev.inmo.tgbotapi.types.MessageThreadId import dev.inmo.tgbotapi.types.MessageThreadId
import dev.inmo.tgbotapi.types.Seconds import dev.inmo.tgbotapi.types.Seconds
import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.chat.Chat
import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage
import dev.inmo.tgbotapi.types.message.abstracts.PossiblyForwardedMessage import dev.inmo.tgbotapi.types.message.abstracts.PossiblyForwardedMessage
import dev.inmo.tgbotapi.types.directMessageThreadId
import dev.inmo.tgbotapi.types.threadId import dev.inmo.tgbotapi.types.threadId
public suspend fun TelegramBot.forwardMessage( public suspend fun TelegramBot.forwardMessage(
@@ -16,11 +19,23 @@ public suspend fun TelegramBot.forwardMessage(
toChatId: ChatIdentifier, toChatId: ChatIdentifier,
messageId: MessageId, messageId: MessageId,
threadId: MessageThreadId? = toChatId.threadId, threadId: MessageThreadId? = toChatId.threadId,
directMessageThreadId: DirectMessageThreadId? = toChatId.directMessageThreadId,
startTimestamp: Seconds? = null, startTimestamp: Seconds? = null,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false protectContent: Boolean = false,
effectId: EffectId? = null
): PossiblyForwardedMessage = execute( ): PossiblyForwardedMessage = execute(
ForwardMessage(fromChatId, toChatId, messageId, threadId, startTimestamp, disableNotification, protectContent) ForwardMessage(
fromChatId = fromChatId,
toChatId = toChatId,
messageId = messageId,
threadId = threadId,
directMessageThreadId = directMessageThreadId,
startTimestamp = startTimestamp,
disableNotification = disableNotification,
protectContent = protectContent,
effectId = effectId
)
) )
public suspend fun TelegramBot.forwardMessage( public suspend fun TelegramBot.forwardMessage(
@@ -28,45 +43,105 @@ public suspend fun TelegramBot.forwardMessage(
toChatId: ChatIdentifier, toChatId: ChatIdentifier,
messageId: MessageId, messageId: MessageId,
threadId: MessageThreadId? = toChatId.threadId, threadId: MessageThreadId? = toChatId.threadId,
directMessageThreadId: DirectMessageThreadId? = toChatId.directMessageThreadId,
startTimestamp: Seconds? = null, startTimestamp: Seconds? = null,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false protectContent: Boolean = false,
): PossiblyForwardedMessage = forwardMessage(fromChat.id, toChatId, messageId, threadId, startTimestamp, disableNotification, protectContent) effectId: EffectId? = null
): PossiblyForwardedMessage = forwardMessage(
fromChatId = fromChat.id,
toChatId = toChatId,
messageId = messageId,
threadId = threadId,
directMessageThreadId = directMessageThreadId,
startTimestamp = startTimestamp,
disableNotification = disableNotification,
protectContent = protectContent,
effectId = effectId
)
public suspend fun TelegramBot.forwardMessage( public suspend fun TelegramBot.forwardMessage(
fromChatId: ChatIdentifier, fromChatId: ChatIdentifier,
toChat: Chat, toChat: Chat,
messageId: MessageId, messageId: MessageId,
threadId: MessageThreadId? = toChat.id.threadId, threadId: MessageThreadId? = toChat.id.threadId,
directMessageThreadId: DirectMessageThreadId? = toChat.id.directMessageThreadId,
startTimestamp: Seconds? = null, startTimestamp: Seconds? = null,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false protectContent: Boolean = false,
): PossiblyForwardedMessage = forwardMessage(fromChatId, toChat.id, messageId, threadId, startTimestamp, disableNotification, protectContent) effectId: EffectId? = null
): PossiblyForwardedMessage = forwardMessage(
fromChatId = fromChatId,
toChatId = toChat.id,
messageId = messageId,
threadId = threadId,
directMessageThreadId = directMessageThreadId,
startTimestamp = startTimestamp,
disableNotification = disableNotification,
protectContent = protectContent,
effectId = effectId
)
public suspend fun TelegramBot.forwardMessage( public suspend fun TelegramBot.forwardMessage(
fromChat: Chat, fromChat: Chat,
toChat: Chat, toChat: Chat,
messageId: MessageId, messageId: MessageId,
threadId: MessageThreadId? = toChat.id.threadId, threadId: MessageThreadId? = toChat.id.threadId,
directMessageThreadId: DirectMessageThreadId? = toChat.id.directMessageThreadId,
startTimestamp: Seconds? = null, startTimestamp: Seconds? = null,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false protectContent: Boolean = false,
): PossiblyForwardedMessage = forwardMessage(fromChat.id, toChat.id, messageId, threadId, startTimestamp, disableNotification, protectContent) effectId: EffectId? = null
): PossiblyForwardedMessage = forwardMessage(
fromChatId = fromChat.id,
toChatId = toChat.id,
messageId = messageId,
threadId = threadId,
directMessageThreadId = directMessageThreadId,
startTimestamp = startTimestamp,
disableNotification = disableNotification,
protectContent = protectContent,
effectId = effectId
)
public suspend fun TelegramBot.forwardMessage( public suspend fun TelegramBot.forwardMessage(
toChatId: ChatIdentifier, toChatId: ChatIdentifier,
message: AccessibleMessage, message: AccessibleMessage,
threadId: MessageThreadId? = toChatId.threadId, threadId: MessageThreadId? = toChatId.threadId,
directMessageThreadId: DirectMessageThreadId? = toChatId.directMessageThreadId,
startTimestamp: Seconds? = null, startTimestamp: Seconds? = null,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false protectContent: Boolean = false,
): PossiblyForwardedMessage = forwardMessage(message.chat, toChatId, message.messageId, threadId, startTimestamp, disableNotification, protectContent) effectId: EffectId? = null
): PossiblyForwardedMessage = forwardMessage(
fromChat = message.chat,
toChatId = toChatId,
messageId = message.messageId,
threadId = threadId,
directMessageThreadId = directMessageThreadId,
startTimestamp = startTimestamp,
disableNotification = disableNotification,
protectContent = protectContent,
effectId = effectId
)
public suspend fun TelegramBot.forwardMessage( public suspend fun TelegramBot.forwardMessage(
toChat: Chat, toChat: Chat,
message: AccessibleMessage, message: AccessibleMessage,
threadId: MessageThreadId? = toChat.id.threadId, threadId: MessageThreadId? = toChat.id.threadId,
directMessageThreadId: DirectMessageThreadId? = toChat.id.directMessageThreadId,
startTimestamp: Seconds? = null, startTimestamp: Seconds? = null,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false protectContent: Boolean = false,
): PossiblyForwardedMessage = forwardMessage(message.chat, toChat, message.messageId, threadId, startTimestamp, disableNotification, protectContent) effectId: EffectId? = null
): PossiblyForwardedMessage = forwardMessage(
fromChat = message.chat,
toChat = toChat,
messageId = message.messageId,
threadId = threadId,
directMessageThreadId = directMessageThreadId,
startTimestamp = startTimestamp,
disableNotification = disableNotification,
protectContent = protectContent,
effectId = effectId
)

View File

@@ -13,6 +13,7 @@ public suspend fun TelegramBot.forwardMessages(
fromChatId: ChatIdentifier, fromChatId: ChatIdentifier,
messageIds: List<MessageId>, messageIds: List<MessageId>,
threadId: MessageThreadId? = toChatId.threadId, threadId: MessageThreadId? = toChatId.threadId,
directMessageThreadId: DirectMessageThreadId? = toChatId.directMessageThreadId,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false, protectContent: Boolean = false,
removeCaption: Boolean = false removeCaption: Boolean = false
@@ -23,6 +24,7 @@ public suspend fun TelegramBot.forwardMessages(
fromChatId = fromChatId, fromChatId = fromChatId,
messageIds = it, messageIds = it,
threadId = threadId, threadId = threadId,
directMessageThreadId = directMessageThreadId,
disableNotification = disableNotification, disableNotification = disableNotification,
protectContent = protectContent, protectContent = protectContent,
removeCaption = removeCaption removeCaption = removeCaption
@@ -35,6 +37,7 @@ public suspend fun TelegramBot.forwardMessages(
fromChatId: ChatIdentifier, fromChatId: ChatIdentifier,
messageIds: Array<MessageId>, messageIds: Array<MessageId>,
threadId: MessageThreadId? = toChatId.threadId, threadId: MessageThreadId? = toChatId.threadId,
directMessageThreadId: DirectMessageThreadId? = toChatId.directMessageThreadId,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false, protectContent: Boolean = false,
removeCaption: Boolean = false removeCaption: Boolean = false
@@ -43,6 +46,7 @@ public suspend fun TelegramBot.forwardMessages(
fromChatId = fromChatId, fromChatId = fromChatId,
messageIds = messageIds.toList(), messageIds = messageIds.toList(),
threadId = threadId, threadId = threadId,
directMessageThreadId = directMessageThreadId,
disableNotification = disableNotification, disableNotification = disableNotification,
protectContent = protectContent, protectContent = protectContent,
removeCaption = removeCaption removeCaption = removeCaption
@@ -52,6 +56,7 @@ public suspend fun TelegramBot.forwardMessages(
toChatId: ChatIdentifier, toChatId: ChatIdentifier,
messagesMetas: List<Message.MetaInfo>, messagesMetas: List<Message.MetaInfo>,
threadId: MessageThreadId? = toChatId.threadId, threadId: MessageThreadId? = toChatId.threadId,
directMessageThreadId: DirectMessageThreadId? = toChatId.directMessageThreadId,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false, protectContent: Boolean = false,
removeCaption: Boolean = false removeCaption: Boolean = false
@@ -61,6 +66,7 @@ public suspend fun TelegramBot.forwardMessages(
fromChatId = chatId, fromChatId = chatId,
messageIds = messages.map { it.messageId }, messageIds = messages.map { it.messageId },
threadId = threadId, threadId = threadId,
directMessageThreadId = directMessageThreadId,
disableNotification = disableNotification, disableNotification = disableNotification,
protectContent = protectContent, protectContent = protectContent,
removeCaption = removeCaption removeCaption = removeCaption
@@ -72,6 +78,7 @@ public suspend fun TelegramBot.forwardMessages(
toChatId: ChatIdentifier, toChatId: ChatIdentifier,
messages: List<AccessibleMessage>, messages: List<AccessibleMessage>,
threadId: MessageThreadId? = toChatId.threadId, threadId: MessageThreadId? = toChatId.threadId,
directMessageThreadId: DirectMessageThreadId? = toChatId.directMessageThreadId,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false, protectContent: Boolean = false,
removeCaption: Boolean = false removeCaption: Boolean = false
@@ -79,6 +86,7 @@ public suspend fun TelegramBot.forwardMessages(
toChatId = toChatId, toChatId = toChatId,
messagesMetas = messages.map { it.metaInfo }, messagesMetas = messages.map { it.metaInfo },
threadId = threadId, threadId = threadId,
directMessageThreadId = directMessageThreadId,
disableNotification = disableNotification, disableNotification = disableNotification,
protectContent = protectContent, protectContent = protectContent,
removeCaption = removeCaption removeCaption = removeCaption
@@ -89,6 +97,7 @@ public suspend fun TelegramBot.forward(
fromChatId: ChatIdentifier, fromChatId: ChatIdentifier,
messageIds: List<MessageId>, messageIds: List<MessageId>,
threadId: MessageThreadId? = toChatId.threadId, threadId: MessageThreadId? = toChatId.threadId,
directMessageThreadId: DirectMessageThreadId? = toChatId.directMessageThreadId,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false, protectContent: Boolean = false,
removeCaption: Boolean = false removeCaption: Boolean = false
@@ -97,6 +106,7 @@ public suspend fun TelegramBot.forward(
fromChatId = fromChatId, fromChatId = fromChatId,
messageIds = messageIds, messageIds = messageIds,
threadId = threadId, threadId = threadId,
directMessageThreadId = directMessageThreadId,
disableNotification = disableNotification, disableNotification = disableNotification,
protectContent = protectContent, protectContent = protectContent,
removeCaption = removeCaption removeCaption = removeCaption
@@ -107,6 +117,7 @@ public suspend fun TelegramBot.forward(
fromChatId: ChatIdentifier, fromChatId: ChatIdentifier,
messageIds: Array<MessageId>, messageIds: Array<MessageId>,
threadId: MessageThreadId? = toChatId.threadId, threadId: MessageThreadId? = toChatId.threadId,
directMessageThreadId: DirectMessageThreadId? = toChatId.directMessageThreadId,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false, protectContent: Boolean = false,
removeCaption: Boolean = false removeCaption: Boolean = false
@@ -115,6 +126,7 @@ public suspend fun TelegramBot.forward(
fromChatId = fromChatId, fromChatId = fromChatId,
messageIds = messageIds, messageIds = messageIds,
threadId = threadId, threadId = threadId,
directMessageThreadId = directMessageThreadId,
disableNotification = disableNotification, disableNotification = disableNotification,
protectContent = protectContent, protectContent = protectContent,
removeCaption = removeCaption removeCaption = removeCaption
@@ -124,6 +136,7 @@ public suspend fun TelegramBot.forward(
toChatId: ChatIdentifier, toChatId: ChatIdentifier,
messagesMetas: List<Message.MetaInfo>, messagesMetas: List<Message.MetaInfo>,
threadId: MessageThreadId? = toChatId.threadId, threadId: MessageThreadId? = toChatId.threadId,
directMessageThreadId: DirectMessageThreadId? = toChatId.directMessageThreadId,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false, protectContent: Boolean = false,
removeCaption: Boolean = false removeCaption: Boolean = false
@@ -131,6 +144,7 @@ public suspend fun TelegramBot.forward(
toChatId = toChatId, toChatId = toChatId,
messagesMetas = messagesMetas, messagesMetas = messagesMetas,
threadId = threadId, threadId = threadId,
directMessageThreadId = directMessageThreadId,
disableNotification = disableNotification, disableNotification = disableNotification,
protectContent = protectContent, protectContent = protectContent,
removeCaption = removeCaption removeCaption = removeCaption
@@ -141,6 +155,7 @@ public suspend fun TelegramBot.forward(
toChatId: ChatIdentifier, toChatId: ChatIdentifier,
messages: List<AccessibleMessage>, messages: List<AccessibleMessage>,
threadId: MessageThreadId? = toChatId.threadId, threadId: MessageThreadId? = toChatId.threadId,
directMessageThreadId: DirectMessageThreadId? = toChatId.directMessageThreadId,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false, protectContent: Boolean = false,
removeCaption: Boolean = false removeCaption: Boolean = false
@@ -148,6 +163,7 @@ public suspend fun TelegramBot.forward(
toChatId = toChatId, toChatId = toChatId,
messages = messages, messages = messages,
threadId = threadId, threadId = threadId,
directMessageThreadId = directMessageThreadId,
disableNotification = disableNotification, disableNotification = disableNotification,
protectContent = protectContent, protectContent = protectContent,
removeCaption = removeCaption removeCaption = removeCaption

View File

@@ -17,6 +17,7 @@ internal fun List<Update>.convertWithMediaGroupUpdates(): List<Update> {
for (update in this) { for (update in this) {
val message = (update.data as? PossiblySentViaBotCommonMessage<*>) ?.let { val message = (update.data as? PossiblySentViaBotCommonMessage<*>) ?.let {
if (it.content is MediaGroupPartContent) { if (it.content is MediaGroupPartContent) {
@Suppress("UNCHECKED_CAST")
it as PossiblySentViaBotCommonMessage<MediaGroupPartContent> it as PossiblySentViaBotCommonMessage<MediaGroupPartContent>
} else { } else {
null null
@@ -48,10 +49,4 @@ internal fun List<Update>.convertWithMediaGroupUpdates(): List<Update> {
return resultUpdates return resultUpdates
} }
/** internal fun BaseEditMessageUpdate.toEditMediaGroupUpdate(): BaseEditMessageUpdate = this
* @return [EditMessageMediaGroupUpdate] in case if [this] is [EditMessageUpdate]. When [this] object is
* [EditChannelPostUpdate] instance - will return [EditChannelPostMediaGroupUpdate]
*
* @throws IllegalStateException
*/
internal fun BaseEditMessageUpdate.toEditMediaGroupUpdate() = this

View File

@@ -1,7 +1,6 @@
package dev.inmo.tgbotapi.extensions.api package dev.inmo.tgbotapi.extensions.api
import dev.inmo.micro_utils.coroutines.LinkedSupervisorScope import dev.inmo.micro_utils.coroutines.LinkedSupervisorScope
import dev.inmo.micro_utils.coroutines.launchSafelyWithoutExceptions
import dev.inmo.tgbotapi.abstracts.Headed import dev.inmo.tgbotapi.abstracts.Headed
import dev.inmo.tgbotapi.abstracts.HorizontallyAccured import dev.inmo.tgbotapi.abstracts.HorizontallyAccured
import dev.inmo.tgbotapi.abstracts.Locationed import dev.inmo.tgbotapi.abstracts.Locationed
@@ -16,9 +15,11 @@ import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
import dev.inmo.tgbotapi.types.location.LiveLocation import dev.inmo.tgbotapi.types.location.LiveLocation
import dev.inmo.tgbotapi.types.location.Location import dev.inmo.tgbotapi.types.location.Location
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
import dev.inmo.tgbotapi.types.message.content.LiveLocationContent import dev.inmo.tgbotapi.types.message.content.LiveLocationContent
import dev.inmo.tgbotapi.types.message.content.LocationContent import dev.inmo.tgbotapi.types.message.content.LocationContent
import dev.inmo.tgbotapi.utils.launchWithBotLogger
import kotlinx.coroutines.CoroutineStart import kotlinx.coroutines.CoroutineStart
import kotlinx.coroutines.currentCoroutineContext import kotlinx.coroutines.currentCoroutineContext
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
@@ -50,11 +51,13 @@ public suspend fun TelegramBot.handleLiveLocation(
locationsFlow: Flow<EditLiveLocationInfo>, locationsFlow: Flow<EditLiveLocationInfo>,
liveTimeMillis: Long = defaultLivePeriodDelayMillis, liveTimeMillis: Long = defaultLivePeriodDelayMillis,
threadId: MessageThreadId? = chatId.threadId, threadId: MessageThreadId? = chatId.threadId,
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId, businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false, protectContent: Boolean = false,
allowPaidBroadcast: Boolean = false, allowPaidBroadcast: Boolean = false,
effectId: EffectId? = null, effectId: EffectId? = null,
suggestedPostParameters: SuggestedPostParameters? = null,
replyParameters: ReplyParameters? = null, replyParameters: ReplyParameters? = null,
sentMessageFlow: FlowCollector<ContentMessage<LiveLocationContent>>? = null sentMessageFlow: FlowCollector<ContentMessage<LiveLocationContent>>? = null
) { ) {
@@ -63,7 +66,7 @@ public suspend fun TelegramBot.handleLiveLocation(
null null
} else { } else {
val scope = currentCoroutineContext().LinkedSupervisorScope() val scope = currentCoroutineContext().LinkedSupervisorScope()
scope.launchSafelyWithoutExceptions(start = CoroutineStart.LAZY) { scope.launchWithBotLogger(start = CoroutineStart.LAZY) {
while (scope.isActive) { while (scope.isActive) {
delay(liveTimeMillis) delay(liveTimeMillis)
// Remove previous location message info to resend live location message // Remove previous location message info to resend live location message
@@ -76,25 +79,27 @@ public suspend fun TelegramBot.handleLiveLocation(
if (capturedLiveLocationMessage == null) { if (capturedLiveLocationMessage == null) {
updateMessageJob ?.start() updateMessageJob ?.start()
currentLiveLocationMessage = send( currentLiveLocationMessage = send(
chatId, chatId = chatId,
it.latitude, latitude = it.latitude,
it.longitude, longitude = it.longitude,
if (liveTimeMillis == indefiniteLivePeriodDelayMillis) { livePeriod = if (liveTimeMillis == indefiniteLivePeriodDelayMillis) {
LiveLocation.INDEFINITE_LIVE_PERIOD LiveLocation.INDEFINITE_LIVE_PERIOD
} else { } else {
ceil(liveTimeMillis.toDouble() / 1000).toInt() ceil(liveTimeMillis.toDouble() / 1000).toInt()
}, },
it.horizontalAccuracy, horizontalAccuracy = it.horizontalAccuracy,
it.heading, heading = it.heading,
it.proximityAlertRadius, proximityAlertRadius = it.proximityAlertRadius,
threadId, threadId = threadId,
businessConnectionId, directMessageThreadId = directMessageThreadId,
disableNotification, businessConnectionId = businessConnectionId,
protectContent, disableNotification = disableNotification,
allowPaidBroadcast, protectContent = protectContent,
effectId, allowPaidBroadcast = allowPaidBroadcast,
replyParameters, effectId = effectId,
it.replyMarkup suggestedPostParameters = suggestedPostParameters,
replyParameters = replyParameters,
replyMarkup = it.replyMarkup
).also { ).also {
sentMessageFlow ?.emit(it) sentMessageFlow ?.emit(it)
} }
@@ -125,11 +130,13 @@ public suspend fun TelegramBot.handleLiveLocation(
locationsFlow: Flow<Location>, locationsFlow: Flow<Location>,
liveTimeMillis: Long = defaultLivePeriodDelayMillis, liveTimeMillis: Long = defaultLivePeriodDelayMillis,
threadId: MessageThreadId? = chatId.threadId, threadId: MessageThreadId? = chatId.threadId,
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId, businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false, protectContent: Boolean = false,
allowPaidBroadcast: Boolean = false, allowPaidBroadcast: Boolean = false,
effectId: EffectId? = null, effectId: EffectId? = null,
suggestedPostParameters: SuggestedPostParameters? = null,
replyParameters: ReplyParameters? = null, replyParameters: ReplyParameters? = null,
sentMessageFlow: FlowCollector<ContentMessage<LiveLocationContent>>? = null sentMessageFlow: FlowCollector<ContentMessage<LiveLocationContent>>? = null
) { ) {
@@ -147,11 +154,13 @@ public suspend fun TelegramBot.handleLiveLocation(
}, },
liveTimeMillis = liveTimeMillis, liveTimeMillis = liveTimeMillis,
threadId = threadId, threadId = threadId,
directMessageThreadId = directMessageThreadId,
businessConnectionId = businessConnectionId, businessConnectionId = businessConnectionId,
disableNotification = disableNotification, disableNotification = disableNotification,
protectContent = protectContent, protectContent = protectContent,
allowPaidBroadcast = allowPaidBroadcast, allowPaidBroadcast = allowPaidBroadcast,
effectId = effectId, effectId = effectId,
suggestedPostParameters = suggestedPostParameters,
replyParameters = replyParameters, replyParameters = replyParameters,
sentMessageFlow = sentMessageFlow sentMessageFlow = sentMessageFlow
) )
@@ -168,11 +177,13 @@ public suspend fun TelegramBot.handleLiveLocation(
locationsFlow: Flow<Pair<Double, Double>>, locationsFlow: Flow<Pair<Double, Double>>,
liveTimeMillis: Long = defaultLivePeriodDelayMillis, liveTimeMillis: Long = defaultLivePeriodDelayMillis,
threadId: MessageThreadId? = chatId.threadId, threadId: MessageThreadId? = chatId.threadId,
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId, businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false, protectContent: Boolean = false,
allowPaidBroadcast: Boolean = false, allowPaidBroadcast: Boolean = false,
effectId: EffectId? = null, effectId: EffectId? = null,
suggestedPostParameters: SuggestedPostParameters? = null,
replyParameters: ReplyParameters? = null, replyParameters: ReplyParameters? = null,
sentMessageFlow: FlowCollector<ContentMessage<LiveLocationContent>>? = null sentMessageFlow: FlowCollector<ContentMessage<LiveLocationContent>>? = null
) { ) {
@@ -186,11 +197,13 @@ public suspend fun TelegramBot.handleLiveLocation(
}, },
liveTimeMillis = liveTimeMillis, liveTimeMillis = liveTimeMillis,
threadId = threadId, threadId = threadId,
directMessageThreadId = directMessageThreadId,
businessConnectionId = businessConnectionId, businessConnectionId = businessConnectionId,
disableNotification = disableNotification, disableNotification = disableNotification,
protectContent = protectContent, protectContent = protectContent,
allowPaidBroadcast = allowPaidBroadcast, allowPaidBroadcast = allowPaidBroadcast,
effectId = effectId, effectId = effectId,
suggestedPostParameters = suggestedPostParameters,
replyParameters = replyParameters, replyParameters = replyParameters,
sentMessageFlow = sentMessageFlow sentMessageFlow = sentMessageFlow
) )

View File

@@ -1,3 +1,5 @@
@file:Suppress("KDocUnresolvedReference")
package dev.inmo.tgbotapi.extensions.api package dev.inmo.tgbotapi.extensions.api
import korlibs.time.DateTime import korlibs.time.DateTime
@@ -11,11 +13,13 @@ import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.chat.Chat
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
import dev.inmo.tgbotapi.types.location.LiveLocation import dev.inmo.tgbotapi.types.location.LiveLocation
import dev.inmo.tgbotapi.types.location.StaticLocation import dev.inmo.tgbotapi.types.location.StaticLocation
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage
import dev.inmo.tgbotapi.types.message.content.LocationContent import dev.inmo.tgbotapi.types.message.content.LocationContent
import dev.inmo.tgbotapi.utils.extensions.directMessageThreadIdOrNull
import dev.inmo.tgbotapi.utils.extensions.threadIdOrNull import dev.inmo.tgbotapi.utils.extensions.threadIdOrNull
import io.ktor.utils.io.core.Closeable import io.ktor.utils.io.core.Closeable
import korlibs.time.millisecondsLong import korlibs.time.millisecondsLong
@@ -96,11 +100,13 @@ public suspend fun TelegramBot.startLiveLocation(
initHeading: Degrees? = null, initHeading: Degrees? = null,
initProximityAlertRadius: Meters? = null, initProximityAlertRadius: Meters? = null,
threadId: MessageThreadId? = chatId.threadId, threadId: MessageThreadId? = chatId.threadId,
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId, businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false, protectContent: Boolean = false,
allowPaidBroadcast: Boolean = false, allowPaidBroadcast: Boolean = false,
effectId: EffectId? = null, effectId: EffectId? = null,
suggestedPostParameters: SuggestedPostParameters? = null,
replyParameters: ReplyParameters? = null, replyParameters: ReplyParameters? = null,
replyMarkup: KeyboardMarkup? = null replyMarkup: KeyboardMarkup? = null
): LiveLocationProvider { ): LiveLocationProvider {
@@ -115,11 +121,13 @@ public suspend fun TelegramBot.startLiveLocation(
heading = initHeading, heading = initHeading,
proximityAlertRadius = initProximityAlertRadius, proximityAlertRadius = initProximityAlertRadius,
threadId = threadId, threadId = threadId,
directMessageThreadId = directMessageThreadId,
businessConnectionId = businessConnectionId, businessConnectionId = businessConnectionId,
disableNotification = disableNotification, disableNotification = disableNotification,
protectContent = protectContent, protectContent = protectContent,
allowPaidBroadcast = allowPaidBroadcast, allowPaidBroadcast = allowPaidBroadcast,
effectId = effectId, effectId = effectId,
suggestedPostParameters = suggestedPostParameters,
replyParameters = replyParameters, replyParameters = replyParameters,
replyMarkup = replyMarkup replyMarkup = replyMarkup
) )
@@ -147,11 +155,13 @@ public suspend fun TelegramBot.startLiveLocation(
initHeading: Degrees? = null, initHeading: Degrees? = null,
initProximityAlertRadius: Meters? = null, initProximityAlertRadius: Meters? = null,
threadId: MessageThreadId? = chat.id.threadId, threadId: MessageThreadId? = chat.id.threadId,
directMessageThreadId: DirectMessageThreadId? = chat.id.directMessageThreadId,
businessConnectionId: BusinessConnectionId? = chat.id.businessConnectionId, businessConnectionId: BusinessConnectionId? = chat.id.businessConnectionId,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false, protectContent: Boolean = false,
allowPaidBroadcast: Boolean = false, allowPaidBroadcast: Boolean = false,
effectId: EffectId? = null, effectId: EffectId? = null,
suggestedPostParameters: SuggestedPostParameters? = null,
replyParameters: ReplyParameters? = null, replyParameters: ReplyParameters? = null,
replyMarkup: KeyboardMarkup? = null replyMarkup: KeyboardMarkup? = null
): LiveLocationProvider = startLiveLocation( ): LiveLocationProvider = startLiveLocation(
@@ -164,11 +174,13 @@ public suspend fun TelegramBot.startLiveLocation(
initHeading = initHeading, initHeading = initHeading,
initProximityAlertRadius = initProximityAlertRadius, initProximityAlertRadius = initProximityAlertRadius,
threadId = threadId, threadId = threadId,
directMessageThreadId = directMessageThreadId,
businessConnectionId = businessConnectionId, businessConnectionId = businessConnectionId,
disableNotification = disableNotification, disableNotification = disableNotification,
protectContent = protectContent, protectContent = protectContent,
allowPaidBroadcast = allowPaidBroadcast, allowPaidBroadcast = allowPaidBroadcast,
effectId = effectId, effectId = effectId,
suggestedPostParameters = suggestedPostParameters,
replyParameters = replyParameters, replyParameters = replyParameters,
replyMarkup = replyMarkup replyMarkup = replyMarkup
) )
@@ -186,11 +198,13 @@ public suspend fun TelegramBot.startLiveLocation(
initHeading: Degrees? = null, initHeading: Degrees? = null,
initProximityAlertRadius: Meters? = null, initProximityAlertRadius: Meters? = null,
threadId: MessageThreadId? = chatId.threadId, threadId: MessageThreadId? = chatId.threadId,
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId, businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false, protectContent: Boolean = false,
allowPaidBroadcast: Boolean = false, allowPaidBroadcast: Boolean = false,
effectId: EffectId? = null, effectId: EffectId? = null,
suggestedPostParameters: SuggestedPostParameters? = null,
replyParameters: ReplyParameters? = null, replyParameters: ReplyParameters? = null,
replyMarkup: KeyboardMarkup? = null replyMarkup: KeyboardMarkup? = null
): LiveLocationProvider = startLiveLocation( ): LiveLocationProvider = startLiveLocation(
@@ -203,11 +217,13 @@ public suspend fun TelegramBot.startLiveLocation(
initHeading = initHeading, initHeading = initHeading,
initProximityAlertRadius = initProximityAlertRadius, initProximityAlertRadius = initProximityAlertRadius,
threadId = threadId, threadId = threadId,
directMessageThreadId = directMessageThreadId,
businessConnectionId = businessConnectionId, businessConnectionId = businessConnectionId,
disableNotification = disableNotification, disableNotification = disableNotification,
protectContent = protectContent, protectContent = protectContent,
allowPaidBroadcast = allowPaidBroadcast, allowPaidBroadcast = allowPaidBroadcast,
effectId = effectId, effectId = effectId,
suggestedPostParameters = suggestedPostParameters,
replyParameters = replyParameters, replyParameters = replyParameters,
replyMarkup = replyMarkup replyMarkup = replyMarkup
) )
@@ -225,11 +241,13 @@ public suspend fun TelegramBot.startLiveLocation(
initHeading: Degrees? = null, initHeading: Degrees? = null,
initProximityAlertRadius: Meters? = null, initProximityAlertRadius: Meters? = null,
threadId: MessageThreadId? = chat.id.threadId, threadId: MessageThreadId? = chat.id.threadId,
directMessageThreadId: DirectMessageThreadId? = chat.id.directMessageThreadId,
businessConnectionId: BusinessConnectionId? = chat.id.businessConnectionId, businessConnectionId: BusinessConnectionId? = chat.id.businessConnectionId,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false, protectContent: Boolean = false,
allowPaidBroadcast: Boolean = false, allowPaidBroadcast: Boolean = false,
effectId: EffectId? = null, effectId: EffectId? = null,
suggestedPostParameters: SuggestedPostParameters? = null,
replyParameters: ReplyParameters? = null, replyParameters: ReplyParameters? = null,
replyMarkup: KeyboardMarkup? = null replyMarkup: KeyboardMarkup? = null
): LiveLocationProvider = startLiveLocation( ): LiveLocationProvider = startLiveLocation(
@@ -242,11 +260,13 @@ public suspend fun TelegramBot.startLiveLocation(
initHeading = initHeading, initHeading = initHeading,
initProximityAlertRadius = initProximityAlertRadius, initProximityAlertRadius = initProximityAlertRadius,
threadId = threadId, threadId = threadId,
directMessageThreadId = directMessageThreadId,
businessConnectionId = businessConnectionId, businessConnectionId = businessConnectionId,
disableNotification = disableNotification, disableNotification = disableNotification,
protectContent = protectContent, protectContent = protectContent,
allowPaidBroadcast = allowPaidBroadcast, allowPaidBroadcast = allowPaidBroadcast,
effectId = effectId, effectId = effectId,
suggestedPostParameters = suggestedPostParameters,
replyParameters = replyParameters, replyParameters = replyParameters,
replyMarkup = replyMarkup replyMarkup = replyMarkup
) )
@@ -265,11 +285,13 @@ public suspend inline fun TelegramBot.replyWithLiveLocation(
initHeading: Degrees? = null, initHeading: Degrees? = null,
initProximityAlertRadius: Meters? = null, initProximityAlertRadius: Meters? = null,
threadId: MessageThreadId? = to.threadIdOrNull, threadId: MessageThreadId? = to.threadIdOrNull,
directMessageThreadId: DirectMessageThreadId? = to.directMessageThreadIdOrNull,
businessConnectionId: BusinessConnectionId? = to.businessConnectionId, businessConnectionId: BusinessConnectionId? = to.businessConnectionId,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false, protectContent: Boolean = false,
allowPaidBroadcast: Boolean = false, allowPaidBroadcast: Boolean = false,
effectId: EffectId? = null, effectId: EffectId? = null,
suggestedPostParameters: SuggestedPostParameters? = null,
allowSendingWithoutReply: Boolean? = null, allowSendingWithoutReply: Boolean? = null,
replyMarkup: KeyboardMarkup? = null replyMarkup: KeyboardMarkup? = null
): LiveLocationProvider = startLiveLocation( ): LiveLocationProvider = startLiveLocation(
@@ -282,11 +304,13 @@ public suspend inline fun TelegramBot.replyWithLiveLocation(
initHeading = initHeading, initHeading = initHeading,
initProximityAlertRadius = initProximityAlertRadius, initProximityAlertRadius = initProximityAlertRadius,
threadId = threadId, threadId = threadId,
directMessageThreadId = directMessageThreadId,
businessConnectionId = businessConnectionId, businessConnectionId = businessConnectionId,
disableNotification = disableNotification, disableNotification = disableNotification,
protectContent = protectContent, protectContent = protectContent,
allowPaidBroadcast = allowPaidBroadcast, allowPaidBroadcast = allowPaidBroadcast,
effectId = effectId, effectId = effectId,
suggestedPostParameters = suggestedPostParameters,
replyParameters = ReplyParameters(to.metaInfo, allowSendingWithoutReply = allowSendingWithoutReply), replyParameters = ReplyParameters(to.metaInfo, allowSendingWithoutReply = allowSendingWithoutReply),
replyMarkup = replyMarkup replyMarkup = replyMarkup
) )
@@ -304,11 +328,13 @@ public suspend inline fun TelegramBot.replyWithLiveLocation(
initHeading: Degrees? = null, initHeading: Degrees? = null,
initProximityAlertRadius: Meters? = null, initProximityAlertRadius: Meters? = null,
threadId: MessageThreadId? = to.threadIdOrNull, threadId: MessageThreadId? = to.threadIdOrNull,
directMessageThreadId: DirectMessageThreadId? = to.directMessageThreadIdOrNull,
businessConnectionId: BusinessConnectionId? = to.businessConnectionId, businessConnectionId: BusinessConnectionId? = to.businessConnectionId,
disableNotification: Boolean = false, disableNotification: Boolean = false,
protectContent: Boolean = false, protectContent: Boolean = false,
allowPaidBroadcast: Boolean = false, allowPaidBroadcast: Boolean = false,
effectId: EffectId? = null, effectId: EffectId? = null,
suggestedPostParameters: SuggestedPostParameters? = null,
allowSendingWithoutReply: Boolean? = null, allowSendingWithoutReply: Boolean? = null,
replyMarkup: KeyboardMarkup? = null replyMarkup: KeyboardMarkup? = null
): LiveLocationProvider = startLiveLocation( ): LiveLocationProvider = startLiveLocation(
@@ -320,11 +346,13 @@ public suspend inline fun TelegramBot.replyWithLiveLocation(
initHeading = initHeading, initHeading = initHeading,
initProximityAlertRadius = initProximityAlertRadius, initProximityAlertRadius = initProximityAlertRadius,
threadId = threadId, threadId = threadId,
directMessageThreadId = directMessageThreadId,
businessConnectionId = businessConnectionId, businessConnectionId = businessConnectionId,
disableNotification = disableNotification, disableNotification = disableNotification,
protectContent = protectContent, protectContent = protectContent,
allowPaidBroadcast = allowPaidBroadcast, allowPaidBroadcast = allowPaidBroadcast,
effectId = effectId, effectId = effectId,
suggestedPostParameters = suggestedPostParameters,
replyParameters = ReplyParameters(to.metaInfo, allowSendingWithoutReply = allowSendingWithoutReply), replyParameters = ReplyParameters(to.metaInfo, allowSendingWithoutReply = allowSendingWithoutReply),
replyMarkup = replyMarkup replyMarkup = replyMarkup
) )

View File

@@ -3,4 +3,4 @@ package dev.inmo.tgbotapi.extensions.api
import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.bot.TelegramBot
import dev.inmo.tgbotapi.requests.local.LogOut import dev.inmo.tgbotapi.requests.local.LogOut
public suspend inline fun TelegramBot.logOut(): Boolean = execute(LogOut) public suspend inline fun TelegramBot.logOut(): Unit = execute(LogOut)

View File

@@ -11,7 +11,7 @@ public suspend fun TelegramBot.answerCallbackQuery(
showAlert: Boolean? = null, showAlert: Boolean? = null,
url: String? = null, url: String? = null,
cachedTimeSeconds: Int? = null cachedTimeSeconds: Int? = null
): Boolean = execute(AnswerCallbackQuery(callbackQueryId, text, showAlert, url, cachedTimeSeconds)) ): Unit = execute(AnswerCallbackQuery(callbackQueryId, text, showAlert, url, cachedTimeSeconds))
public suspend fun TelegramBot.answerCallbackQuery( public suspend fun TelegramBot.answerCallbackQuery(
callbackQuery: CallbackQuery, callbackQuery: CallbackQuery,
@@ -19,7 +19,7 @@ public suspend fun TelegramBot.answerCallbackQuery(
showAlert: Boolean? = null, showAlert: Boolean? = null,
url: String? = null, url: String? = null,
cachedTimeSeconds: Int? = null cachedTimeSeconds: Int? = null
): Boolean = answerCallbackQuery(callbackQuery.id, text, showAlert, url, cachedTimeSeconds) ): Unit = answerCallbackQuery(callbackQuery.id, text, showAlert, url, cachedTimeSeconds)
public suspend fun TelegramBot.answer( public suspend fun TelegramBot.answer(
callbackQuery: CallbackQuery, callbackQuery: CallbackQuery,
@@ -27,4 +27,4 @@ public suspend fun TelegramBot.answer(
showAlert: Boolean? = null, showAlert: Boolean? = null,
url: String? = null, url: String? = null,
cachedTimeSeconds: Int? = null cachedTimeSeconds: Int? = null
): Boolean = answerCallbackQuery(callbackQuery.id, text, showAlert, url, cachedTimeSeconds) ): Unit = answerCallbackQuery(callbackQuery.id, text, showAlert, url, cachedTimeSeconds)

View File

@@ -14,7 +14,7 @@ public suspend fun TelegramBot.answerInlineQuery(
isPersonal: Boolean? = null, isPersonal: Boolean? = null,
nextOffset: String? = null, nextOffset: String? = null,
button: InlineQueryResultsButton? = null button: InlineQueryResultsButton? = null
): Boolean = execute( ): Unit = execute(
AnswerInlineQuery(inlineQueryID, results, cachedTime, isPersonal, nextOffset, button) AnswerInlineQuery(inlineQueryID, results, cachedTime, isPersonal, nextOffset, button)
) )
@@ -25,7 +25,7 @@ public suspend fun TelegramBot.answerInlineQuery(
isPersonal: Boolean? = null, isPersonal: Boolean? = null,
nextOffset: String? = null, nextOffset: String? = null,
button: InlineQueryResultsButton? = null button: InlineQueryResultsButton? = null
): Boolean = answerInlineQuery(inlineQuery.id, results, cachedTime, isPersonal, nextOffset, button) ): Unit = answerInlineQuery(inlineQuery.id, results, cachedTime, isPersonal, nextOffset, button)
public suspend fun TelegramBot.answer( public suspend fun TelegramBot.answer(
inlineQuery: InlineQuery, inlineQuery: InlineQuery,
@@ -34,7 +34,7 @@ public suspend fun TelegramBot.answer(
isPersonal: Boolean? = null, isPersonal: Boolean? = null,
nextOffset: String? = null, nextOffset: String? = null,
button: InlineQueryResultsButton? = null button: InlineQueryResultsButton? = null
): Boolean = answerInlineQuery(inlineQuery.id, results, cachedTime, isPersonal, nextOffset, button) ): Unit = answerInlineQuery(inlineQuery.id, results, cachedTime, isPersonal, nextOffset, button)
public suspend fun TelegramBot.answerInlineQuery( public suspend fun TelegramBot.answerInlineQuery(
inlineQueryID: InlineQueryId, inlineQueryID: InlineQueryId,
@@ -44,7 +44,7 @@ public suspend fun TelegramBot.answerInlineQuery(
nextOffset: String? = null, nextOffset: String? = null,
switchPmText: String?, switchPmText: String?,
switchPmParameter: String? switchPmParameter: String?
): Boolean = execute( ): Unit = execute(
AnswerInlineQuery(inlineQueryID, results, cachedTime, isPersonal, nextOffset, switchPmText, switchPmParameter) AnswerInlineQuery(inlineQueryID, results, cachedTime, isPersonal, nextOffset, switchPmText, switchPmParameter)
) )
@@ -56,7 +56,7 @@ public suspend fun TelegramBot.answerInlineQuery(
nextOffset: String? = null, nextOffset: String? = null,
switchPmText: String?, switchPmText: String?,
switchPmParameter: String? switchPmParameter: String?
): Boolean = answerInlineQuery(inlineQuery.id, results, cachedTime, isPersonal, nextOffset, switchPmText, switchPmParameter) ): Unit = answerInlineQuery(inlineQuery.id, results, cachedTime, isPersonal, nextOffset, switchPmText, switchPmParameter)
public suspend fun TelegramBot.answer( public suspend fun TelegramBot.answer(
inlineQuery: InlineQuery, inlineQuery: InlineQuery,
@@ -66,4 +66,4 @@ public suspend fun TelegramBot.answer(
nextOffset: String? = null, nextOffset: String? = null,
switchPmText: String?, switchPmText: String?,
switchPmParameter: String? switchPmParameter: String?
): Boolean = answerInlineQuery(inlineQuery.id, results, cachedTime, isPersonal, nextOffset, switchPmText, switchPmParameter) ): Unit = answerInlineQuery(inlineQuery.id, results, cachedTime, isPersonal, nextOffset, switchPmText, switchPmParameter)

View File

@@ -8,16 +8,16 @@ import dev.inmo.tgbotapi.types.payments.PreCheckoutQuery
public suspend fun TelegramBot.answerPreCheckoutQueryOk( public suspend fun TelegramBot.answerPreCheckoutQueryOk(
id: PreCheckoutQueryId id: PreCheckoutQueryId
): Boolean = execute(AnswerPreCheckoutQueryOk(id)) ): Unit = execute(AnswerPreCheckoutQueryOk(id))
public suspend fun TelegramBot.answerPreCheckoutQueryOk( public suspend fun TelegramBot.answerPreCheckoutQueryOk(
preCheckoutQuery: PreCheckoutQuery preCheckoutQuery: PreCheckoutQuery
): Boolean = answerPreCheckoutQueryOk(preCheckoutQuery.id) ): Unit = answerPreCheckoutQueryOk(preCheckoutQuery.id)
public suspend fun TelegramBot.answerPreCheckoutQueryError( public suspend fun TelegramBot.answerPreCheckoutQueryError(
id: PreCheckoutQueryId, id: PreCheckoutQueryId,
error: String error: String
): Boolean = execute(AnswerPreCheckoutQueryError(id, error)) ): Unit = execute(AnswerPreCheckoutQueryError(id, error))
public suspend fun TelegramBot.answerPreCheckoutQueryError( public suspend fun TelegramBot.answerPreCheckoutQueryError(
preCheckoutQuery: PreCheckoutQuery, preCheckoutQuery: PreCheckoutQuery,
error: String error: String
): Boolean = answerPreCheckoutQueryError(preCheckoutQuery.id, error) ): Unit = answerPreCheckoutQueryError(preCheckoutQuery.id, error)

View File

@@ -10,19 +10,19 @@ import dev.inmo.tgbotapi.types.payments.ShippingQuery
public suspend fun TelegramBot.answerShippingQueryOk( public suspend fun TelegramBot.answerShippingQueryOk(
id: ShippingQueryId, id: ShippingQueryId,
shippingOptions: List<ShippingOption> shippingOptions: List<ShippingOption>
): Boolean = execute(AnswerShippingQueryOk(id, shippingOptions)) ): Unit = execute(AnswerShippingQueryOk(id, shippingOptions))
public suspend fun TelegramBot.answerShippingQueryOk( public suspend fun TelegramBot.answerShippingQueryOk(
shippingQuery: ShippingQuery, shippingQuery: ShippingQuery,
shippingOptions: List<ShippingOption> shippingOptions: List<ShippingOption>
): Boolean = answerShippingQueryOk(shippingQuery.id, shippingOptions) ): Unit = answerShippingQueryOk(shippingQuery.id, shippingOptions)
public suspend fun TelegramBot.answerShippingQueryError( public suspend fun TelegramBot.answerShippingQueryError(
id: ShippingQueryId, id: ShippingQueryId,
error: String error: String
): Boolean = execute(AnswerShippingQueryError(id, error)) ): Unit = execute(AnswerShippingQueryError(id, error))
public suspend fun TelegramBot.answerShippingQueryError( public suspend fun TelegramBot.answerShippingQueryError(
shippingQuery: ShippingQuery, shippingQuery: ShippingQuery,
error: String error: String
): Boolean = answerShippingQueryError(shippingQuery.id, error) ): Unit = answerShippingQueryError(shippingQuery.id, error)

View File

@@ -5,8 +5,8 @@ import dev.inmo.tgbotapi.requests.bot.ClearMyDefaultAdministratorRights
public suspend fun TelegramBot.clearMyDefaultAdministratorRights( public suspend fun TelegramBot.clearMyDefaultAdministratorRights(
forChannels: Boolean? = null forChannels: Boolean? = null
): Boolean = execute(ClearMyDefaultAdministratorRights(forChannels)) ): Unit = execute(ClearMyDefaultAdministratorRights(forChannels))
public suspend fun TelegramBot.clearMyDefaultAdministratorRightsForChannels(): Boolean = clearMyDefaultAdministratorRights(forChannels = true) public suspend fun TelegramBot.clearMyDefaultAdministratorRightsForChannels(): Unit = clearMyDefaultAdministratorRights(forChannels = true)
public suspend fun TelegramBot.clearMyDefaultAdministratorRightsForGroupsAndSupergroups(): Boolean = clearMyDefaultAdministratorRights(forChannels = false) public suspend fun TelegramBot.clearMyDefaultAdministratorRightsForGroupsAndSupergroups(): Unit = clearMyDefaultAdministratorRights(forChannels = false)

View File

@@ -9,9 +9,9 @@ import dev.inmo.tgbotapi.types.commands.BotCommandScopeDefault
public suspend fun TelegramBot.deleteMyCommands( public suspend fun TelegramBot.deleteMyCommands(
scope: BotCommandScope = BotCommandScopeDefault, scope: BotCommandScope = BotCommandScopeDefault,
languageCode: IetfLang? languageCode: IetfLang?
): Boolean = execute(DeleteMyCommands(scope, languageCode)) ): Unit = execute(DeleteMyCommands(scope, languageCode))
public suspend fun TelegramBot.deleteMyCommands( public suspend fun TelegramBot.deleteMyCommands(
scope: BotCommandScope = BotCommandScopeDefault, scope: BotCommandScope = BotCommandScopeDefault,
languageCode: String? = null languageCode: String? = null
): Boolean = deleteMyCommands(scope, languageCode ?.let(::IetfLang)) ): Unit = deleteMyCommands(scope, languageCode ?.let(::IetfLang))

View File

@@ -0,0 +1,9 @@
package dev.inmo.tgbotapi.extensions.api.bot
import dev.inmo.tgbotapi.bot.TelegramBot
import dev.inmo.tgbotapi.requests.bot.GetMe
import dev.inmo.tgbotapi.requests.bot.GetMyStarBalance
import dev.inmo.tgbotapi.types.chat.ExtendedBot
import dev.inmo.tgbotapi.types.payments.stars.StarAmount
public suspend fun TelegramBot.getMyStarBalance(): StarAmount = execute(GetMyStarBalance)

View File

@@ -0,0 +1,6 @@
package dev.inmo.tgbotapi.extensions.api.bot
import dev.inmo.tgbotapi.bot.TelegramBot
import dev.inmo.tgbotapi.requests.bot.RemoveMyProfilePhoto
public suspend fun TelegramBot.removeMyProfilePhoto(): Unit = execute(RemoveMyProfilePhoto)

View File

@@ -11,22 +11,22 @@ public suspend fun TelegramBot.setMyCommands(
commands: List<BotCommand>, commands: List<BotCommand>,
scope: BotCommandScope = BotCommandScopeDefault, scope: BotCommandScope = BotCommandScopeDefault,
languageCode: IetfLang? languageCode: IetfLang?
): Boolean = execute(SetMyCommands(commands, scope, languageCode)) ): Unit = execute(SetMyCommands(commands, scope, languageCode))
public suspend fun TelegramBot.setMyCommands( public suspend fun TelegramBot.setMyCommands(
vararg commands: BotCommand, vararg commands: BotCommand,
scope: BotCommandScope = BotCommandScopeDefault, scope: BotCommandScope = BotCommandScopeDefault,
languageCode: IetfLang? languageCode: IetfLang?
): Boolean = setMyCommands(commands.toList(), scope, languageCode) ): Unit = setMyCommands(commands.toList(), scope, languageCode)
public suspend fun TelegramBot.setMyCommands( public suspend fun TelegramBot.setMyCommands(
commands: List<BotCommand>, commands: List<BotCommand>,
scope: BotCommandScope = BotCommandScopeDefault, scope: BotCommandScope = BotCommandScopeDefault,
languageCode: String? = null languageCode: String? = null
): Boolean = setMyCommands(commands, scope, languageCode ?.let(::IetfLang)) ): Unit = setMyCommands(commands, scope, languageCode ?.let(::IetfLang))
public suspend fun TelegramBot.setMyCommands( public suspend fun TelegramBot.setMyCommands(
vararg commands: BotCommand, vararg commands: BotCommand,
scope: BotCommandScope = BotCommandScopeDefault, scope: BotCommandScope = BotCommandScopeDefault,
languageCode: String? = null languageCode: String? = null
): Boolean = setMyCommands(commands.toList(), scope, languageCode) ): Unit = setMyCommands(commands.toList(), scope, languageCode)

View File

@@ -7,12 +7,12 @@ import dev.inmo.tgbotapi.types.chat.member.ChatCommonAdministratorRights
public suspend fun TelegramBot.setMyDefaultAdministratorRights( public suspend fun TelegramBot.setMyDefaultAdministratorRights(
rights: ChatCommonAdministratorRights, rights: ChatCommonAdministratorRights,
forChannels: Boolean? = null forChannels: Boolean? = null
): Boolean = execute(SetMyDefaultAdministratorRights(rights, forChannels)) ): Unit = execute(SetMyDefaultAdministratorRights(rights, forChannels))
public suspend fun TelegramBot.setMyDefaultAdministratorRightsForChannels( public suspend fun TelegramBot.setMyDefaultAdministratorRightsForChannels(
rights: ChatCommonAdministratorRights rights: ChatCommonAdministratorRights
): Boolean = setMyDefaultAdministratorRights(rights, forChannels = true) ): Unit = setMyDefaultAdministratorRights(rights, forChannels = true)
public suspend fun TelegramBot.setMyDefaultAdministratorRightsForGroupsAndSupergroups( public suspend fun TelegramBot.setMyDefaultAdministratorRightsForGroupsAndSupergroups(
rights: ChatCommonAdministratorRights rights: ChatCommonAdministratorRights
): Boolean = setMyDefaultAdministratorRights(rights, forChannels = false) ): Unit = setMyDefaultAdministratorRights(rights, forChannels = false)

View File

@@ -11,9 +11,9 @@ import dev.inmo.tgbotapi.types.commands.BotCommandScopeDefault
public suspend fun TelegramBot.setMyDescription( public suspend fun TelegramBot.setMyDescription(
description: String? = null, description: String? = null,
languageCode: IetfLang? = null languageCode: IetfLang? = null
): Boolean = execute(SetMyDescription(description, languageCode)) ): Unit = execute(SetMyDescription(description, languageCode))
public suspend fun TelegramBot.setMyDescription( public suspend fun TelegramBot.setMyDescription(
description: String?, description: String?,
languageCode: String? languageCode: String?
): Boolean = setMyDescription(description, languageCode ?.let(::IetfLang)) ): Unit = setMyDescription(description, languageCode ?.let(::IetfLang))

View File

@@ -11,9 +11,9 @@ import dev.inmo.tgbotapi.types.commands.BotCommandScopeDefault
public suspend fun TelegramBot.setMyName( public suspend fun TelegramBot.setMyName(
name: String? = null, name: String? = null,
languageCode: IetfLang? = null languageCode: IetfLang? = null
): Boolean = execute(SetMyName(name, languageCode)) ): Unit = execute(SetMyName(name, languageCode))
public suspend fun TelegramBot.setMyName( public suspend fun TelegramBot.setMyName(
name: String?, name: String?,
languageCode: String? languageCode: String?
): Boolean = setMyName(name, languageCode ?.let(::IetfLang)) ): Unit = setMyName(name, languageCode ?.let(::IetfLang))

View File

@@ -0,0 +1,9 @@
package dev.inmo.tgbotapi.extensions.api.bot
import dev.inmo.tgbotapi.bot.TelegramBot
import dev.inmo.tgbotapi.requests.bot.SetMyProfilePhoto
import dev.inmo.tgbotapi.requests.business_connection.InputProfilePhoto
public suspend fun TelegramBot.setMyProfilePhoto(
photo: InputProfilePhoto
): Unit = execute(SetMyProfilePhoto(photo))

View File

@@ -7,9 +7,9 @@ import dev.inmo.tgbotapi.requests.bot.SetMyShortDescription
public suspend fun TelegramBot.setMyShortDescription( public suspend fun TelegramBot.setMyShortDescription(
shortDescription: String? = null, shortDescription: String? = null,
languageCode: IetfLang? = null languageCode: IetfLang? = null
): Boolean = execute(SetMyShortDescription(shortDescription, languageCode)) ): Unit = execute(SetMyShortDescription(shortDescription, languageCode))
public suspend fun TelegramBot.setMyShortDescription( public suspend fun TelegramBot.setMyShortDescription(
shortDescription: String?, shortDescription: String?,
languageCode: String? languageCode: String?
): Boolean = setMyShortDescription(shortDescription, languageCode ?.let(::IetfLang)) ): Unit = setMyShortDescription(shortDescription, languageCode ?.let(::IetfLang))

View File

@@ -11,14 +11,14 @@ import dev.inmo.tgbotapi.types.gifts.Gift
public suspend fun TelegramBot.convertGiftToStars( public suspend fun TelegramBot.convertGiftToStars(
businessConnectionId: BusinessConnectionId, businessConnectionId: BusinessConnectionId,
ownedGiftId: GiftId ownedGiftId: GiftId
): Boolean = execute( ): Unit = execute(
ConvertGiftToStars(businessConnectionId, ownedGiftId) ConvertGiftToStars(businessConnectionId, ownedGiftId)
) )
public suspend fun TelegramBot.convertGiftToStars( public suspend fun TelegramBot.convertGiftToStars(
businessConnectionId: BusinessConnectionId, businessConnectionId: BusinessConnectionId,
gift: Gift.Regular gift: Gift.Regular
): Boolean = convertGiftToStars( ): Unit = convertGiftToStars(
businessConnectionId = businessConnectionId, businessConnectionId = businessConnectionId,
ownedGiftId = with(gift) {id} ownedGiftId = with(gift) {id}
) )

View File

@@ -15,6 +15,6 @@ public suspend fun TelegramBot.deleteBusinessMessages(
businessConnectionId: BusinessConnectionId, businessConnectionId: BusinessConnectionId,
@GenerationVariant(List::class, "messages.map { it.messageId }", "messages", AccessibleMessage::class) @GenerationVariant(List::class, "messages.map { it.messageId }", "messages", AccessibleMessage::class)
messageIds: List<MessageId> messageIds: List<MessageId>
): Boolean = execute( ): Unit = execute(
DeleteBusinessMessages(businessConnectionId, messageIds) DeleteBusinessMessages(businessConnectionId, messageIds)
) )

View File

@@ -10,7 +10,7 @@ import kotlin.Boolean
import kotlin.collections.List import kotlin.collections.List
public suspend fun TelegramBot.deleteBusinessMessages(businessConnectionId: BusinessConnectionId, public suspend fun TelegramBot.deleteBusinessMessages(businessConnectionId: BusinessConnectionId,
messages: List<AccessibleMessage>): Boolean = deleteBusinessMessages( messages: List<AccessibleMessage>): Unit = deleteBusinessMessages(
businessConnectionId = businessConnectionId, messageIds = with(messages) {messages.map { businessConnectionId = businessConnectionId, messageIds = with(messages) {messages.map {
it.messageId }} it.messageId }}
) )

View File

@@ -4,7 +4,8 @@ import dev.inmo.tgbotapi.bot.TelegramBot
import dev.inmo.tgbotapi.requests.business_connection.GetBusinessAccountGifts import dev.inmo.tgbotapi.requests.business_connection.GetBusinessAccountGifts
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
import dev.inmo.tgbotapi.types.OwnedGifts import dev.inmo.tgbotapi.types.OwnedGifts
import dev.inmo.tgbotapi.types.gifts.GiftSentOrReceived import dev.inmo.tgbotapi.types.gifts.GiftSentOrReceivedEvent
import dev.inmo.tgbotapi.types.gifts.OwnedGift
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flow
import kotlin.runCatching import kotlin.runCatching
@@ -14,19 +15,23 @@ public suspend fun TelegramBot.getBusinessAccountGifts(
excludeUnsaved: Boolean = false, excludeUnsaved: Boolean = false,
excludeSaved: Boolean = false, excludeSaved: Boolean = false,
excludeUnlimited: Boolean = false, excludeUnlimited: Boolean = false,
excludeLimited: Boolean = false, excludeLimitedUpgradable: Boolean = false,
excludeLimitedNonUpgradable: Boolean = false,
excludeUnique: Boolean = false, excludeUnique: Boolean = false,
excludeFromBlockchain: Boolean = false,
sortByPrice: Boolean = false, sortByPrice: Boolean = false,
offset: String? = null, offset: String? = null,
limit: Int? = null limit: Int? = null
): OwnedGifts<GiftSentOrReceived.ReceivedInBusinessAccount> = execute( ): OwnedGifts<OwnedGift.OwnedByBusinessAccount> = execute(
GetBusinessAccountGifts( GetBusinessAccountGifts(
businessConnectionId, businessConnectionId,
excludeUnsaved, excludeUnsaved,
excludeSaved, excludeSaved,
excludeUnlimited, excludeUnlimited,
excludeLimited, excludeLimitedUpgradable,
excludeLimitedNonUpgradable,
excludeUnique, excludeUnique,
excludeFromBlockchain,
sortByPrice, sortByPrice,
offset, offset,
limit limit
@@ -43,8 +48,10 @@ public suspend fun TelegramBot.getBusinessAccountGifts(
* @param excludeUnsaved Whether to exclude unsaved gifts * @param excludeUnsaved Whether to exclude unsaved gifts
* @param excludeSaved Whether to exclude saved gifts * @param excludeSaved Whether to exclude saved gifts
* @param excludeUnlimited Whether to exclude unlimited gifts * @param excludeUnlimited Whether to exclude unlimited gifts
* @param excludeLimited Whether to exclude limited gifts * @param excludeLimitedUpgradable Whether to exclude limited upgradable gifts
* @param excludeLimitedNonUpgradable Whether to exclude limited non-upgradable gifts
* @param excludeUnique Whether to exclude unique gifts * @param excludeUnique Whether to exclude unique gifts
* @param excludeFromBlockchain Whether to exclude gifts from blockchain
* @param sortByPrice Whether to sort gifts by price * @param sortByPrice Whether to sort gifts by price
* @param initialOffset The initial offset to start fetching from. If null, starts from the beginning * @param initialOffset The initial offset to start fetching from. If null, starts from the beginning
* @param limit The maximum number of gifts to fetch per request * @param limit The maximum number of gifts to fetch per request
@@ -57,13 +64,15 @@ public fun TelegramBot.getBusinessAccountGiftsFlow(
excludeUnsaved: Boolean = false, excludeUnsaved: Boolean = false,
excludeSaved: Boolean = false, excludeSaved: Boolean = false,
excludeUnlimited: Boolean = false, excludeUnlimited: Boolean = false,
excludeLimited: Boolean = false, excludeLimitedUpgradable: Boolean = false,
excludeLimitedNonUpgradable: Boolean = false,
excludeUnique: Boolean = false, excludeUnique: Boolean = false,
excludeFromBlockchain: Boolean = false,
sortByPrice: Boolean = false, sortByPrice: Boolean = false,
initialOffset: String? = null, initialOffset: String? = null,
limit: Int? = null, limit: Int? = null,
onErrorContinueChecker: suspend (Throwable?) -> Boolean = { false } onErrorContinueChecker: suspend (Throwable?) -> Boolean = { false }
): Flow<OwnedGifts<GiftSentOrReceived.ReceivedInBusinessAccount>> = flow { ): Flow<OwnedGifts<OwnedGift.OwnedByBusinessAccount>> = flow {
var currentOffset = initialOffset var currentOffset = initialOffset
do { do {
val response = runCatching { val response = runCatching {
@@ -72,8 +81,10 @@ public fun TelegramBot.getBusinessAccountGiftsFlow(
excludeUnsaved, excludeUnsaved,
excludeSaved, excludeSaved,
excludeUnlimited, excludeUnlimited,
excludeLimited, excludeLimitedUpgradable,
excludeLimitedNonUpgradable,
excludeUnique, excludeUnique,
excludeFromBlockchain,
sortByPrice, sortByPrice,
currentOffset, currentOffset,
limit limit

View File

@@ -17,11 +17,11 @@ public suspend fun TelegramBot.readBusinessMessage(
@GenerationVariant(Chat::class, "chat.id.toChatId()", "chat") @GenerationVariant(Chat::class, "chat.id.toChatId()", "chat")
chatId: ChatId, chatId: ChatId,
messageId: MessageId messageId: MessageId
): Boolean = execute( ): Unit = execute(
ReadBusinessMessage(businessConnectionId, chatId, messageId) ReadBusinessMessage(businessConnectionId, chatId, messageId)
) )
public suspend fun TelegramBot.readBusinessMessage( public suspend fun TelegramBot.readBusinessMessage(
businessConnectionId: BusinessConnectionId, businessConnectionId: BusinessConnectionId,
message: AccessibleMessage message: AccessibleMessage
): Boolean = readBusinessMessage(businessConnectionId, message.chat.id.toChatId(), message.messageId) ): Unit = readBusinessMessage(businessConnectionId, message.chat.id.toChatId(), message.messageId)

View File

@@ -14,7 +14,7 @@ public suspend fun TelegramBot.readBusinessMessage(
businessConnectionId: BusinessConnectionId, businessConnectionId: BusinessConnectionId,
chat: Chat, chat: Chat,
messageId: MessageId, messageId: MessageId,
): Boolean = readBusinessMessage( ): Unit = readBusinessMessage(
businessConnectionId = businessConnectionId, chatId = with(chat) {chat.id.toChatId()}, messageId businessConnectionId = businessConnectionId, chatId = with(chat) {chat.id.toChatId()}, messageId
= messageId = messageId
) )

View File

@@ -7,6 +7,6 @@ import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
public suspend fun TelegramBot.removeBusinessAccountProfilePhoto( public suspend fun TelegramBot.removeBusinessAccountProfilePhoto(
businessConnectionId: BusinessConnectionId, businessConnectionId: BusinessConnectionId,
isPublic: Boolean = false isPublic: Boolean = false
): Boolean = execute( ): Unit = execute(
RemoveBusinessAccountProfilePhoto(businessConnectionId = businessConnectionId, isPublic = isPublic) RemoveBusinessAccountProfilePhoto(businessConnectionId = businessConnectionId, isPublic = isPublic)
) )

View File

@@ -7,6 +7,6 @@ import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
public suspend fun TelegramBot.setBusinessAccountBio( public suspend fun TelegramBot.setBusinessAccountBio(
businessConnectionId: BusinessConnectionId, businessConnectionId: BusinessConnectionId,
bio: String bio: String
): Boolean = execute( ): Unit = execute(
SetBusinessAccountBio(businessConnectionId, bio) SetBusinessAccountBio(businessConnectionId, bio)
) )

View File

@@ -13,7 +13,7 @@ public suspend fun TelegramBot.setBusinessAccountGiftSettings(
businessConnectionId: BusinessConnectionId, businessConnectionId: BusinessConnectionId,
showGiftButton: Boolean, showGiftButton: Boolean,
acceptedGiftTypes: AcceptedGiftTypes acceptedGiftTypes: AcceptedGiftTypes
): Boolean = execute( ): Unit = execute(
SetBusinessAccountGiftSettings( SetBusinessAccountGiftSettings(
businessConnectionId = businessConnectionId, businessConnectionId = businessConnectionId,
showGiftButton = showGiftButton, showGiftButton = showGiftButton,
@@ -28,7 +28,7 @@ public suspend fun TelegramBot.setBusinessAccountGiftSettings(
message: BusinessContentMessage<*>, message: BusinessContentMessage<*>,
showGiftButton: Boolean, showGiftButton: Boolean,
acceptedGiftTypes: AcceptedGiftTypes acceptedGiftTypes: AcceptedGiftTypes
): Boolean = setBusinessAccountGiftSettings( ): Unit = setBusinessAccountGiftSettings(
businessConnectionId = message.businessConnectionId, businessConnectionId = message.businessConnectionId,
showGiftButton = showGiftButton, showGiftButton = showGiftButton,
acceptedGiftTypes = acceptedGiftTypes acceptedGiftTypes = acceptedGiftTypes

View File

@@ -8,6 +8,6 @@ public suspend fun TelegramBot.setBusinessAccountName(
businessConnectionId: BusinessConnectionId, businessConnectionId: BusinessConnectionId,
firstName: String, firstName: String,
lastName: String? = null lastName: String? = null
): Boolean = execute( ): Unit = execute(
SetBusinessAccountName(businessConnectionId, firstName, lastName) SetBusinessAccountName(businessConnectionId, firstName, lastName)
) )

View File

@@ -9,6 +9,6 @@ public suspend fun TelegramBot.setBusinessAccountProfilePhoto(
businessConnectionId: BusinessConnectionId, businessConnectionId: BusinessConnectionId,
photo: InputProfilePhoto, photo: InputProfilePhoto,
isPublic: Boolean = false isPublic: Boolean = false
): Boolean = execute( ): Unit = execute(
SetBusinessAccountProfilePhoto(businessConnectionId, photo, isPublic) SetBusinessAccountProfilePhoto(businessConnectionId, photo, isPublic)
) )

View File

@@ -7,11 +7,9 @@ import dev.inmo.tgbotapi.requests.business_connection.SetBusinessAccountUsername
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
import dev.inmo.tgbotapi.types.Username import dev.inmo.tgbotapi.types.Username
@GenerateVariations
public suspend fun TelegramBot.setBusinessAccountUsername( public suspend fun TelegramBot.setBusinessAccountUsername(
businessConnectionId: BusinessConnectionId, businessConnectionId: BusinessConnectionId,
@GenerationVariant(String::class, "Username(username)", "username") username: Username? = null
username: Username ): Unit = execute(
): Boolean = execute(
SetBusinessAccountUsername(businessConnectionId, username) SetBusinessAccountUsername(businessConnectionId, username)
) )

View File

@@ -9,8 +9,10 @@ import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
import kotlin.Boolean import kotlin.Boolean
import kotlin.String import kotlin.String
public suspend public suspend fun TelegramBot.setBusinessAccountUsername(
fun TelegramBot.setBusinessAccountUsername(businessConnectionId: BusinessConnectionId, businessConnectionId: BusinessConnectionId,
username: String): Boolean = setBusinessAccountUsername( username: String?
businessConnectionId = businessConnectionId, username = with(username) { Username.prepare(username) } ): Unit = setBusinessAccountUsername(
businessConnectionId = businessConnectionId,
username = username ?.let { Username.prepare(username) }
) )

View File

@@ -7,6 +7,6 @@ import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
public suspend fun TelegramBot.transferBusinessAccountStars( public suspend fun TelegramBot.transferBusinessAccountStars(
businessConnectionId: BusinessConnectionId, businessConnectionId: BusinessConnectionId,
amount: Int amount: Int
): Boolean = execute( ): Unit = execute(
TransferBusinessAccountStars(businessConnectionId, amount) TransferBusinessAccountStars(businessConnectionId, amount)
) )

View File

@@ -21,7 +21,7 @@ public suspend fun TelegramBot.transferGift(
ownedGiftId: GiftId, ownedGiftId: GiftId,
newOwnerChatId: ChatId, newOwnerChatId: ChatId,
transferPaymentStarCount: Int? = null, transferPaymentStarCount: Int? = null,
): Boolean = execute( ): Unit = execute(
TransferGift( TransferGift(
businessConnectionId = businessConnectionId, businessConnectionId = businessConnectionId,
ownedGiftId = ownedGiftId, ownedGiftId = ownedGiftId,
@@ -35,7 +35,7 @@ public suspend fun TelegramBot.transferGift(
gift: Gift.Regular, gift: Gift.Regular,
newOwnerChatId: ChatId, newOwnerChatId: ChatId,
transferPaymentStarCount: Int? = null, transferPaymentStarCount: Int? = null,
): Boolean = transferGift( ): Unit = transferGift(
businessConnectionId = businessConnectionId, businessConnectionId = businessConnectionId,
ownedGiftId = gift.id, ownedGiftId = gift.id,
newOwnerChatId = newOwnerChatId, newOwnerChatId = newOwnerChatId,

View File

@@ -19,7 +19,7 @@ public suspend fun TelegramBot.convertGiftToStars(
ownedGiftId: GiftId, ownedGiftId: GiftId,
keepOriginalDetails: Boolean = false, keepOriginalDetails: Boolean = false,
starCount: Int? = null starCount: Int? = null
): Boolean = execute( ): Unit = execute(
UpgradeGift( UpgradeGift(
businessConnectionId = businessConnectionId, businessConnectionId = businessConnectionId,
ownedGiftId = ownedGiftId, ownedGiftId = ownedGiftId,
@@ -32,7 +32,7 @@ public suspend fun TelegramBot.convertGiftToStars(
businessConnectionId: BusinessConnectionId, businessConnectionId: BusinessConnectionId,
gift: Gift.Regular, gift: Gift.Regular,
keepOriginalDetails: Boolean = false, keepOriginalDetails: Boolean = false,
): Boolean = execute( ): Unit = execute(
UpgradeGift( UpgradeGift(
businessConnectionId = businessConnectionId, businessConnectionId = businessConnectionId,
ownedGiftId = gift.id, ownedGiftId = gift.id,

View File

@@ -7,8 +7,8 @@ import dev.inmo.tgbotapi.types.chat.PublicChat
public suspend fun TelegramBot.leaveChat( public suspend fun TelegramBot.leaveChat(
chatId: ChatIdentifier chatId: ChatIdentifier
): Boolean = execute(LeaveChat(chatId)) ): Unit = execute(LeaveChat(chatId))
public suspend fun TelegramBot.leaveChat( public suspend fun TelegramBot.leaveChat(
chat: PublicChat chat: PublicChat
): Boolean = leaveChat(chat.id) ): Unit = leaveChat(chat.id)

View File

@@ -10,7 +10,7 @@ import dev.inmo.tgbotapi.types.chat.Chat
public suspend fun TelegramBot.closeForumTopic( public suspend fun TelegramBot.closeForumTopic(
chatId: ChatIdentifier, chatId: ChatIdentifier,
messageThreadId: MessageThreadId messageThreadId: MessageThreadId
): Boolean = execute( ): Unit = execute(
CloseForumTopic( CloseForumTopic(
chatId, chatId,
messageThreadId messageThreadId
@@ -20,9 +20,9 @@ public suspend fun TelegramBot.closeForumTopic(
public suspend fun TelegramBot.closeForumTopic( public suspend fun TelegramBot.closeForumTopic(
chat: Chat, chat: Chat,
messageThreadId: MessageThreadId messageThreadId: MessageThreadId
): Boolean = closeForumTopic(chat.id, messageThreadId) ): Unit = closeForumTopic(chat.id, messageThreadId)
public suspend fun TelegramBot.closeForumTopic( public suspend fun TelegramBot.closeForumTopic(
chat: Chat, chat: Chat,
forumTopic: ForumTopic forumTopic: ForumTopic
): Boolean = closeForumTopic(chat.id, forumTopic.messageThreadId) ): Unit = closeForumTopic(chat.id, forumTopic.messageThreadId)

View File

@@ -10,10 +10,10 @@ import dev.inmo.tgbotapi.types.chat.Chat
public suspend fun TelegramBot.closeGeneralForumTopic( public suspend fun TelegramBot.closeGeneralForumTopic(
chatId: ChatIdentifier chatId: ChatIdentifier
): Boolean = execute( ): Unit = execute(
CloseGeneralForumTopic(chatId) CloseGeneralForumTopic(chatId)
) )
public suspend fun TelegramBot.closeGeneralForumTopic( public suspend fun TelegramBot.closeGeneralForumTopic(
chat: Chat chat: Chat
): Boolean = closeGeneralForumTopic(chat.id) ): Unit = closeGeneralForumTopic(chat.id)

View File

@@ -10,7 +10,7 @@ import dev.inmo.tgbotapi.types.chat.Chat
public suspend fun TelegramBot.deleteForumTopic( public suspend fun TelegramBot.deleteForumTopic(
chatId: ChatIdentifier, chatId: ChatIdentifier,
messageThreadId: MessageThreadId messageThreadId: MessageThreadId
): Boolean = execute( ): Unit = execute(
DeleteForumTopic( DeleteForumTopic(
chatId, chatId,
messageThreadId messageThreadId
@@ -20,14 +20,14 @@ public suspend fun TelegramBot.deleteForumTopic(
public suspend fun TelegramBot.deleteForumTopic( public suspend fun TelegramBot.deleteForumTopic(
chatId: ChatIdentifier, chatId: ChatIdentifier,
forumTopic: ForumTopic forumTopic: ForumTopic
): Boolean = deleteForumTopic(chatId, forumTopic.messageThreadId) ): Unit = deleteForumTopic(chatId, forumTopic.messageThreadId)
public suspend fun TelegramBot.deleteForumTopic( public suspend fun TelegramBot.deleteForumTopic(
chat: Chat, chat: Chat,
messageThreadId: MessageThreadId messageThreadId: MessageThreadId
): Boolean = deleteForumTopic(chat.id, messageThreadId) ): Unit = deleteForumTopic(chat.id, messageThreadId)
public suspend fun TelegramBot.deleteForumTopic( public suspend fun TelegramBot.deleteForumTopic(
chat: Chat, chat: Chat,
forumTopic: ForumTopic forumTopic: ForumTopic
): Boolean = deleteForumTopic(chat.id, forumTopic.messageThreadId) ): Unit = deleteForumTopic(chat.id, forumTopic.messageThreadId)

View File

@@ -13,7 +13,7 @@ public suspend fun TelegramBot.editForumTopic(
messageThreadId: MessageThreadId, messageThreadId: MessageThreadId,
name: String? = null, name: String? = null,
iconEmojiId: CustomEmojiId? = null iconEmojiId: CustomEmojiId? = null
): Boolean = execute( ): Unit = execute(
EditForumTopic( EditForumTopic(
chatId, chatId,
messageThreadId, messageThreadId,
@@ -27,10 +27,10 @@ public suspend fun TelegramBot.editForumTopic(
messageThreadId: MessageThreadId, messageThreadId: MessageThreadId,
name: String? = null, name: String? = null,
iconEmojiId: CustomEmojiId? = null iconEmojiId: CustomEmojiId? = null
): Boolean = editForumTopic(chat.id, messageThreadId, name, iconEmojiId) ): Unit = editForumTopic(chat.id, messageThreadId, name, iconEmojiId)
public suspend fun TelegramBot.editForumTopic( public suspend fun TelegramBot.editForumTopic(
chatIdentifier: ChatIdentifier, chatIdentifier: ChatIdentifier,
forumTopic: ForumTopic, forumTopic: ForumTopic,
iconEmojiId: CustomEmojiId? = forumTopic.iconEmojiId iconEmojiId: CustomEmojiId? = forumTopic.iconEmojiId
): Boolean = editForumTopic(chatIdentifier, forumTopic.messageThreadId, forumTopic.name, iconEmojiId) ): Unit = editForumTopic(chatIdentifier, forumTopic.messageThreadId, forumTopic.name, iconEmojiId)

View File

@@ -12,7 +12,7 @@ import dev.inmo.tgbotapi.types.chat.Chat
public suspend fun TelegramBot.editGeneralForumTopic( public suspend fun TelegramBot.editGeneralForumTopic(
chatId: ChatIdentifier, chatId: ChatIdentifier,
name: String name: String
): Boolean = execute( ): Unit = execute(
EditGeneralForumTopic( EditGeneralForumTopic(
chatId, chatId,
name name
@@ -22,9 +22,9 @@ public suspend fun TelegramBot.editGeneralForumTopic(
public suspend fun TelegramBot.editGeneralForumTopic( public suspend fun TelegramBot.editGeneralForumTopic(
chat: Chat, chat: Chat,
name: String name: String
): Boolean = editGeneralForumTopic(chat.id, name) ): Unit = editGeneralForumTopic(chat.id, name)
public suspend fun TelegramBot.editGeneralForumTopic( public suspend fun TelegramBot.editGeneralForumTopic(
chatIdentifier: ChatIdentifier, chatIdentifier: ChatIdentifier,
forumTopic: ForumTopic, forumTopic: ForumTopic,
): Boolean = editGeneralForumTopic(chatIdentifier, forumTopic.name) ): Unit = editGeneralForumTopic(chatIdentifier, forumTopic.name)

View File

@@ -11,10 +11,10 @@ import dev.inmo.tgbotapi.types.chat.Chat
public suspend fun TelegramBot.hideGeneralForumTopic( public suspend fun TelegramBot.hideGeneralForumTopic(
chatId: ChatIdentifier chatId: ChatIdentifier
): Boolean = execute( ): Unit = execute(
HideGeneralForumTopic(chatId) HideGeneralForumTopic(chatId)
) )
public suspend fun TelegramBot.hideGeneralForumTopic( public suspend fun TelegramBot.hideGeneralForumTopic(
chat: Chat chat: Chat
): Boolean = hideGeneralForumTopic(chat.id) ): Unit = hideGeneralForumTopic(chat.id)

View File

@@ -10,7 +10,7 @@ import dev.inmo.tgbotapi.types.chat.Chat
public suspend fun TelegramBot.reopenForumTopic( public suspend fun TelegramBot.reopenForumTopic(
chatId: ChatIdentifier, chatId: ChatIdentifier,
messageThreadId: MessageThreadId messageThreadId: MessageThreadId
): Boolean = execute( ): Unit = execute(
ReopenForumTopic( ReopenForumTopic(
chatId, chatId,
messageThreadId messageThreadId
@@ -20,9 +20,9 @@ public suspend fun TelegramBot.reopenForumTopic(
public suspend fun TelegramBot.reopenForumTopic( public suspend fun TelegramBot.reopenForumTopic(
chat: Chat, chat: Chat,
messageThreadId: MessageThreadId messageThreadId: MessageThreadId
): Boolean = reopenForumTopic(chat.id, messageThreadId) ): Unit = reopenForumTopic(chat.id, messageThreadId)
public suspend fun TelegramBot.reopenForumTopic( public suspend fun TelegramBot.reopenForumTopic(
chat: Chat, chat: Chat,
forumTopic: ForumTopic forumTopic: ForumTopic
): Boolean = reopenForumTopic(chat.id, forumTopic.messageThreadId) ): Unit = reopenForumTopic(chat.id, forumTopic.messageThreadId)

View File

@@ -10,10 +10,10 @@ import dev.inmo.tgbotapi.types.chat.Chat
public suspend fun TelegramBot.reopenGeneralForumTopic( public suspend fun TelegramBot.reopenGeneralForumTopic(
chatId: ChatIdentifier chatId: ChatIdentifier
): Boolean = execute( ): Unit = execute(
ReopenGeneralForumTopic(chatId) ReopenGeneralForumTopic(chatId)
) )
public suspend fun TelegramBot.reopenGeneralForumTopic( public suspend fun TelegramBot.reopenGeneralForumTopic(
chat: Chat chat: Chat
): Boolean = reopenGeneralForumTopic(chat.id) ): Unit = reopenGeneralForumTopic(chat.id)

View File

@@ -12,10 +12,10 @@ import dev.inmo.tgbotapi.types.chat.Chat
public suspend fun TelegramBot.unhideGeneralForumTopic( public suspend fun TelegramBot.unhideGeneralForumTopic(
chatId: ChatIdentifier chatId: ChatIdentifier
): Boolean = execute( ): Unit = execute(
UnhideGeneralForumTopic(chatId) UnhideGeneralForumTopic(chatId)
) )
public suspend fun TelegramBot.unhideGeneralForumTopic( public suspend fun TelegramBot.unhideGeneralForumTopic(
chat: Chat chat: Chat
): Boolean = unhideGeneralForumTopic(chat.id) ): Unit = unhideGeneralForumTopic(chat.id)

View File

@@ -10,7 +10,7 @@ import dev.inmo.tgbotapi.types.chat.Chat
public suspend fun TelegramBot.unpinAllForumTopicMessages( public suspend fun TelegramBot.unpinAllForumTopicMessages(
chatId: ChatIdentifier, chatId: ChatIdentifier,
messageThreadId: MessageThreadId messageThreadId: MessageThreadId
): Boolean = execute( ): Unit = execute(
UnpinAllForumTopicMessages( UnpinAllForumTopicMessages(
chatId, chatId,
messageThreadId messageThreadId
@@ -20,9 +20,9 @@ public suspend fun TelegramBot.unpinAllForumTopicMessages(
public suspend fun TelegramBot.unpinAllForumTopicMessages( public suspend fun TelegramBot.unpinAllForumTopicMessages(
chat: Chat, chat: Chat,
messageThreadId: MessageThreadId messageThreadId: MessageThreadId
): Boolean = unpinAllForumTopicMessages(chat.id, messageThreadId) ): Unit = unpinAllForumTopicMessages(chat.id, messageThreadId)
public suspend fun TelegramBot.unpinAllForumTopicMessages( public suspend fun TelegramBot.unpinAllForumTopicMessages(
chat: Chat, chat: Chat,
forumTopic: ForumTopic forumTopic: ForumTopic
): Boolean = unpinAllForumTopicMessages(chat.id, forumTopic.messageThreadId) ): Unit = unpinAllForumTopicMessages(chat.id, forumTopic.messageThreadId)

View File

@@ -10,7 +10,7 @@ import dev.inmo.tgbotapi.types.chat.Chat
public suspend fun TelegramBot.unpinAllGeneralForumTopicMessages( public suspend fun TelegramBot.unpinAllGeneralForumTopicMessages(
chatId: ChatIdentifier chatId: ChatIdentifier
): Boolean = execute( ): Unit = execute(
UnpinAllGeneralForumTopicMessages( UnpinAllGeneralForumTopicMessages(
chatId chatId
) )
@@ -18,4 +18,4 @@ public suspend fun TelegramBot.unpinAllGeneralForumTopicMessages(
public suspend fun TelegramBot.unpinAllGeneralForumTopicMessages( public suspend fun TelegramBot.unpinAllGeneralForumTopicMessages(
chat: Chat chat: Chat
): Boolean = unpinAllGeneralForumTopicMessages(chat.id) ): Unit = unpinAllGeneralForumTopicMessages(chat.id)

View File

@@ -117,6 +117,17 @@ public suspend fun TelegramBot.getChat(
chat: PrivateChatImpl chat: PrivateChatImpl
): ExtendedPrivateChatImpl = getChat(chat.id) as ExtendedPrivateChatImpl ): ExtendedPrivateChatImpl = getChat(chat.id) as ExtendedPrivateChatImpl
/**
* Will cast incoming [dev.inmo.tgbotapi.types.chat.ExtendedChat] to a
* [ExtendedPrivateForumChatImpl] with unsafe operator "as"
*
* @throws ClassCastException
*/
@PreviewFeature
public suspend fun TelegramBot.getChat(
chat: PrivateForumChatImpl
): ExtendedPrivateForumChatImpl = getChat(chat.id) as ExtendedPrivateForumChatImpl
/** /**
* Will cast incoming [dev.inmo.tgbotapi.types.chat.ExtendedChat] to a * Will cast incoming [dev.inmo.tgbotapi.types.chat.ExtendedChat] to a
* [ExtendedUser] with unsafe operator "as" * [ExtendedUser] with unsafe operator "as"

View File

@@ -12,31 +12,31 @@ import dev.inmo.tgbotapi.types.update.ChatJoinRequestUpdate
public suspend fun TelegramBot.approveChatJoinRequest( public suspend fun TelegramBot.approveChatJoinRequest(
chatId: ChatIdentifier, chatId: ChatIdentifier,
userId: UserId userId: UserId
): Boolean = execute(ApproveChatJoinRequest(chatId, userId)) ): Unit = execute(ApproveChatJoinRequest(chatId, userId))
public suspend fun TelegramBot.approveChatJoinRequest( public suspend fun TelegramBot.approveChatJoinRequest(
chat: PublicChat, chat: PublicChat,
userId: UserId userId: UserId
): Boolean = approveChatJoinRequest(chat.id, userId) ): Unit = approveChatJoinRequest(chat.id, userId)
public suspend fun TelegramBot.approveChatJoinRequest( public suspend fun TelegramBot.approveChatJoinRequest(
chatId: ChatIdentifier, chatId: ChatIdentifier,
user: User user: User
): Boolean = approveChatJoinRequest(chatId, user.id) ): Unit = approveChatJoinRequest(chatId, user.id)
public suspend fun TelegramBot.approveChatJoinRequest( public suspend fun TelegramBot.approveChatJoinRequest(
chat: PublicChat, chat: PublicChat,
user: User user: User
): Boolean = approveChatJoinRequest(chat.id, user.id) ): Unit = approveChatJoinRequest(chat.id, user.id)
public suspend fun TelegramBot.approveChatJoinRequest( public suspend fun TelegramBot.approveChatJoinRequest(
chatJoinRequest: ChatJoinRequest chatJoinRequest: ChatJoinRequest
): Boolean = approveChatJoinRequest(chatJoinRequest.chat, chatJoinRequest.user) ): Unit = approveChatJoinRequest(chatJoinRequest.chat, chatJoinRequest.user)
public suspend fun TelegramBot.approve( public suspend fun TelegramBot.approve(
chatJoinRequest: ChatJoinRequest chatJoinRequest: ChatJoinRequest
): Boolean = approveChatJoinRequest(chatJoinRequest) ): Unit = approveChatJoinRequest(chatJoinRequest)
public suspend fun TelegramBot.approveChatJoinRequest( public suspend fun TelegramBot.approveChatJoinRequest(
chatJoinRequestUpdate: ChatJoinRequestUpdate chatJoinRequestUpdate: ChatJoinRequestUpdate
): Boolean = approveChatJoinRequest(chatJoinRequestUpdate.data) ): Unit = approveChatJoinRequest(chatJoinRequestUpdate.data)

View File

@@ -12,31 +12,31 @@ import dev.inmo.tgbotapi.types.update.ChatJoinRequestUpdate
public suspend fun TelegramBot.declineChatJoinRequest( public suspend fun TelegramBot.declineChatJoinRequest(
chatId: ChatIdentifier, chatId: ChatIdentifier,
userId: UserId userId: UserId
): Boolean = execute(DeclineChatJoinRequest(chatId, userId)) ): Unit = execute(DeclineChatJoinRequest(chatId, userId))
public suspend fun TelegramBot.declineChatJoinRequest( public suspend fun TelegramBot.declineChatJoinRequest(
chat: PublicChat, chat: PublicChat,
userId: UserId userId: UserId
): Boolean = declineChatJoinRequest(chat.id, userId) ): Unit = declineChatJoinRequest(chat.id, userId)
public suspend fun TelegramBot.declineChatJoinRequest( public suspend fun TelegramBot.declineChatJoinRequest(
chatId: ChatIdentifier, chatId: ChatIdentifier,
user: User user: User
): Boolean = declineChatJoinRequest(chatId, user.id) ): Unit = declineChatJoinRequest(chatId, user.id)
public suspend fun TelegramBot.declineChatJoinRequest( public suspend fun TelegramBot.declineChatJoinRequest(
chat: PublicChat, chat: PublicChat,
user: User user: User
): Boolean = declineChatJoinRequest(chat.id, user.id) ): Unit = declineChatJoinRequest(chat.id, user.id)
public suspend fun TelegramBot.declineChatJoinRequest( public suspend fun TelegramBot.declineChatJoinRequest(
chatJoinRequest: ChatJoinRequest chatJoinRequest: ChatJoinRequest
): Boolean = declineChatJoinRequest(chatJoinRequest.chat, chatJoinRequest.user) ): Unit = declineChatJoinRequest(chatJoinRequest.chat, chatJoinRequest.user)
public suspend fun TelegramBot.decline( public suspend fun TelegramBot.decline(
chatJoinRequest: ChatJoinRequest chatJoinRequest: ChatJoinRequest
): Boolean = declineChatJoinRequest(chatJoinRequest) ): Unit = declineChatJoinRequest(chatJoinRequest)
public suspend fun TelegramBot.declineChatJoinRequest( public suspend fun TelegramBot.declineChatJoinRequest(
chatJoinRequestUpdate: ChatJoinRequestUpdate chatJoinRequestUpdate: ChatJoinRequestUpdate
): Boolean = declineChatJoinRequest(chatJoinRequestUpdate.data) ): Unit = declineChatJoinRequest(chatJoinRequestUpdate.data)

View File

@@ -14,25 +14,25 @@ public suspend fun TelegramBot.banChatMember(
userId: UserId, userId: UserId,
untilDate: TelegramDate? = null, untilDate: TelegramDate? = null,
revokeMessages: Boolean? = null revokeMessages: Boolean? = null
): Boolean = execute(BanChatMember(chatId, userId, untilDate, revokeMessages)) ): Unit = execute(BanChatMember(chatId, userId, untilDate, revokeMessages))
public suspend fun TelegramBot.banChatMember( public suspend fun TelegramBot.banChatMember(
chat: PublicChat, chat: PublicChat,
userId: UserId, userId: UserId,
untilDate: TelegramDate? = null, untilDate: TelegramDate? = null,
revokeMessages: Boolean? = null revokeMessages: Boolean? = null
): Boolean = banChatMember(chat.id, userId, untilDate, revokeMessages) ): Unit = banChatMember(chat.id, userId, untilDate, revokeMessages)
public suspend fun TelegramBot.banChatMember( public suspend fun TelegramBot.banChatMember(
chatId: IdChatIdentifier, chatId: IdChatIdentifier,
user: User, user: User,
untilDate: TelegramDate? = null, untilDate: TelegramDate? = null,
revokeMessages: Boolean? = null revokeMessages: Boolean? = null
): Boolean = banChatMember(chatId, user.id, untilDate, revokeMessages) ): Unit = banChatMember(chatId, user.id, untilDate, revokeMessages)
public suspend fun TelegramBot.banChatMember( public suspend fun TelegramBot.banChatMember(
chat: PublicChat, chat: PublicChat,
user: User, user: User,
untilDate: TelegramDate? = null, untilDate: TelegramDate? = null,
revokeMessages: Boolean? = null revokeMessages: Boolean? = null
): Boolean = banChatMember(chat.id, user.id, untilDate, revokeMessages) ): Unit = banChatMember(chat.id, user.id, untilDate, revokeMessages)

View File

@@ -9,19 +9,19 @@ import dev.inmo.tgbotapi.types.chat.PublicChat
public suspend fun TelegramBot.banChatSenderChat( public suspend fun TelegramBot.banChatSenderChat(
chatId: ChatIdentifier, chatId: ChatIdentifier,
senderChatId: IdChatIdentifier senderChatId: IdChatIdentifier
): Boolean = execute(BanChatSenderChat(chatId, senderChatId)) ): Unit = execute(BanChatSenderChat(chatId, senderChatId))
public suspend fun TelegramBot.banChatSenderChat( public suspend fun TelegramBot.banChatSenderChat(
chat: PublicChat, chat: PublicChat,
senderChatId: IdChatIdentifier senderChatId: IdChatIdentifier
): Boolean = banChatSenderChat(chat.id, senderChatId) ): Unit = banChatSenderChat(chat.id, senderChatId)
public suspend fun TelegramBot.banChatSenderChat( public suspend fun TelegramBot.banChatSenderChat(
chatId: IdChatIdentifier, chatId: IdChatIdentifier,
senderChat: PublicChat senderChat: PublicChat
): Boolean = banChatSenderChat(chatId, senderChat.id) ): Unit = banChatSenderChat(chatId, senderChat.id)
public suspend fun TelegramBot.banChatSenderChat( public suspend fun TelegramBot.banChatSenderChat(
chat: PublicChat, chat: PublicChat,
senderChat: PublicChat, senderChat: PublicChat,
): Boolean = banChatSenderChat(chat.id, senderChat) ): Unit = banChatSenderChat(chat.id, senderChat)

View File

@@ -2,7 +2,6 @@ package dev.inmo.tgbotapi.extensions.api.chat.members
import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.bot.TelegramBot
import dev.inmo.tgbotapi.requests.chat.members.PromoteChannelAdministrator import dev.inmo.tgbotapi.requests.chat.members.PromoteChannelAdministrator
import dev.inmo.tgbotapi.requests.chat.members.PromoteChatMember
import dev.inmo.tgbotapi.types.IdChatIdentifier import dev.inmo.tgbotapi.types.IdChatIdentifier
import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.ChatIdentifier
import dev.inmo.tgbotapi.types.TelegramDate import dev.inmo.tgbotapi.types.TelegramDate
@@ -26,8 +25,9 @@ public suspend fun TelegramBot.promoteChannelAdministrator(
canManageChat: Boolean? = null, canManageChat: Boolean? = null,
canPostStories: Boolean? = null, canPostStories: Boolean? = null,
canEditStories: Boolean? = null, canEditStories: Boolean? = null,
canDeleteStories: Boolean? = null canDeleteStories: Boolean? = null,
): Boolean = execute( canManageDirectMessages: Boolean? = null,
): Unit = execute(
PromoteChannelAdministrator( PromoteChannelAdministrator(
chatId = chatId, chatId = chatId,
userId = userId, userId = userId,
@@ -44,7 +44,8 @@ public suspend fun TelegramBot.promoteChannelAdministrator(
canManageChat = canManageChat, canManageChat = canManageChat,
canPostStories = canPostStories, canPostStories = canPostStories,
canEditStories = canEditStories, canEditStories = canEditStories,
canDeleteStories = canDeleteStories canDeleteStories = canDeleteStories,
canManageDirectMessages = canManageDirectMessages,
) )
) )
@@ -64,8 +65,9 @@ public suspend fun TelegramBot.promoteChannelAdministrator(
canManageChat: Boolean? = null, canManageChat: Boolean? = null,
canPostStories: Boolean? = null, canPostStories: Boolean? = null,
canEditStories: Boolean? = null, canEditStories: Boolean? = null,
canDeleteStories: Boolean? = null canDeleteStories: Boolean? = null,
): Boolean = promoteChannelAdministrator( canManageDirectMessages: Boolean? = null,
): Unit = promoteChannelAdministrator(
chat.id, chat.id,
userId, userId,
untilDate = untilDate, untilDate = untilDate,
@@ -81,7 +83,8 @@ public suspend fun TelegramBot.promoteChannelAdministrator(
canManageChat = canManageChat, canManageChat = canManageChat,
canPostStories = canPostStories, canPostStories = canPostStories,
canEditStories = canEditStories, canEditStories = canEditStories,
canDeleteStories = canDeleteStories canDeleteStories = canDeleteStories,
canManageDirectMessages = canManageDirectMessages,
) )
public suspend fun TelegramBot.promoteChannelAdministrator( public suspend fun TelegramBot.promoteChannelAdministrator(
@@ -100,8 +103,9 @@ public suspend fun TelegramBot.promoteChannelAdministrator(
canManageChat: Boolean? = null, canManageChat: Boolean? = null,
canPostStories: Boolean? = null, canPostStories: Boolean? = null,
canEditStories: Boolean? = null, canEditStories: Boolean? = null,
canDeleteStories: Boolean? = null canDeleteStories: Boolean? = null,
): Boolean = promoteChannelAdministrator( canManageDirectMessages: Boolean? = null,
): Unit = promoteChannelAdministrator(
chatId, chatId,
user.id, user.id,
untilDate = untilDate, untilDate = untilDate,
@@ -117,7 +121,8 @@ public suspend fun TelegramBot.promoteChannelAdministrator(
canManageChat = canManageChat, canManageChat = canManageChat,
canPostStories = canPostStories, canPostStories = canPostStories,
canEditStories = canEditStories, canEditStories = canEditStories,
canDeleteStories = canDeleteStories canDeleteStories = canDeleteStories,
canManageDirectMessages = canManageDirectMessages,
) )
public suspend fun TelegramBot.promoteChannelAdministrator( public suspend fun TelegramBot.promoteChannelAdministrator(
@@ -136,8 +141,9 @@ public suspend fun TelegramBot.promoteChannelAdministrator(
canManageChat: Boolean? = null, canManageChat: Boolean? = null,
canPostStories: Boolean? = null, canPostStories: Boolean? = null,
canEditStories: Boolean? = null, canEditStories: Boolean? = null,
canDeleteStories: Boolean? = null canDeleteStories: Boolean? = null,
): Boolean = promoteChannelAdministrator( canManageDirectMessages: Boolean? = null,
): Unit = promoteChannelAdministrator(
chat.id, chat.id,
user.id, user.id,
untilDate = untilDate, untilDate = untilDate,
@@ -153,5 +159,6 @@ public suspend fun TelegramBot.promoteChannelAdministrator(
canManageChat = canManageChat, canManageChat = canManageChat,
canPostStories = canPostStories, canPostStories = canPostStories,
canEditStories = canEditStories, canEditStories = canEditStories,
canDeleteStories = canDeleteStories canDeleteStories = canDeleteStories,
canManageDirectMessages = canManageDirectMessages,
) )

View File

@@ -21,19 +21,21 @@ public suspend fun TelegramBot.promoteChatAdministrator(
canPromoteMembers: Boolean? = null, canPromoteMembers: Boolean? = null,
canManageVideoChats: Boolean? = null, canManageVideoChats: Boolean? = null,
canManageChat: Boolean? = null, canManageChat: Boolean? = null,
): Boolean = execute( canManageTags: Boolean? = null,
): Unit = execute(
PromoteChatMember( PromoteChatMember(
chatId, chatId = chatId,
userId, userId = userId,
untilDate, untilDate = untilDate,
isAnonymous, isAnonymous = isAnonymous,
canChangeInfo, canChangeInfo = canChangeInfo,
canDeleteMessages, canDeleteMessages = canDeleteMessages,
canInviteUsers, canInviteUsers = canInviteUsers,
canRestrictMembers, canRestrictMembers = canRestrictMembers,
canPromoteMembers, canPromoteMembers = canPromoteMembers,
canManageVideoChats, canManageVideoChats = canManageVideoChats,
canManageChat canManageChat = canManageChat,
canManageTags = canManageTags
) )
) )
@@ -49,18 +51,20 @@ public suspend fun TelegramBot.promoteChatAdministrator(
canPromoteMembers: Boolean? = null, canPromoteMembers: Boolean? = null,
canManageVideoChats: Boolean? = null, canManageVideoChats: Boolean? = null,
canManageChat: Boolean? = null, canManageChat: Boolean? = null,
): Boolean = promoteChatAdministrator( canManageTags: Boolean? = null,
chat.id, ): Unit = promoteChatAdministrator(
userId, chatId = chat.id,
untilDate, userId = userId,
isAnonymous, untilDate = untilDate,
canChangeInfo, isAnonymous = isAnonymous,
canDeleteMessages, canChangeInfo = canChangeInfo,
canInviteUsers, canDeleteMessages = canDeleteMessages,
canRestrictMembers, canInviteUsers = canInviteUsers,
canPromoteMembers, canRestrictMembers = canRestrictMembers,
canManageVideoChats, canPromoteMembers = canPromoteMembers,
canManageChat canManageVideoChats = canManageVideoChats,
canManageChat = canManageChat,
canManageTags = canManageTags
) )
public suspend fun TelegramBot.promoteChatAdministrator( public suspend fun TelegramBot.promoteChatAdministrator(
@@ -75,18 +79,20 @@ public suspend fun TelegramBot.promoteChatAdministrator(
canPromoteMembers: Boolean? = null, canPromoteMembers: Boolean? = null,
canManageVideoChats: Boolean? = null, canManageVideoChats: Boolean? = null,
canManageChat: Boolean? = null, canManageChat: Boolean? = null,
): Boolean = promoteChatAdministrator( canManageTags: Boolean? = null,
chatId, ): Unit = promoteChatAdministrator(
user.id, chatId = chatId,
untilDate, userId = user.id,
isAnonymous, untilDate = untilDate,
canChangeInfo, isAnonymous = isAnonymous,
canDeleteMessages, canChangeInfo = canChangeInfo,
canInviteUsers, canDeleteMessages = canDeleteMessages,
canRestrictMembers, canInviteUsers = canInviteUsers,
canPromoteMembers, canRestrictMembers = canRestrictMembers,
canManageVideoChats, canPromoteMembers = canPromoteMembers,
canManageChat canManageVideoChats = canManageVideoChats,
canManageChat = canManageChat,
canManageTags = canManageTags
) )
public suspend fun TelegramBot.promoteChatAdministrator( public suspend fun TelegramBot.promoteChatAdministrator(
@@ -101,16 +107,18 @@ public suspend fun TelegramBot.promoteChatAdministrator(
canPromoteMembers: Boolean? = null, canPromoteMembers: Boolean? = null,
canManageVideoChats: Boolean? = null, canManageVideoChats: Boolean? = null,
canManageChat: Boolean? = null, canManageChat: Boolean? = null,
): Boolean = promoteChatAdministrator( canManageTags: Boolean? = null,
chat.id, ): Unit = promoteChatAdministrator(
user.id, chatId = chat.id,
untilDate, userId = user.id,
isAnonymous, untilDate = untilDate,
canChangeInfo, isAnonymous = isAnonymous,
canDeleteMessages, canChangeInfo = canChangeInfo,
canInviteUsers, canDeleteMessages = canDeleteMessages,
canRestrictMembers, canInviteUsers = canInviteUsers,
canPromoteMembers, canRestrictMembers = canRestrictMembers,
canManageVideoChats, canPromoteMembers = canPromoteMembers,
canManageChat canManageVideoChats = canManageVideoChats,
canManageChat = canManageChat,
canManageTags = canManageTags
) )

View File

@@ -26,8 +26,10 @@ public suspend fun TelegramBot.promoteChatMember(
canManageTopics: Boolean? = null, canManageTopics: Boolean? = null,
canPostStories: Boolean? = null, canPostStories: Boolean? = null,
canEditStories: Boolean? = null, canEditStories: Boolean? = null,
canDeleteStories: Boolean? = null canDeleteStories: Boolean? = null,
): Boolean = execute( canManageDirectMessages: Boolean? = null,
canManageTags: Boolean? = null
): Unit = execute(
PromoteChatMember( PromoteChatMember(
chatId = chatId, chatId = chatId,
userId = userId, userId = userId,
@@ -46,7 +48,9 @@ public suspend fun TelegramBot.promoteChatMember(
canManageTopics = canManageTopics, canManageTopics = canManageTopics,
canPostStories = canPostStories, canPostStories = canPostStories,
canEditStories = canEditStories, canEditStories = canEditStories,
canDeleteStories = canDeleteStories canDeleteStories = canDeleteStories,
canManageDirectMessages = canManageDirectMessages,
canManageTags = canManageTags,
) )
) )
@@ -69,8 +73,10 @@ public suspend fun TelegramBot.promoteChatMember(
canManageTopics: Boolean? = null, canManageTopics: Boolean? = null,
canPostStories: Boolean? = null, canPostStories: Boolean? = null,
canEditStories: Boolean? = null, canEditStories: Boolean? = null,
canDeleteStories: Boolean? = null canDeleteStories: Boolean? = null,
): Boolean = promoteChatMember( canManageDirectMessages: Boolean? = null,
canManageTags: Boolean? = null
): Unit = promoteChatMember(
chat.id, chat.id,
userId, userId,
untilDate = untilDate, untilDate = untilDate,
@@ -88,7 +94,9 @@ public suspend fun TelegramBot.promoteChatMember(
canManageTopics = canManageTopics, canManageTopics = canManageTopics,
canPostStories = canPostStories, canPostStories = canPostStories,
canEditStories = canEditStories, canEditStories = canEditStories,
canDeleteStories = canDeleteStories canDeleteStories = canDeleteStories,
canManageDirectMessages = canManageDirectMessages,
canManageTags = canManageTags,
) )
@Warning("This method is too common. Use it with caution") @Warning("This method is too common. Use it with caution")
@@ -110,8 +118,10 @@ public suspend fun TelegramBot.promoteChatMember(
canManageTopics: Boolean? = null, canManageTopics: Boolean? = null,
canPostStories: Boolean? = null, canPostStories: Boolean? = null,
canEditStories: Boolean? = null, canEditStories: Boolean? = null,
canDeleteStories: Boolean? = null canDeleteStories: Boolean? = null,
): Boolean = promoteChatMember( canManageDirectMessages: Boolean? = null,
canManageTags: Boolean? = null
): Unit = promoteChatMember(
chatId, chatId,
user.id, user.id,
untilDate = untilDate, untilDate = untilDate,
@@ -129,7 +139,9 @@ public suspend fun TelegramBot.promoteChatMember(
canManageTopics = canManageTopics, canManageTopics = canManageTopics,
canPostStories = canPostStories, canPostStories = canPostStories,
canEditStories = canEditStories, canEditStories = canEditStories,
canDeleteStories = canDeleteStories canDeleteStories = canDeleteStories,
canManageDirectMessages = canManageDirectMessages,
canManageTags = canManageTags,
) )
@Warning("This method is too common. Use it with caution") @Warning("This method is too common. Use it with caution")
@@ -151,8 +163,10 @@ public suspend fun TelegramBot.promoteChatMember(
canManageTopics: Boolean? = null, canManageTopics: Boolean? = null,
canPostStories: Boolean? = null, canPostStories: Boolean? = null,
canEditStories: Boolean? = null, canEditStories: Boolean? = null,
canDeleteStories: Boolean? = null canDeleteStories: Boolean? = null,
): Boolean = promoteChatMember( canManageDirectMessages: Boolean? = null,
canManageTags: Boolean? = null
): Unit = promoteChatMember(
chat.id, chat.id,
user.id, user.id,
untilDate = untilDate, untilDate = untilDate,
@@ -170,5 +184,7 @@ public suspend fun TelegramBot.promoteChatMember(
canManageTopics = canManageTopics, canManageTopics = canManageTopics,
canPostStories = canPostStories, canPostStories = canPostStories,
canEditStories = canEditStories, canEditStories = canEditStories,
canDeleteStories = canDeleteStories canDeleteStories = canDeleteStories,
canManageDirectMessages = canManageDirectMessages,
canManageTags = canManageTags,
) )

View File

@@ -24,7 +24,7 @@ public suspend fun TelegramBot.promoteSupergroupAdministrator(
canManageVideoChats: Boolean? = null, canManageVideoChats: Boolean? = null,
canManageChat: Boolean? = null, canManageChat: Boolean? = null,
canManageTopics: Boolean? = null, canManageTopics: Boolean? = null,
): Boolean = execute( ): Unit = execute(
PromoteSupergroupAdministrator( PromoteSupergroupAdministrator(
chatId = chatId, chatId = chatId,
userId = userId, userId = userId,
@@ -56,7 +56,7 @@ public suspend fun TelegramBot.promoteSupergroupAdministrator(
canManageVideoChats: Boolean? = null, canManageVideoChats: Boolean? = null,
canManageChat: Boolean? = null, canManageChat: Boolean? = null,
canManageTopics: Boolean? = null, canManageTopics: Boolean? = null,
): Boolean = promoteSupergroupAdministrator( ): Unit = promoteSupergroupAdministrator(
chat.id, chat.id,
userId, userId,
untilDate = untilDate, untilDate = untilDate,
@@ -86,7 +86,7 @@ public suspend fun TelegramBot.promoteSupergroupAdministrator(
canManageVideoChats: Boolean? = null, canManageVideoChats: Boolean? = null,
canManageChat: Boolean? = null, canManageChat: Boolean? = null,
canManageTopics: Boolean? = null, canManageTopics: Boolean? = null,
): Boolean = promoteSupergroupAdministrator( ): Unit = promoteSupergroupAdministrator(
chatId, chatId,
user.id, user.id,
untilDate = untilDate, untilDate = untilDate,
@@ -116,7 +116,7 @@ public suspend fun TelegramBot.promoteSupergroupAdministrator(
canManageVideoChats: Boolean? = null, canManageVideoChats: Boolean? = null,
canManageChat: Boolean? = null, canManageChat: Boolean? = null,
canManageTopics: Boolean? = null, canManageTopics: Boolean? = null,
): Boolean = promoteSupergroupAdministrator( ): Unit = promoteSupergroupAdministrator(
chat.id, chat.id,
user.id, user.id,
untilDate = untilDate, untilDate = untilDate,

View File

@@ -16,7 +16,7 @@ public suspend fun TelegramBot.restrictChatMember(
untilDate: TelegramDate? = null, untilDate: TelegramDate? = null,
permissions: ChatPermissions = ChatPermissions(), permissions: ChatPermissions = ChatPermissions(),
useIndependentChatPermissions: Boolean? = permissions.isGranular.takeIf { it } useIndependentChatPermissions: Boolean? = permissions.isGranular.takeIf { it }
): Boolean = execute(RestrictChatMember(chatId, userId, untilDate, permissions, useIndependentChatPermissions)) ): Unit = execute(RestrictChatMember(chatId, userId, untilDate, permissions, useIndependentChatPermissions))
public suspend fun TelegramBot.restrictChatMember( public suspend fun TelegramBot.restrictChatMember(
chat: PublicChat, chat: PublicChat,
@@ -24,7 +24,7 @@ public suspend fun TelegramBot.restrictChatMember(
untilDate: TelegramDate? = null, untilDate: TelegramDate? = null,
permissions: ChatPermissions = ChatPermissions(), permissions: ChatPermissions = ChatPermissions(),
useIndependentChatPermissions: Boolean? = permissions.isGranular.takeIf { it } useIndependentChatPermissions: Boolean? = permissions.isGranular.takeIf { it }
): Boolean = restrictChatMember(chat.id, userId, untilDate, permissions, useIndependentChatPermissions) ): Unit = restrictChatMember(chat.id, userId, untilDate, permissions, useIndependentChatPermissions)
public suspend fun TelegramBot.restrictChatMember( public suspend fun TelegramBot.restrictChatMember(
chatId: IdChatIdentifier, chatId: IdChatIdentifier,
@@ -32,7 +32,7 @@ public suspend fun TelegramBot.restrictChatMember(
untilDate: TelegramDate? = null, untilDate: TelegramDate? = null,
permissions: ChatPermissions = ChatPermissions(), permissions: ChatPermissions = ChatPermissions(),
useIndependentChatPermissions: Boolean? = permissions.isGranular.takeIf { it } useIndependentChatPermissions: Boolean? = permissions.isGranular.takeIf { it }
): Boolean = restrictChatMember(chatId, user.id, untilDate, permissions, useIndependentChatPermissions) ): Unit = restrictChatMember(chatId, user.id, untilDate, permissions, useIndependentChatPermissions)
public suspend fun TelegramBot.restrictChatMember( public suspend fun TelegramBot.restrictChatMember(
chat: PublicChat, chat: PublicChat,
@@ -40,5 +40,5 @@ public suspend fun TelegramBot.restrictChatMember(
untilDate: TelegramDate? = null, untilDate: TelegramDate? = null,
permissions: ChatPermissions = ChatPermissions(), permissions: ChatPermissions = ChatPermissions(),
useIndependentChatPermissions: Boolean? = permissions.isGranular.takeIf { it } useIndependentChatPermissions: Boolean? = permissions.isGranular.takeIf { it }
): Boolean = restrictChatMember(chat.id, user.id, untilDate, permissions, useIndependentChatPermissions) ): Unit = restrictChatMember(chat.id, user.id, untilDate, permissions, useIndependentChatPermissions)

View File

@@ -11,22 +11,22 @@ public suspend fun TelegramBot.setChatAdministratorCustomTitle(
chatId: IdChatIdentifier, chatId: IdChatIdentifier,
userId: UserId, userId: UserId,
customTitle: String customTitle: String
): Boolean = execute(SetChatAdministratorCustomTitle(chatId, userId, customTitle)) ): Unit = execute(SetChatAdministratorCustomTitle(chatId, userId, customTitle))
public suspend fun TelegramBot.setChatAdministratorCustomTitle( public suspend fun TelegramBot.setChatAdministratorCustomTitle(
chat: PublicChat, chat: PublicChat,
userId: UserId, userId: UserId,
customTitle: String customTitle: String
): Boolean = setChatAdministratorCustomTitle(chat.id, userId, customTitle) ): Unit = setChatAdministratorCustomTitle(chat.id, userId, customTitle)
public suspend fun TelegramBot.setChatAdministratorCustomTitle( public suspend fun TelegramBot.setChatAdministratorCustomTitle(
chatId: IdChatIdentifier, chatId: IdChatIdentifier,
user: User, user: User,
customTitle: String customTitle: String
): Boolean = setChatAdministratorCustomTitle(chatId, user.id, customTitle) ): Unit = setChatAdministratorCustomTitle(chatId, user.id, customTitle)
public suspend fun TelegramBot.setChatAdministratorCustomTitle( public suspend fun TelegramBot.setChatAdministratorCustomTitle(
chat: PublicChat, chat: PublicChat,
user: User, user: User,
customTitle: String customTitle: String
): Boolean = setChatAdministratorCustomTitle(chat.id, user.id, customTitle) ): Unit = setChatAdministratorCustomTitle(chat.id, user.id, customTitle)

View File

@@ -0,0 +1,31 @@
package dev.inmo.tgbotapi.extensions.api.chat.members
import dev.inmo.tgbotapi.bot.TelegramBot
import dev.inmo.tgbotapi.requests.chat.members.SetChatMemberTag
import dev.inmo.tgbotapi.types.*
import dev.inmo.tgbotapi.types.chat.PublicChat
import dev.inmo.tgbotapi.types.chat.User
public suspend fun TelegramBot.setChatMemberTag(
chatId: ChatIdentifier,
userId: UserId,
tag: UserTag? = null
): Unit = execute(SetChatMemberTag(chatId, userId, tag))
public suspend fun TelegramBot.setChatMemberTag(
chat: PublicChat,
userId: UserId,
tag: UserTag? = null
): Unit = setChatMemberTag(chat.id, userId, tag)
public suspend fun TelegramBot.setChatMemberTag(
chatId: ChatIdentifier,
user: User,
tag: UserTag? = null
): Unit = setChatMemberTag(chatId, user.id, tag)
public suspend fun TelegramBot.setChatMemberTag(
chat: PublicChat,
user: User,
tag: UserTag? = null
): Unit = setChatMemberTag(chat.id, user.id, tag)

View File

@@ -12,23 +12,23 @@ public suspend fun TelegramBot.unbanChatMember(
chatId: ChatIdentifier, chatId: ChatIdentifier,
userId: UserId, userId: UserId,
onlyIfBanned: Boolean? = null onlyIfBanned: Boolean? = null
): Boolean = execute(UnbanChatMember(chatId, userId, onlyIfBanned)) ): Unit = execute(UnbanChatMember(chatId, userId, onlyIfBanned))
public suspend fun TelegramBot.unbanChatMember( public suspend fun TelegramBot.unbanChatMember(
chat: PublicChat, chat: PublicChat,
userId: UserId, userId: UserId,
onlyIfBanned: Boolean? = null onlyIfBanned: Boolean? = null
): Boolean = unbanChatMember(chat.id, userId, onlyIfBanned) ): Unit = unbanChatMember(chat.id, userId, onlyIfBanned)
public suspend fun TelegramBot.unbanChatMember( public suspend fun TelegramBot.unbanChatMember(
chatId: IdChatIdentifier, chatId: IdChatIdentifier,
user: User, user: User,
onlyIfBanned: Boolean? = null onlyIfBanned: Boolean? = null
): Boolean = unbanChatMember(chatId, user.id, onlyIfBanned) ): Unit = unbanChatMember(chatId, user.id, onlyIfBanned)
public suspend fun TelegramBot.unbanChatMember( public suspend fun TelegramBot.unbanChatMember(
chat: PublicChat, chat: PublicChat,
user: User, user: User,
onlyIfBanned: Boolean? = null onlyIfBanned: Boolean? = null
): Boolean = unbanChatMember(chat.id, user.id, onlyIfBanned) ): Unit = unbanChatMember(chat.id, user.id, onlyIfBanned)

View File

@@ -9,19 +9,19 @@ import dev.inmo.tgbotapi.types.chat.PublicChat
public suspend fun TelegramBot.unbanChatSenderChat( public suspend fun TelegramBot.unbanChatSenderChat(
chatId: ChatIdentifier, chatId: ChatIdentifier,
senderChatId: IdChatIdentifier senderChatId: IdChatIdentifier
): Boolean = execute(UnbanChatSenderChat(chatId, senderChatId)) ): Unit = execute(UnbanChatSenderChat(chatId, senderChatId))
public suspend fun TelegramBot.unbanChatSenderChat( public suspend fun TelegramBot.unbanChatSenderChat(
chat: PublicChat, chat: PublicChat,
senderChatId: IdChatIdentifier senderChatId: IdChatIdentifier
): Boolean = unbanChatSenderChat(chat.id, senderChatId) ): Unit = unbanChatSenderChat(chat.id, senderChatId)
public suspend fun TelegramBot.unbanChatSenderChat( public suspend fun TelegramBot.unbanChatSenderChat(
chatId: IdChatIdentifier, chatId: IdChatIdentifier,
senderChat: PublicChat senderChat: PublicChat
): Boolean = unbanChatSenderChat(chatId, senderChat.id) ): Unit = unbanChatSenderChat(chatId, senderChat.id)
public suspend fun TelegramBot.unbanChatSenderChat( public suspend fun TelegramBot.unbanChatSenderChat(
chat: PublicChat, chat: PublicChat,
senderChat: PublicChat, senderChat: PublicChat,
): Boolean = unbanChatSenderChat(chat.id, senderChat) ): Unit = unbanChatSenderChat(chat.id, senderChat)

View File

@@ -7,8 +7,8 @@ import dev.inmo.tgbotapi.types.chat.PublicChat
public suspend fun TelegramBot.deleteChatPhoto( public suspend fun TelegramBot.deleteChatPhoto(
chatId: ChatIdentifier chatId: ChatIdentifier
): Boolean = execute(DeleteChatPhoto(chatId)) ): Unit = execute(DeleteChatPhoto(chatId))
public suspend fun TelegramBot.deleteChatPhoto( public suspend fun TelegramBot.deleteChatPhoto(
chat: PublicChat chat: PublicChat
): Boolean = deleteChatPhoto(chat.id) ): Unit = deleteChatPhoto(chat.id)

View File

@@ -14,17 +14,17 @@ public suspend fun TelegramBot.pinChatMessage(
messageId: MessageId, messageId: MessageId,
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId, businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
disableNotification: Boolean = false disableNotification: Boolean = false
): Boolean = execute(PinChatMessage(chatId, messageId, businessConnectionId, disableNotification)) ): Unit = execute(PinChatMessage(chatId, messageId, businessConnectionId, disableNotification))
public suspend fun TelegramBot.pinChatMessage( public suspend fun TelegramBot.pinChatMessage(
chat: Chat, chat: Chat,
messageId: MessageId, messageId: MessageId,
businessConnectionId: BusinessConnectionId? = chat.id.businessConnectionId, businessConnectionId: BusinessConnectionId? = chat.id.businessConnectionId,
disableNotification: Boolean = false disableNotification: Boolean = false
): Boolean = pinChatMessage(chat.id, messageId, businessConnectionId, disableNotification) ): Unit = pinChatMessage(chat.id, messageId, businessConnectionId, disableNotification)
public suspend fun TelegramBot.pinChatMessage( public suspend fun TelegramBot.pinChatMessage(
message: AccessibleMessage, message: AccessibleMessage,
businessConnectionId: BusinessConnectionId? = message.chat.id.businessConnectionId, businessConnectionId: BusinessConnectionId? = message.chat.id.businessConnectionId,
disableNotification: Boolean = false disableNotification: Boolean = false
): Boolean = pinChatMessage(message.chat.id, message.messageId, businessConnectionId, disableNotification) ): Unit = pinChatMessage(message.chat.id, message.messageId, businessConnectionId, disableNotification)

View File

@@ -8,9 +8,9 @@ import dev.inmo.tgbotapi.types.chat.PublicChat
public suspend fun TelegramBot.setChatDescription( public suspend fun TelegramBot.setChatDescription(
chatId: ChatIdentifier, chatId: ChatIdentifier,
description: String description: String
): Boolean = execute(SetChatDescription(chatId, description)) ): Unit = execute(SetChatDescription(chatId, description))
public suspend fun TelegramBot.setChatDescription( public suspend fun TelegramBot.setChatDescription(
chat: PublicChat, chat: PublicChat,
description: String description: String
): Boolean = setChatDescription(chat.id, description) ): Unit = setChatDescription(chat.id, description)

View File

@@ -9,9 +9,9 @@ import dev.inmo.tgbotapi.types.chat.PrivateChat
public suspend fun TelegramBot.setChatMenuButton( public suspend fun TelegramBot.setChatMenuButton(
chatId: IdChatIdentifier, chatId: IdChatIdentifier,
menuButton: MenuButton menuButton: MenuButton
): Boolean = execute(SetChatMenuButton(chatId, menuButton)) ): Unit = execute(SetChatMenuButton(chatId, menuButton))
public suspend fun TelegramBot.setChatMenuButton( public suspend fun TelegramBot.setChatMenuButton(
chat: PrivateChat, chat: PrivateChat,
menuButton: MenuButton menuButton: MenuButton
): Boolean = setChatMenuButton(chat.id, menuButton) ): Unit = setChatMenuButton(chat.id, menuButton)

View File

@@ -10,10 +10,10 @@ public suspend fun TelegramBot.setDefaultChatMembersPermissions(
chatId: ChatIdentifier, chatId: ChatIdentifier,
permissions: ChatPermissions, permissions: ChatPermissions,
useIndependentChatPermissions: Boolean? = permissions.isGranular.takeIf { it } useIndependentChatPermissions: Boolean? = permissions.isGranular.takeIf { it }
): Boolean = execute(SetChatPermissions(chatId, permissions, useIndependentChatPermissions)) ): Unit = execute(SetChatPermissions(chatId, permissions, useIndependentChatPermissions))
public suspend fun TelegramBot.setDefaultChatMembersPermissions( public suspend fun TelegramBot.setDefaultChatMembersPermissions(
chat: PublicChat, chat: PublicChat,
permissions: ChatPermissions, permissions: ChatPermissions,
useIndependentChatPermissions: Boolean? = permissions.isGranular.takeIf { it } useIndependentChatPermissions: Boolean? = permissions.isGranular.takeIf { it }
): Boolean = setDefaultChatMembersPermissions(chat.id, permissions, useIndependentChatPermissions) ): Unit = setDefaultChatMembersPermissions(chat.id, permissions, useIndependentChatPermissions)

View File

@@ -9,9 +9,9 @@ import dev.inmo.tgbotapi.types.chat.PublicChat
public suspend fun TelegramBot.setChatPhoto( public suspend fun TelegramBot.setChatPhoto(
chatId: ChatIdentifier, chatId: ChatIdentifier,
photo: MultipartFile photo: MultipartFile
): Boolean = execute(SetChatPhoto(chatId, photo)) ): Unit = execute(SetChatPhoto(chatId, photo))
public suspend fun TelegramBot.setChatPhoto( public suspend fun TelegramBot.setChatPhoto(
chat: PublicChat, chat: PublicChat,
photo: MultipartFile photo: MultipartFile
): Boolean = setChatPhoto(chat.id, photo) ): Unit = setChatPhoto(chat.id, photo)

View File

@@ -8,9 +8,9 @@ import dev.inmo.tgbotapi.types.chat.PublicChat
public suspend fun TelegramBot.setChatTitle( public suspend fun TelegramBot.setChatTitle(
chatId: ChatIdentifier, chatId: ChatIdentifier,
title: String title: String
): Boolean = execute(SetChatTitle(chatId, title)) ): Unit = execute(SetChatTitle(chatId, title))
public suspend fun TelegramBot.setChatTitle( public suspend fun TelegramBot.setChatTitle(
chat: PublicChat, chat: PublicChat,
title: String title: String
): Boolean = setChatTitle(chat.id, title) ): Unit = setChatTitle(chat.id, title)

View File

@@ -6,4 +6,4 @@ import dev.inmo.tgbotapi.types.MenuButton
public suspend fun TelegramBot.setDefaultChatMenuButton( public suspend fun TelegramBot.setDefaultChatMenuButton(
menuButton: MenuButton menuButton: MenuButton
): Boolean = execute(SetDefaultChatMenuButton(menuButton)) ): Unit = execute(SetDefaultChatMenuButton(menuButton))

View File

@@ -7,8 +7,8 @@ import dev.inmo.tgbotapi.types.chat.Chat
public suspend fun TelegramBot.unpinAllChatMessages( public suspend fun TelegramBot.unpinAllChatMessages(
chatId: ChatIdentifier chatId: ChatIdentifier
): Boolean = execute(UnpinAllChatMessages(chatId)) ): Unit = execute(UnpinAllChatMessages(chatId))
public suspend fun TelegramBot.unpinAllChatMessages( public suspend fun TelegramBot.unpinAllChatMessages(
chat: Chat chat: Chat
): Boolean = unpinAllChatMessages(chat.id) ): Unit = unpinAllChatMessages(chat.id)

View File

@@ -13,15 +13,15 @@ public suspend fun TelegramBot.unpinChatMessage(
chatId: ChatIdentifier, chatId: ChatIdentifier,
messageId: MessageId? = null, messageId: MessageId? = null,
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId
): Boolean = execute(UnpinChatMessage(chatId, messageId, businessConnectionId)) ): Unit = execute(UnpinChatMessage(chatId, messageId, businessConnectionId))
public suspend fun TelegramBot.unpinChatMessage( public suspend fun TelegramBot.unpinChatMessage(
chat: Chat, chat: Chat,
messageId: MessageId? = null, messageId: MessageId? = null,
businessConnectionId: BusinessConnectionId? = chat.id.businessConnectionId businessConnectionId: BusinessConnectionId? = chat.id.businessConnectionId
): Boolean = unpinChatMessage(chat.id, messageId, businessConnectionId) ): Unit = unpinChatMessage(chat.id, messageId, businessConnectionId)
public suspend fun TelegramBot.unpinChatMessage( public suspend fun TelegramBot.unpinChatMessage(
message: AccessibleMessage, message: AccessibleMessage,
businessConnectionId: BusinessConnectionId? = message.chat.id.businessConnectionId, businessConnectionId: BusinessConnectionId? = message.chat.id.businessConnectionId,
): Boolean = unpinChatMessage(message.chat.id, message.messageId, businessConnectionId) ): Unit = unpinChatMessage(message.chat.id, message.messageId, businessConnectionId)

View File

@@ -7,8 +7,8 @@ import dev.inmo.tgbotapi.types.chat.SupergroupChat
public suspend fun TelegramBot.deleteChatStickerSet( public suspend fun TelegramBot.deleteChatStickerSet(
chatId: ChatIdentifier chatId: ChatIdentifier
): Boolean = execute(DeleteChatStickerSet(chatId)) ): Unit = execute(DeleteChatStickerSet(chatId))
public suspend fun TelegramBot.deleteChatStickerSet( public suspend fun TelegramBot.deleteChatStickerSet(
chat: SupergroupChat chat: SupergroupChat
): Boolean = deleteChatStickerSet(chat.id) ): Unit = deleteChatStickerSet(chat.id)

View File

@@ -9,9 +9,9 @@ import dev.inmo.tgbotapi.types.chat.SupergroupChat
public suspend fun TelegramBot.setChatStickerSet( public suspend fun TelegramBot.setChatStickerSet(
chatId: ChatIdentifier, chatId: ChatIdentifier,
stickerSetName: StickerSetName stickerSetName: StickerSetName
): Boolean = execute(SetChatStickerSet(chatId, stickerSetName)) ): Unit = execute(SetChatStickerSet(chatId, stickerSetName))
public suspend fun TelegramBot.setChatStickerSet( public suspend fun TelegramBot.setChatStickerSet(
chat: SupergroupChat, chat: SupergroupChat,
stickerSetName: StickerSetName stickerSetName: StickerSetName
): Boolean = setChatStickerSet(chat.id, stickerSetName) ): Unit = setChatStickerSet(chat.id, stickerSetName)

View File

@@ -27,7 +27,7 @@ public suspend fun TelegramBot.edit(
heading: Degrees? = null, heading: Degrees? = null,
proximityAlertRadius: Meters? = null, proximityAlertRadius: Meters? = null,
replyMarkup: InlineKeyboardMarkup? = null replyMarkup: InlineKeyboardMarkup? = null
): Boolean = editLiveLocation(messageId, latitude, longitude, horizontalAccuracy, heading, proximityAlertRadius, replyMarkup) ): Unit = editLiveLocation(messageId, latitude, longitude, horizontalAccuracy, heading, proximityAlertRadius, replyMarkup)
/** /**
* @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard]
@@ -37,7 +37,7 @@ public suspend fun TelegramBot.edit(
messageId: InlineMessageId, messageId: InlineMessageId,
location: LiveLocation, location: LiveLocation,
replyMarkup: InlineKeyboardMarkup? = null replyMarkup: InlineKeyboardMarkup? = null
): Boolean = editLiveLocation( ): Unit = editLiveLocation(
messageId, location, replyMarkup messageId, location, replyMarkup
) )
@@ -49,7 +49,7 @@ public suspend fun TelegramBot.edit(
messageId: InlineMessageId, messageId: InlineMessageId,
media: TelegramFreeMedia, media: TelegramFreeMedia,
replyMarkup: InlineKeyboardMarkup? = null replyMarkup: InlineKeyboardMarkup? = null
): Boolean = editMessageMedia(messageId, media, replyMarkup) ): Unit = editMessageMedia(messageId, media, replyMarkup)
/** /**
* @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard]
@@ -58,7 +58,7 @@ public suspend fun TelegramBot.edit(
public suspend fun TelegramBot.edit( public suspend fun TelegramBot.edit(
messageId: InlineMessageId, messageId: InlineMessageId,
replyMarkup: InlineKeyboardMarkup? = null replyMarkup: InlineKeyboardMarkup? = null
): Boolean = editMessageReplyMarkup(messageId, replyMarkup) ): Unit = editMessageReplyMarkup(messageId, replyMarkup)
/** /**
* @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard]
@@ -71,7 +71,7 @@ public suspend fun TelegramBot.edit(
showCaptionAboveMedia: Boolean = false, showCaptionAboveMedia: Boolean = false,
linkPreviewOptions: LinkPreviewOptions? = null, linkPreviewOptions: LinkPreviewOptions? = null,
replyMarkup: InlineKeyboardMarkup? = null replyMarkup: InlineKeyboardMarkup? = null
): Boolean = editMessageText(messageId, text, parseMode, showCaptionAboveMedia, linkPreviewOptions, replyMarkup) ): Unit = editMessageText(messageId, text, parseMode, showCaptionAboveMedia, linkPreviewOptions, replyMarkup)
/** /**
* @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard]
@@ -83,7 +83,7 @@ public suspend fun TelegramBot.edit(
showCaptionAboveMedia: Boolean = false, showCaptionAboveMedia: Boolean = false,
linkPreviewOptions: LinkPreviewOptions? = null, linkPreviewOptions: LinkPreviewOptions? = null,
replyMarkup: InlineKeyboardMarkup? = null replyMarkup: InlineKeyboardMarkup? = null
): Boolean = editMessageText(messageId, entities, showCaptionAboveMedia, linkPreviewOptions, replyMarkup) ): Unit = editMessageText(messageId, entities, showCaptionAboveMedia, linkPreviewOptions, replyMarkup)
/** /**
* @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard]
@@ -96,7 +96,7 @@ public suspend fun TelegramBot.edit(
linkPreviewOptions: LinkPreviewOptions? = null, linkPreviewOptions: LinkPreviewOptions? = null,
replyMarkup: InlineKeyboardMarkup? = null, replyMarkup: InlineKeyboardMarkup? = null,
builderBody: EntitiesBuilderBody builderBody: EntitiesBuilderBody
): Boolean = edit(messageId, buildEntities(separator, builderBody), showCaptionAboveMedia, linkPreviewOptions, replyMarkup) ): Unit = edit(messageId, buildEntities(separator, builderBody), showCaptionAboveMedia, linkPreviewOptions, replyMarkup)
/** /**
* @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard]
@@ -109,4 +109,4 @@ public suspend fun TelegramBot.edit(
linkPreviewOptions: LinkPreviewOptions? = null, linkPreviewOptions: LinkPreviewOptions? = null,
replyMarkup: InlineKeyboardMarkup? = null, replyMarkup: InlineKeyboardMarkup? = null,
builderBody: EntitiesBuilderBody builderBody: EntitiesBuilderBody
): Boolean = edit(messageId, buildEntities(separator, builderBody), showCaptionAboveMedia, linkPreviewOptions, replyMarkup) ): Unit = edit(messageId, buildEntities(separator, builderBody), showCaptionAboveMedia, linkPreviewOptions, replyMarkup)

View File

@@ -16,7 +16,7 @@ public suspend fun TelegramBot.editMessageCaption(
text: String, text: String,
parseMode: ParseMode? = null, parseMode: ParseMode? = null,
replyMarkup: InlineKeyboardMarkup? = null replyMarkup: InlineKeyboardMarkup? = null
): Boolean = execute(EditInlineMessageCaption(inlineMessageId, text, parseMode, replyMarkup)) ): Unit = execute(EditInlineMessageCaption(inlineMessageId, text, parseMode, replyMarkup))
/** /**
* @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard]
@@ -26,4 +26,4 @@ public suspend fun TelegramBot.editMessageCaption(
inlineMessageId: InlineMessageId, inlineMessageId: InlineMessageId,
entities: TextSourcesList, entities: TextSourcesList,
replyMarkup: InlineKeyboardMarkup? = null replyMarkup: InlineKeyboardMarkup? = null
): Boolean = execute(EditInlineMessageCaption(inlineMessageId, entities, replyMarkup)) ): Unit = execute(EditInlineMessageCaption(inlineMessageId, entities, replyMarkup))

View File

@@ -0,0 +1,47 @@
package dev.inmo.tgbotapi.extensions.api.edit.checklist
import dev.inmo.tgbotapi.bot.TelegramBot
import dev.inmo.tgbotapi.requests.edit.checklist.EditMessageChecklist
import dev.inmo.tgbotapi.types.ChatIdentifier
import dev.inmo.tgbotapi.types.MessageId
import dev.inmo.tgbotapi.types.businessConnectionIdField
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
import dev.inmo.tgbotapi.types.checklistField
import dev.inmo.tgbotapi.types.checklists.Checklist
import dev.inmo.tgbotapi.types.message.abstracts.BusinessContentMessage
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
import dev.inmo.tgbotapi.types.message.content.ChecklistContent
import dev.inmo.tgbotapi.types.messageIdField
import dev.inmo.tgbotapi.types.replyMarkupField
import kotlinx.serialization.SerialName
public suspend fun TelegramBot.editMessageChecklist(
chatId: ChatIdentifier,
messageId: MessageId,
businessConnectionId: BusinessConnectionId,
checklist: Checklist.Input,
replyMarkup: InlineKeyboardMarkup? = null
): ContentMessage<ChecklistContent> = execute(
EditMessageChecklist(
chatId = chatId,
messageId = messageId,
businessConnectionId = businessConnectionId,
checklist = checklist,
replyMarkup = replyMarkup
)
)
public suspend fun TelegramBot.editMessageChecklist(
message: BusinessContentMessage<ChecklistContent>,
checklist: Checklist.Input,
replyMarkup: InlineKeyboardMarkup? = null
): ContentMessage<ChecklistContent> = execute(
EditMessageChecklist(
chatId = message.chat.id,
messageId = message.messageId,
businessConnectionId = message.businessConnectionId,
checklist = checklist,
replyMarkup = replyMarkup
)
)

View File

@@ -14,7 +14,7 @@ public suspend fun TelegramBot.editLiveLocation(
heading: Degrees? = null, heading: Degrees? = null,
proximityAlertRadius: Meters? = null, proximityAlertRadius: Meters? = null,
replyMarkup: InlineKeyboardMarkup? = null replyMarkup: InlineKeyboardMarkup? = null
): Boolean = execute( ): Unit = execute(
EditInlineMessageLiveLocation( EditInlineMessageLiveLocation(
inlineMessageId, latitude, longitude, horizontalAccuracy, heading, proximityAlertRadius, replyMarkup inlineMessageId, latitude, longitude, horizontalAccuracy, heading, proximityAlertRadius, replyMarkup
) )
@@ -23,4 +23,4 @@ public suspend fun TelegramBot.editLiveLocation(
inlineMessageId: InlineMessageId, inlineMessageId: InlineMessageId,
location: LiveLocation, location: LiveLocation,
replyMarkup: InlineKeyboardMarkup? = null replyMarkup: InlineKeyboardMarkup? = null
): Boolean = editLiveLocation(inlineMessageId, location.latitude, location.longitude, location.horizontalAccuracy, location.heading, location.proximityAlertRadius, replyMarkup) ): Unit = editLiveLocation(inlineMessageId, location.latitude, location.longitude, location.horizontalAccuracy, location.heading, location.proximityAlertRadius, replyMarkup)

View File

@@ -12,7 +12,7 @@ import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
public suspend fun TelegramBot.stopLiveLocation( public suspend fun TelegramBot.stopLiveLocation(
inlineMessageId: InlineMessageId, inlineMessageId: InlineMessageId,
replyMarkup: InlineKeyboardMarkup? = null replyMarkup: InlineKeyboardMarkup? = null
): Boolean = execute( ): Unit = execute(
StopInlineMessageLiveLocation( StopInlineMessageLiveLocation(
inlineMessageId, replyMarkup inlineMessageId, replyMarkup
) )

View File

@@ -1,3 +1,5 @@
@file:Suppress("KDocUnresolvedReference")
package dev.inmo.tgbotapi.extensions.api.edit.media package dev.inmo.tgbotapi.extensions.api.edit.media
import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.bot.TelegramBot
@@ -45,7 +47,7 @@ public suspend fun TelegramBot.editMessageMedia(
* as a builder for that * as a builder for that
*/ */
public suspend fun TelegramBot.editMessageMedia( public suspend fun TelegramBot.editMessageMedia(
message: ContentMessage<out MediaContent>, message: ContentMessage<MediaContent>,
media: TelegramFreeMedia, media: TelegramFreeMedia,
businessConnectionId: BusinessConnectionId? = message.chat.id.businessConnectionId, businessConnectionId: BusinessConnectionId? = message.chat.id.businessConnectionId,
replyMarkup: InlineKeyboardMarkup? = null replyMarkup: InlineKeyboardMarkup? = null

View File

@@ -14,4 +14,4 @@ public suspend fun TelegramBot.editMessageMedia(
inlineMessageId: InlineMessageId, inlineMessageId: InlineMessageId,
media: TelegramFreeMedia, media: TelegramFreeMedia,
replyMarkup: InlineKeyboardMarkup? = null replyMarkup: InlineKeyboardMarkup? = null
): Boolean = execute(EditInlineMessageMedia(inlineMessageId, media, replyMarkup)) ): Unit = execute(EditInlineMessageMedia(inlineMessageId, media, replyMarkup))

View File

@@ -10,7 +10,7 @@ public suspend fun TelegramBot.editUserStarSubscription(
userId: UserId, userId: UserId,
telegramPaymentChargeId: TelegramPaymentChargeId, telegramPaymentChargeId: TelegramPaymentChargeId,
isCanceled: Boolean isCanceled: Boolean
): Boolean = execute( ): Unit = execute(
EditUserStarSubscription( EditUserStarSubscription(
userId = userId, userId = userId,
telegramPaymentChargeId = telegramPaymentChargeId, telegramPaymentChargeId = telegramPaymentChargeId,
@@ -22,7 +22,7 @@ public suspend fun TelegramBot.editUserStarSubscription(
user: User, user: User,
telegramPaymentChargeId: TelegramPaymentChargeId, telegramPaymentChargeId: TelegramPaymentChargeId,
isCanceled: Boolean isCanceled: Boolean
): Boolean = editUserStarSubscription( ): Unit = editUserStarSubscription(
userId = user.id, userId = user.id,
telegramPaymentChargeId = telegramPaymentChargeId, telegramPaymentChargeId = telegramPaymentChargeId,
isCanceled = isCanceled isCanceled = isCanceled
@@ -31,7 +31,7 @@ public suspend fun TelegramBot.editUserStarSubscription(
public suspend fun TelegramBot.cancelUserStarSubscription( public suspend fun TelegramBot.cancelUserStarSubscription(
userId: UserId, userId: UserId,
telegramPaymentChargeId: TelegramPaymentChargeId, telegramPaymentChargeId: TelegramPaymentChargeId,
): Boolean = editUserStarSubscription( ): Unit = editUserStarSubscription(
userId = userId, userId = userId,
telegramPaymentChargeId = telegramPaymentChargeId, telegramPaymentChargeId = telegramPaymentChargeId,
isCanceled = true isCanceled = true
@@ -40,7 +40,7 @@ public suspend fun TelegramBot.cancelUserStarSubscription(
public suspend fun TelegramBot.cancelUserStarSubscription( public suspend fun TelegramBot.cancelUserStarSubscription(
user: User, user: User,
telegramPaymentChargeId: TelegramPaymentChargeId, telegramPaymentChargeId: TelegramPaymentChargeId,
): Boolean = editUserStarSubscription( ): Unit = editUserStarSubscription(
user = user, user = user,
telegramPaymentChargeId = telegramPaymentChargeId, telegramPaymentChargeId = telegramPaymentChargeId,
isCanceled = true isCanceled = true
@@ -49,7 +49,7 @@ public suspend fun TelegramBot.cancelUserStarSubscription(
public suspend fun TelegramBot.enableUserStarSubscription( public suspend fun TelegramBot.enableUserStarSubscription(
userId: UserId, userId: UserId,
telegramPaymentChargeId: TelegramPaymentChargeId, telegramPaymentChargeId: TelegramPaymentChargeId,
): Boolean = editUserStarSubscription( ): Unit = editUserStarSubscription(
userId = userId, userId = userId,
telegramPaymentChargeId = telegramPaymentChargeId, telegramPaymentChargeId = telegramPaymentChargeId,
isCanceled = false isCanceled = false
@@ -58,7 +58,7 @@ public suspend fun TelegramBot.enableUserStarSubscription(
public suspend fun TelegramBot.enableUserStarSubscription( public suspend fun TelegramBot.enableUserStarSubscription(
user: User, user: User,
telegramPaymentChargeId: TelegramPaymentChargeId, telegramPaymentChargeId: TelegramPaymentChargeId,
): Boolean = editUserStarSubscription( ): Unit = editUserStarSubscription(
user = user, user = user,
telegramPaymentChargeId = telegramPaymentChargeId, telegramPaymentChargeId = telegramPaymentChargeId,
isCanceled = false isCanceled = false

View File

@@ -12,4 +12,4 @@ import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
public suspend fun TelegramBot.editMessageReplyMarkup( public suspend fun TelegramBot.editMessageReplyMarkup(
inlineMessageId: InlineMessageId, inlineMessageId: InlineMessageId,
replyMarkup: InlineKeyboardMarkup? = null replyMarkup: InlineKeyboardMarkup? = null
): Boolean = execute(EditInlineMessageReplyMarkup(inlineMessageId, replyMarkup)) ): Unit = execute(EditInlineMessageReplyMarkup(inlineMessageId, replyMarkup))

View File

@@ -22,7 +22,7 @@ public suspend fun TelegramBot.editMessageText(
showCaptionAboveMedia: Boolean = false, showCaptionAboveMedia: Boolean = false,
linkPreviewOptions: LinkPreviewOptions? = null, linkPreviewOptions: LinkPreviewOptions? = null,
replyMarkup: InlineKeyboardMarkup? = null replyMarkup: InlineKeyboardMarkup? = null
): Boolean = execute(EditInlineMessageText(inlineMessageId, text, parseMode, showCaptionAboveMedia, linkPreviewOptions, replyMarkup)) ): Unit = execute(EditInlineMessageText(inlineMessageId, text, parseMode, showCaptionAboveMedia, linkPreviewOptions, replyMarkup))
/** /**
* @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard]
@@ -34,7 +34,7 @@ public suspend fun TelegramBot.editMessageText(
showCaptionAboveMedia: Boolean = false, showCaptionAboveMedia: Boolean = false,
linkPreviewOptions: LinkPreviewOptions? = null, linkPreviewOptions: LinkPreviewOptions? = null,
replyMarkup: InlineKeyboardMarkup? = null replyMarkup: InlineKeyboardMarkup? = null
): Boolean = execute(EditInlineMessageText(inlineMessageId, entities, showCaptionAboveMedia, linkPreviewOptions, replyMarkup)) ): Unit = execute(EditInlineMessageText(inlineMessageId, entities, showCaptionAboveMedia, linkPreviewOptions, replyMarkup))
/** /**
* @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard]
@@ -47,7 +47,7 @@ public suspend fun TelegramBot.editMessageText(
linkPreviewOptions: LinkPreviewOptions? = null, linkPreviewOptions: LinkPreviewOptions? = null,
replyMarkup: InlineKeyboardMarkup? = null, replyMarkup: InlineKeyboardMarkup? = null,
builderBody: EntitiesBuilderBody builderBody: EntitiesBuilderBody
): Boolean = editMessageText(inlineMessageId, buildEntities(separator, builderBody), showCaptionAboveMedia, linkPreviewOptions, replyMarkup) ): Unit = editMessageText(inlineMessageId, buildEntities(separator, builderBody), showCaptionAboveMedia, linkPreviewOptions, replyMarkup)
/** /**
* @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] * @param replyMarkup Some [InlineKeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard]
@@ -60,4 +60,4 @@ public suspend fun TelegramBot.editMessageText(
linkPreviewOptions: LinkPreviewOptions? = null, linkPreviewOptions: LinkPreviewOptions? = null,
replyMarkup: InlineKeyboardMarkup? = null, replyMarkup: InlineKeyboardMarkup? = null,
builderBody: EntitiesBuilderBody builderBody: EntitiesBuilderBody
): Boolean = editMessageText(inlineMessageId, buildEntities(separator, builderBody), showCaptionAboveMedia, linkPreviewOptions, replyMarkup) ): Unit = editMessageText(inlineMessageId, buildEntities(separator, builderBody), showCaptionAboveMedia, linkPreviewOptions, replyMarkup)

View File

@@ -15,7 +15,7 @@ public suspend fun TelegramBot.setGameScore(
messageId: MessageId, messageId: MessageId,
force: Boolean = false, force: Boolean = false,
disableEditMessage: Boolean = false disableEditMessage: Boolean = false
): Boolean = execute( ): Unit = execute(
SetGameScoreByChatId(userId, score, chatId, messageId, force, disableEditMessage) SetGameScoreByChatId(userId, score, chatId, messageId, force, disableEditMessage)
) )
@@ -26,7 +26,7 @@ public suspend fun TelegramBot.setGameScore(
messageId: MessageId, messageId: MessageId,
force: Boolean = false, force: Boolean = false,
disableEditMessage: Boolean = false disableEditMessage: Boolean = false
): Boolean = setGameScore( ): Unit = setGameScore(
user.id, score, chatId, messageId, force, disableEditMessage user.id, score, chatId, messageId, force, disableEditMessage
) )
@@ -37,7 +37,7 @@ public suspend fun TelegramBot.setGameScore(
messageId: MessageId, messageId: MessageId,
force: Boolean = false, force: Boolean = false,
disableEditMessage: Boolean = false disableEditMessage: Boolean = false
): Boolean = setGameScore( ): Unit = setGameScore(
userId, score, chat.id, messageId, force, disableEditMessage userId, score, chat.id, messageId, force, disableEditMessage
) )
@@ -48,7 +48,7 @@ public suspend fun TelegramBot.setGameScore(
messageId: MessageId, messageId: MessageId,
force: Boolean = false, force: Boolean = false,
disableEditMessage: Boolean = false disableEditMessage: Boolean = false
): Boolean = setGameScore( ): Unit = setGameScore(
user.id, score, chat.id, messageId, force, disableEditMessage user.id, score, chat.id, messageId, force, disableEditMessage
) )
@@ -58,7 +58,7 @@ public suspend fun TelegramBot.setGameScore(
message: ContentMessage<GameContent>, message: ContentMessage<GameContent>,
force: Boolean = false, force: Boolean = false,
disableEditMessage: Boolean = false disableEditMessage: Boolean = false
): Boolean = setGameScore( ): Unit = setGameScore(
userId, score, message.chat.id, message.messageId, force, disableEditMessage userId, score, message.chat.id, message.messageId, force, disableEditMessage
) )
@@ -68,6 +68,6 @@ public suspend fun TelegramBot.setGameScore(
message: ContentMessage<GameContent>, message: ContentMessage<GameContent>,
force: Boolean = false, force: Boolean = false,
disableEditMessage: Boolean = false disableEditMessage: Boolean = false
): Boolean = setGameScore( ): Unit = setGameScore(
user.id, score, message.chat.id, message.messageId, force, disableEditMessage user.id, score, message.chat.id, message.messageId, force, disableEditMessage
) )

Some files were not shown because too many files have changed in this diff Show More