multibotkit 0.1.33__py3-none-any.whl → 0.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
- from io import BytesIO
2
1
  import json
3
- from typing import IO, Optional, Union, List, Tuple
2
+ from io import BytesIO
3
+ from typing import IO, List, Optional, Tuple, Union
4
4
 
5
5
  import aiofiles
6
6
  import httpx
@@ -10,30 +10,31 @@ from tenacity import (
10
10
  stop_after_attempt,
11
11
  wait_exponential,
12
12
  )
13
+
13
14
  from multibotkit.helpers.base_helper import BaseHelper
14
15
  from multibotkit.schemas.telegram.outgoing import (
15
16
  Animation,
16
17
  Audio,
18
+ BotCommand,
19
+ CopyMessage,
20
+ DeleteMessage,
21
+ DeleteWebhookParams,
17
22
  Document,
18
23
  EditMessageMediaModel,
19
24
  InlineKeyboardMarkup,
20
25
  InputMedia,
21
26
  InputMediaPhoto,
27
+ Location,
28
+ MediaGroup,
22
29
  Message,
23
30
  Photo,
24
31
  ReplyKeyboardMarkup,
25
- SetWebhookParams,
26
- WebhookInfo,
27
- MediaGroup,
28
32
  ReplyKeyboardRemove,
33
+ SetMyCommands,
34
+ SetWebhookParams,
29
35
  Sticker,
30
36
  Video,
31
- Location,
32
- DeleteWebhookParams,
33
- DeleteMessage,
34
- CopyMessage,
35
- BotCommand,
36
- SetMyCommands,
37
+ WebhookInfo,
37
38
  )
38
39
 
39
40
 
@@ -61,34 +62,44 @@ class TelegramHelper(BaseHelper):
61
62
  return None
62
63
 
63
64
  def sync_set_webhook(
64
- self, webhook_url: str, allowed_updates: Optional[List[str]] = None
65
+ self,
66
+ webhook_url: str,
67
+ allowed_updates: Optional[List[str]] = None,
68
+ secret_token: Optional[str] = None,
65
69
  ):
66
70
  url = self.tg_base_url + "setWebhook"
67
- params = SetWebhookParams(url=webhook_url, allowed_updates=allowed_updates)
68
- data = params.dict(exclude_none=True)
71
+ params = SetWebhookParams(
72
+ url=webhook_url, allowed_updates=allowed_updates, secret_token=secret_token
73
+ )
74
+ data = params.model_dump(exclude_none=True)
69
75
  r = self._perform_sync_request(url, data)
70
76
  return r
71
77
 
72
78
  async def async_set_webhook(
73
- self, webhook_url: str, allowed_updates: Optional[List[str]] = None
79
+ self,
80
+ webhook_url: str,
81
+ allowed_updates: Optional[List[str]] = None,
82
+ secret_token: Optional[str] = None,
74
83
  ):
75
84
  url = self.tg_base_url + "setWebhook"
76
- params = SetWebhookParams(url=webhook_url, allowed_updates=allowed_updates)
77
- data = params.dict(exclude_none=True)
85
+ params = SetWebhookParams(
86
+ url=webhook_url, allowed_updates=allowed_updates, secret_token=secret_token
87
+ )
88
+ data = params.model_dump(exclude_none=True)
78
89
  r = await self._perform_async_request(url, data)
79
90
  return r
80
91
 
81
92
  def sync_delete_webhook(self, drop_pending_updates: Optional[bool] = False):
82
93
  url = self.tg_base_url + "deleteWebhook"
83
94
  params = DeleteWebhookParams(drop_pending_updates=drop_pending_updates)
84
- data = params.dict(exclude_none=True)
95
+ data = params.model_dump(exclude_none=True)
85
96
  r = self._perform_sync_request(url, data)
86
97
  return r
87
98
 
88
99
  async def async_delete_webhook(self, drop_pending_updates: Optional[bool] = False):
89
100
  url = self.tg_base_url + "deleteWebhook"
90
101
  params = DeleteWebhookParams(drop_pending_updates=drop_pending_updates)
91
- data = params.dict(exclude_none=True)
102
+ data = params.model_dump(exclude_none=True)
92
103
  r = await self._perform_async_request(url, data)
93
104
  return r
94
105
 
@@ -108,7 +119,7 @@ class TelegramHelper(BaseHelper):
108
119
  longitude=longitude,
109
120
  reply_markup=reply_markup,
110
121
  )
111
- data = params.dict(exclude_none=True)
122
+ data = params.model_dump(exclude_none=True)
112
123
  r = self._perform_sync_request(url, data)
113
124
  return r
114
125
 
@@ -128,7 +139,7 @@ class TelegramHelper(BaseHelper):
128
139
  longitude=longitude,
129
140
  reply_markup=reply_markup,
130
141
  )
131
- data = params.dict(exclude_none=True)
142
+ data = params.model_dump(exclude_none=True)
132
143
  r = await self._perform_async_request(url, data)
133
144
  return r
134
145
 
@@ -154,7 +165,7 @@ class TelegramHelper(BaseHelper):
154
165
  allow_sending_without_reply=allow_sending_without_reply,
155
166
  )
156
167
 
157
- data = message.dict(exclude_none=True)
168
+ data = message.model_dump(exclude_none=True)
158
169
  data.update({"parse_mode": parse_mode})
159
170
  r = self._perform_sync_request(url, data)
160
171
  return r
@@ -181,7 +192,7 @@ class TelegramHelper(BaseHelper):
181
192
  allow_sending_without_reply=allow_sending_without_reply,
182
193
  )
183
194
 
184
- data = message.dict(exclude_none=True)
195
+ data = message.model_dump(exclude_none=True)
185
196
  data.update({"parse_mode": parse_mode})
186
197
  r = await self._perform_async_request(url, data)
187
198
  return r
@@ -528,7 +539,7 @@ class TelegramHelper(BaseHelper):
528
539
  url = self.tg_base_url + "deleteMessage"
529
540
  delete_message = DeleteMessage(chat_id=chat_id, message_id=message_id)
530
541
 
531
- r = self._perform_sync_request(url, delete_message.dict())
542
+ r = self._perform_sync_request(url, delete_message.model_dump())
532
543
  return r
533
544
 
534
545
  async def async_delete_message(
@@ -539,7 +550,7 @@ class TelegramHelper(BaseHelper):
539
550
  url = self.tg_base_url + "deleteMessage"
540
551
  delete_message = DeleteMessage(chat_id=chat_id, message_id=message_id)
541
552
 
542
- r = await self._perform_async_request(url, delete_message.dict())
553
+ r = await self._perform_async_request(url, delete_message.model_dump())
543
554
  return r
544
555
 
545
556
  def sync_copy_message(
@@ -553,7 +564,7 @@ class TelegramHelper(BaseHelper):
553
564
  chat_id=chat_id, message_id=message_id, from_chat_id=from_chat_id
554
565
  )
555
566
 
556
- r = self._perform_sync_request(url, copy_message.dict())
567
+ r = self._perform_sync_request(url, copy_message.model_dump())
557
568
  return r
558
569
 
559
570
  async def async_copy_message(
@@ -567,7 +578,7 @@ class TelegramHelper(BaseHelper):
567
578
  chat_id=chat_id, message_id=message_id, from_chat_id=from_chat_id
568
579
  )
569
580
 
570
- r = await self._perform_async_request(url, copy_message.dict())
581
+ r = await self._perform_async_request(url, copy_message.model_dump())
571
582
  return r
572
583
 
573
584
  def sync_edit_message_text(
@@ -588,7 +599,7 @@ class TelegramHelper(BaseHelper):
588
599
  "link_preview_options": {"is_disabled": disable_web_page_preview},
589
600
  }
590
601
  if reply_markup:
591
- data["reply_markup"] = reply_markup.dict(exclude_none=True)
602
+ data["reply_markup"] = reply_markup.model_dump(exclude_none=True)
592
603
 
593
604
  r = self._perform_sync_request(url, data)
594
605
  return r
@@ -611,7 +622,7 @@ class TelegramHelper(BaseHelper):
611
622
  "link_preview_options": {"is_disabled": disable_web_page_preview},
612
623
  }
613
624
  if reply_markup:
614
- data["reply_markup"] = reply_markup.dict(exclude_none=True)
625
+ data["reply_markup"] = reply_markup.model_dump(exclude_none=True)
615
626
 
616
627
  r = await self._perform_async_request(url, data)
617
628
  return r
@@ -661,7 +672,7 @@ class TelegramHelper(BaseHelper):
661
672
  data = {
662
673
  "chat_id": chat_id,
663
674
  "message_id": message_id,
664
- "reply_markup": reply_markup.dict(exclude_none=True),
675
+ "reply_markup": reply_markup.model_dump(exclude_none=True),
665
676
  }
666
677
  except AttributeError:
667
678
  data = {"chat_id": chat_id, "message_id": message_id, "reply_markup": {}}
@@ -679,7 +690,7 @@ class TelegramHelper(BaseHelper):
679
690
  data = {
680
691
  "chat_id": chat_id,
681
692
  "message_id": message_id,
682
- "reply_markup": reply_markup.dict(exclude_none=True),
693
+ "reply_markup": reply_markup.model_dump(exclude_none=True),
683
694
  }
684
695
  except AttributeError:
685
696
  data = {"chat_id": chat_id, "message_id": message_id, "reply_markup": {}}
@@ -697,7 +708,7 @@ class TelegramHelper(BaseHelper):
697
708
  inline_message_id: Optional[Union[int, str]] = None,
698
709
  parse_mode: Optional[str] = "HTML",
699
710
  ):
700
- if type(media) == str:
711
+ if type(media) is str:
701
712
  if media.startswith("http://") or media.startswith("https://"):
702
713
  media_obj = InputMedia(
703
714
  type=media_type, media=media, caption=caption, parse_mode=parse_mode
@@ -711,7 +722,7 @@ class TelegramHelper(BaseHelper):
711
722
  )
712
723
 
713
724
  url = self.tg_base_url + "editMessageMedia"
714
- data = data_obj.dict(exclude_none=True)
725
+ data = data_obj.model_dump(exclude_none=True)
715
726
 
716
727
  r = self._perform_sync_request(url, data)
717
728
  return r
@@ -736,7 +747,7 @@ class TelegramHelper(BaseHelper):
736
747
  )
737
748
 
738
749
  url = self.tg_base_url + "editMessageMedia"
739
- data = data_obj.dict(exclude_none=True)
750
+ data = data_obj.model_dump(exclude_none=True)
740
751
  data["media"] = json.dumps(data["media"])
741
752
  if "reply_markup" in data.keys():
742
753
  data["reply_markup"] = json.dumps(data["reply_markup"])
@@ -759,7 +770,7 @@ class TelegramHelper(BaseHelper):
759
770
  )
760
771
 
761
772
  url = self.tg_base_url + "editMessageMedia"
762
- data = data_obj.dict(exclude_none=True)
773
+ data = data_obj.model_dump(exclude_none=True)
763
774
 
764
775
  r = self._perform_sync_request(url, data)
765
776
  return r
@@ -779,7 +790,7 @@ class TelegramHelper(BaseHelper):
779
790
  )
780
791
 
781
792
  url = self.tg_base_url + "editMessageMedia"
782
- data = data_obj.dict(exclude_none=True)
793
+ data = data_obj.model_dump(exclude_none=True)
783
794
  data["media"] = json.dumps(data["media"])
784
795
  if "reply_markup" in data.keys():
785
796
  data["reply_markup"] = json.dumps(data["reply_markup"])
@@ -799,7 +810,7 @@ class TelegramHelper(BaseHelper):
799
810
  inline_message_id: Optional[Union[int, str]] = None,
800
811
  parse_mode: Optional[str] = "HTML",
801
812
  ):
802
- if type(media) == str:
813
+ if type(media) is str:
803
814
  if media.startswith("http://") or media.startswith("https://"):
804
815
  media_obj = InputMedia(
805
816
  type=media_type, media=media, caption=caption, parse_mode=parse_mode
@@ -813,7 +824,7 @@ class TelegramHelper(BaseHelper):
813
824
  )
814
825
 
815
826
  url = self.tg_base_url + "editMessageMedia"
816
- data = data_obj.dict(exclude_none=True)
827
+ data = data_obj.model_dump(exclude_none=True)
817
828
 
818
829
  r = await self._perform_async_request(url, data)
819
830
  return r
@@ -838,7 +849,7 @@ class TelegramHelper(BaseHelper):
838
849
  )
839
850
 
840
851
  url = self.tg_base_url + "editMessageMedia"
841
- data = data_obj.dict(exclude_none=True)
852
+ data = data_obj.model_dump(exclude_none=True)
842
853
  data["media"] = json.dumps(data["media"])
843
854
  if "reply_markup" in data.keys():
844
855
  data["reply_markup"] = json.dumps(data["reply_markup"])
@@ -861,7 +872,7 @@ class TelegramHelper(BaseHelper):
861
872
  )
862
873
 
863
874
  url = self.tg_base_url + "editMessageMedia"
864
- data = data_obj.dict(exclude_none=True)
875
+ data = data_obj.model_dump(exclude_none=True)
865
876
 
866
877
  r = await self._perform_async_request(url, data)
867
878
  return r
@@ -881,7 +892,7 @@ class TelegramHelper(BaseHelper):
881
892
  )
882
893
 
883
894
  url = self.tg_base_url + "editMessageMedia"
884
- data = data_obj.dict(exclude_none=True)
895
+ data = data_obj.model_dump(exclude_none=True)
885
896
  data["media"] = json.dumps(data["media"])
886
897
  if "reply_markup" in data.keys():
887
898
  data["reply_markup"] = json.dumps(data["reply_markup"])
@@ -902,7 +913,7 @@ class TelegramHelper(BaseHelper):
902
913
  allow_sending_without_reply: Optional[bool] = None,
903
914
  reply_markup: Optional[Union[InlineKeyboardMarkup, ReplyKeyboardMarkup]] = None,
904
915
  ):
905
- if type(photo) == str:
916
+ if type(photo) is str:
906
917
  if photo.startswith("http://") or photo.startswith("https://"):
907
918
  photo_obj = Photo(
908
919
  chat_id=chat_id,
@@ -917,7 +928,7 @@ class TelegramHelper(BaseHelper):
917
928
  )
918
929
 
919
930
  url = self.tg_base_url + "sendPhoto"
920
- data = photo_obj.dict(exclude_none=True)
931
+ data = photo_obj.model_dump(exclude_none=True)
921
932
 
922
933
  r = self._perform_sync_request(url, data)
923
934
  return r
@@ -939,7 +950,7 @@ class TelegramHelper(BaseHelper):
939
950
  )
940
951
 
941
952
  url = self.tg_base_url + "sendPhoto"
942
- data = photo_obj.dict(exclude_none=True)
953
+ data = photo_obj.model_dump(exclude_none=True)
943
954
  if "reply_markup" in data.keys():
944
955
  data["reply_markup"] = json.dumps(data["reply_markup"])
945
956
  files = {photo: opened_photo}
@@ -962,7 +973,7 @@ class TelegramHelper(BaseHelper):
962
973
  )
963
974
 
964
975
  url = self.tg_base_url + "sendPhoto"
965
- data = photo_obj.dict(exclude_none=True)
976
+ data = photo_obj.model_dump(exclude_none=True)
966
977
 
967
978
  r = self._perform_sync_request(url, data)
968
979
  return r
@@ -980,7 +991,7 @@ class TelegramHelper(BaseHelper):
980
991
  )
981
992
 
982
993
  url = self.tg_base_url + "sendPhoto"
983
- data = photo_obj.dict(exclude_none=True)
994
+ data = photo_obj.model_dump(exclude_none=True)
984
995
  if "reply_markup" in data.keys():
985
996
  data["reply_markup"] = json.dumps(data["reply_markup"])
986
997
  files = {"image": photo}
@@ -1000,7 +1011,7 @@ class TelegramHelper(BaseHelper):
1000
1011
  allow_sending_without_reply: Optional[bool] = None,
1001
1012
  reply_markup: Optional[Union[InlineKeyboardMarkup, ReplyKeyboardMarkup]] = None,
1002
1013
  ):
1003
- if type(photo) == str:
1014
+ if type(photo) is str:
1004
1015
  if photo.startswith("http://") or photo.startswith("https://"):
1005
1016
  photo_obj = Photo(
1006
1017
  chat_id=chat_id,
@@ -1015,7 +1026,7 @@ class TelegramHelper(BaseHelper):
1015
1026
  )
1016
1027
 
1017
1028
  url = self.tg_base_url + "sendPhoto"
1018
- data = photo_obj.dict(exclude_none=True)
1029
+ data = photo_obj.model_dump(exclude_none=True)
1019
1030
  r = await self._perform_async_request(url, data)
1020
1031
  return r
1021
1032
 
@@ -1037,7 +1048,7 @@ class TelegramHelper(BaseHelper):
1037
1048
  )
1038
1049
 
1039
1050
  url = self.tg_base_url + "sendPhoto"
1040
- data = photo_obj.dict(exclude_none=True)
1051
+ data = photo_obj.model_dump(exclude_none=True)
1041
1052
  if "reply_markup" in data.keys():
1042
1053
  data["reply_markup"] = json.dumps(data["reply_markup"])
1043
1054
  files = {photo: content}
@@ -1059,7 +1070,7 @@ class TelegramHelper(BaseHelper):
1059
1070
  )
1060
1071
 
1061
1072
  url = self.tg_base_url + "sendPhoto"
1062
- data = photo_obj.dict(exclude_none=True)
1073
+ data = photo_obj.model_dump(exclude_none=True)
1063
1074
  r = await self._perform_async_request(url, data)
1064
1075
  return r
1065
1076
 
@@ -1076,7 +1087,7 @@ class TelegramHelper(BaseHelper):
1076
1087
  )
1077
1088
 
1078
1089
  url = self.tg_base_url + "sendPhoto"
1079
- data = photo_obj.dict(exclude_none=True)
1090
+ data = photo_obj.model_dump(exclude_none=True)
1080
1091
  if "reply_markup" in data.keys():
1081
1092
  data["reply_markup"] = json.dumps(data["reply_markup"])
1082
1093
  files = {"image": photo}
@@ -1095,7 +1106,7 @@ class TelegramHelper(BaseHelper):
1095
1106
  allow_sending_without_reply: Optional[bool] = None,
1096
1107
  reply_markup: Optional[Union[InlineKeyboardMarkup, ReplyKeyboardMarkup]] = None,
1097
1108
  ):
1098
- if type(video) == str:
1109
+ if type(video) is str:
1099
1110
  if video.startswith("http://") or video.startswith("https://"):
1100
1111
  video_obj = Video(
1101
1112
  chat_id=chat_id,
@@ -1110,7 +1121,7 @@ class TelegramHelper(BaseHelper):
1110
1121
  )
1111
1122
 
1112
1123
  url = self.tg_base_url + "sendVideo"
1113
- data = video_obj.dict(exclude_none=True)
1124
+ data = video_obj.model_dump(exclude_none=True)
1114
1125
 
1115
1126
  r = self._perform_sync_request(url, data)
1116
1127
  return r
@@ -1132,7 +1143,7 @@ class TelegramHelper(BaseHelper):
1132
1143
  )
1133
1144
 
1134
1145
  url = self.tg_base_url + "sendVideo"
1135
- data = video_obj.dict(exclude_none=True)
1146
+ data = video_obj.model_dump(exclude_none=True)
1136
1147
  if "reply_markup" in data.keys():
1137
1148
  data["reply_markup"] = json.dumps(data["reply_markup"])
1138
1149
  files = {video: opened_video}
@@ -1155,7 +1166,7 @@ class TelegramHelper(BaseHelper):
1155
1166
  )
1156
1167
 
1157
1168
  url = self.tg_base_url + "sendVideo"
1158
- data = video_obj.dict(exclude_none=True)
1169
+ data = video_obj.model_dump(exclude_none=True)
1159
1170
 
1160
1171
  r = self._perform_sync_request(url, data)
1161
1172
  return r
@@ -1173,7 +1184,7 @@ class TelegramHelper(BaseHelper):
1173
1184
  )
1174
1185
 
1175
1186
  url = self.tg_base_url + "sendVideo"
1176
- data = video_obj.dict(exclude_none=True)
1187
+ data = video_obj.model_dump(exclude_none=True)
1177
1188
  if "reply_markup" in data.keys():
1178
1189
  data["reply_markup"] = json.dumps(data["reply_markup"])
1179
1190
  files = {"video": video}
@@ -1193,7 +1204,7 @@ class TelegramHelper(BaseHelper):
1193
1204
  allow_sending_without_reply: Optional[bool] = None,
1194
1205
  reply_markup: Optional[Union[InlineKeyboardMarkup, ReplyKeyboardMarkup]] = None,
1195
1206
  ):
1196
- if type(video) == str:
1207
+ if type(video) is str:
1197
1208
  if video.startswith("http://") or video.startswith("https://"):
1198
1209
  video_obj = Video(
1199
1210
  chat_id=chat_id,
@@ -1208,7 +1219,7 @@ class TelegramHelper(BaseHelper):
1208
1219
  )
1209
1220
 
1210
1221
  url = self.tg_base_url + "sendVideo"
1211
- data = video_obj.dict(exclude_none=True)
1222
+ data = video_obj.model_dump(exclude_none=True)
1212
1223
  r = await self._perform_async_request(url, data)
1213
1224
  return r
1214
1225
 
@@ -1230,7 +1241,7 @@ class TelegramHelper(BaseHelper):
1230
1241
  )
1231
1242
 
1232
1243
  url = self.tg_base_url + "sendVideo"
1233
- data = video_obj.dict(exclude_none=True)
1244
+ data = video_obj.model_dump(exclude_none=True)
1234
1245
  if "reply_markup" in data.keys():
1235
1246
  data["reply_markup"] = json.dumps(data["reply_markup"])
1236
1247
  files = {video: content}
@@ -1252,7 +1263,7 @@ class TelegramHelper(BaseHelper):
1252
1263
  )
1253
1264
 
1254
1265
  url = self.tg_base_url + "sendVideo"
1255
- data = video_obj.dict(exclude_none=True)
1266
+ data = video_obj.model_dump(exclude_none=True)
1256
1267
  r = await self._perform_async_request(url, data)
1257
1268
  return r
1258
1269
 
@@ -1269,7 +1280,7 @@ class TelegramHelper(BaseHelper):
1269
1280
  )
1270
1281
 
1271
1282
  url = self.tg_base_url + "sendVideo"
1272
- data = video_obj.dict(exclude_none=True)
1283
+ data = video_obj.model_dump(exclude_none=True)
1273
1284
  if "reply_markup" in data.keys():
1274
1285
  data["reply_markup"] = json.dumps(data["reply_markup"])
1275
1286
  files = {"video": video}
@@ -1292,7 +1303,7 @@ class TelegramHelper(BaseHelper):
1292
1303
  files = {}
1293
1304
  document_str = None
1294
1305
 
1295
- if type(document) == str:
1306
+ if type(document) is str:
1296
1307
  if not (document.startswith("http://") or document.startswith("https://")):
1297
1308
  ends = [".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx"]
1298
1309
  for end in ends:
@@ -1321,7 +1332,7 @@ class TelegramHelper(BaseHelper):
1321
1332
  )
1322
1333
 
1323
1334
  url = self.tg_base_url + "sendDocument"
1324
- data = document_obj.dict(exclude_none=True)
1335
+ data = document_obj.model_dump(exclude_none=True)
1325
1336
  if "reply_markup" in data.keys():
1326
1337
  data["reply_markup"] = json.dumps(data["reply_markup"])
1327
1338
 
@@ -1348,7 +1359,7 @@ class TelegramHelper(BaseHelper):
1348
1359
  files = {}
1349
1360
  document_str = None
1350
1361
 
1351
- if type(document) == str:
1362
+ if type(document) is str:
1352
1363
  if not (document.startswith("http://") or document.startswith("https://")):
1353
1364
  ends = [".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx"]
1354
1365
  for end in ends:
@@ -1377,7 +1388,7 @@ class TelegramHelper(BaseHelper):
1377
1388
  )
1378
1389
 
1379
1390
  url = self.tg_base_url + "sendDocument"
1380
- data = document_obj.dict(exclude_none=True)
1391
+ data = document_obj.model_dump(exclude_none=True)
1381
1392
 
1382
1393
  if "reply_markup" in data.keys():
1383
1394
  data["reply_markup"] = json.dumps(data["reply_markup"])
@@ -1442,14 +1453,14 @@ class TelegramHelper(BaseHelper):
1442
1453
  files = {}
1443
1454
  photos_list = []
1444
1455
 
1445
- if type(photos[-1]) == str:
1456
+ if type(photos[-1]) is str:
1446
1457
  if photos[-1].startswith("http://") or photos[-1].startswith("https://"):
1447
1458
  for photo in photos:
1448
1459
  photos_list.append(InputMediaPhoto(media=photo))
1449
1460
 
1450
1461
  media_group = MediaGroup(chat_id=chat_id, media=photos_list)
1451
1462
  url = self.tg_base_url + "sendMediaGroup"
1452
- data = media_group.dict(exclude_none=True)
1463
+ data = media_group.model_dump(exclude_none=True)
1453
1464
  r = self._perform_sync_request(url, data)
1454
1465
  return r
1455
1466
 
@@ -1463,7 +1474,7 @@ class TelegramHelper(BaseHelper):
1463
1474
 
1464
1475
  media_group = MediaGroup(chat_id=chat_id, media=photos_list)
1465
1476
  url = self.tg_base_url + "sendMediaGroup"
1466
- data = media_group.dict(exclude_none=True)
1477
+ data = media_group.model_dump(exclude_none=True)
1467
1478
  data["media"] = json.dumps(data["media"])
1468
1479
  r = self._perform_sync_request(
1469
1480
  url, data, use_json=False, files=files
@@ -1475,7 +1486,7 @@ class TelegramHelper(BaseHelper):
1475
1486
 
1476
1487
  media_group = MediaGroup(chat_id=chat_id, media=photos_list)
1477
1488
  url = self.tg_base_url + "sendMediaGroup"
1478
- data = media_group.dict(exclude_none=True)
1489
+ data = media_group.model_dump(exclude_none=True)
1479
1490
  r = self._perform_sync_request(url, data)
1480
1491
  return r
1481
1492
 
@@ -1485,7 +1496,7 @@ class TelegramHelper(BaseHelper):
1485
1496
 
1486
1497
  media_group = MediaGroup(chat_id=chat_id, media=photos_list)
1487
1498
  url = self.tg_base_url + "sendMediaGroup"
1488
- data = media_group.dict(exclude_none=True)
1499
+ data = media_group.model_dump(exclude_none=True)
1489
1500
  data["media"] = json.dumps(data["media"])
1490
1501
  r = self._perform_sync_request(url, data, use_json=False, files=files)
1491
1502
  return r
@@ -1496,14 +1507,14 @@ class TelegramHelper(BaseHelper):
1496
1507
  files = {}
1497
1508
  photos_list = []
1498
1509
 
1499
- if type(photos[-1]) == str:
1510
+ if type(photos[-1]) is str:
1500
1511
  if photos[-1].startswith("http://") or photos[-1].startswith("https://"):
1501
1512
  for photo in photos:
1502
1513
  photos_list.append(InputMediaPhoto(media=photo))
1503
1514
 
1504
1515
  media_group = MediaGroup(chat_id=chat_id, media=photos_list)
1505
1516
  url = self.tg_base_url + "sendMediaGroup"
1506
- data = media_group.dict(exclude_none=True)
1517
+ data = media_group.model_dump(exclude_none=True)
1507
1518
  r = await self._perform_async_request(url, data)
1508
1519
  return r
1509
1520
 
@@ -1518,7 +1529,7 @@ class TelegramHelper(BaseHelper):
1518
1529
 
1519
1530
  media_group = MediaGroup(chat_id=chat_id, media=photos_list)
1520
1531
  url = self.tg_base_url + "sendMediaGroup"
1521
- data = media_group.dict(exclude_none=True)
1532
+ data = media_group.model_dump(exclude_none=True)
1522
1533
  data["media"] = json.dumps(data["media"])
1523
1534
  r = await self._perform_async_request(
1524
1535
  url, data, use_json=False, files=files
@@ -1530,7 +1541,7 @@ class TelegramHelper(BaseHelper):
1530
1541
 
1531
1542
  media_group = MediaGroup(chat_id=chat_id, media=photos_list)
1532
1543
  url = self.tg_base_url + "sendMediaGroup"
1533
- data = media_group.dict(exclude_none=True)
1544
+ data = media_group.model_dump(exclude_none=True)
1534
1545
  r = await self._perform_async_request(url, data)
1535
1546
  return r
1536
1547
 
@@ -1540,7 +1551,7 @@ class TelegramHelper(BaseHelper):
1540
1551
 
1541
1552
  media_group = MediaGroup(chat_id=chat_id, media=photos_list)
1542
1553
  url = self.tg_base_url + "sendMediaGroup"
1543
- data = media_group.dict(exclude_none=True)
1554
+ data = media_group.model_dump(exclude_none=True)
1544
1555
  data["media"] = json.dumps(data["media"])
1545
1556
  r = await self._perform_async_request(url, data, use_json=False, files=files)
1546
1557
  return r
@@ -1565,7 +1576,7 @@ class TelegramHelper(BaseHelper):
1565
1576
  files = {}
1566
1577
  animation_str = None
1567
1578
 
1568
- if type(animation) == str:
1579
+ if type(animation) is str:
1569
1580
  if not (
1570
1581
  animation.startswith("http://") or animation.startswith("https://")
1571
1582
  ):
@@ -1600,7 +1611,7 @@ class TelegramHelper(BaseHelper):
1600
1611
  )
1601
1612
 
1602
1613
  url = self.tg_base_url + "sendAnimation"
1603
- data = animation_obj.dict(exclude_none=True)
1614
+ data = animation_obj.model_dump(exclude_none=True)
1604
1615
  if "reply_markup" in data.keys():
1605
1616
  data["reply_markup"] = json.dumps(data["reply_markup"])
1606
1617
 
@@ -1631,7 +1642,7 @@ class TelegramHelper(BaseHelper):
1631
1642
  files = {}
1632
1643
  animation_str = None
1633
1644
 
1634
- if type(animation) == str:
1645
+ if type(animation) is str:
1635
1646
  if not (
1636
1647
  animation.startswith("http://") or animation.startswith("https://")
1637
1648
  ):
@@ -1666,7 +1677,7 @@ class TelegramHelper(BaseHelper):
1666
1677
  )
1667
1678
 
1668
1679
  url = self.tg_base_url + "sendAnimation"
1669
- data = animation_obj.dict(exclude_none=True)
1680
+ data = animation_obj.model_dump(exclude_none=True)
1670
1681
  if "reply_markup" in data.keys():
1671
1682
  data["reply_markup"] = json.dumps(data["reply_markup"])
1672
1683
 
@@ -1699,7 +1710,7 @@ class TelegramHelper(BaseHelper):
1699
1710
  files = {}
1700
1711
  audio_str = None
1701
1712
 
1702
- if type(audio) == str:
1713
+ if type(audio) is str:
1703
1714
  if not (audio.startswith("http://") or audio.startswith("https://")):
1704
1715
  ends = [".mp3"]
1705
1716
  for end in ends:
@@ -1732,7 +1743,7 @@ class TelegramHelper(BaseHelper):
1732
1743
  )
1733
1744
 
1734
1745
  url = self.tg_base_url + "sendAudio"
1735
- data = audio_obj.dict(exclude_none=True)
1746
+ data = audio_obj.model_dump(exclude_none=True)
1736
1747
  if "reply_markup" in data.keys():
1737
1748
  data["reply_markup"] = json.dumps(data["reply_markup"])
1738
1749
 
@@ -1766,7 +1777,7 @@ class TelegramHelper(BaseHelper):
1766
1777
  )
1767
1778
 
1768
1779
  url = self.tg_base_url + "sendSticker"
1769
- data = sticker_obj.dict(exclude_none=True)
1780
+ data = sticker_obj.model_dump(exclude_none=True)
1770
1781
  if "reply_markup" in data.keys():
1771
1782
  data["reply_markup"] = json.dumps(data["reply_markup"])
1772
1783
 
@@ -1794,7 +1805,7 @@ class TelegramHelper(BaseHelper):
1794
1805
  )
1795
1806
 
1796
1807
  url = self.tg_base_url + "sendSticker"
1797
- data = sticker_obj.dict(exclude_none=True)
1808
+ data = sticker_obj.model_dump(exclude_none=True)
1798
1809
  if "reply_markup" in data.keys():
1799
1810
  data["reply_markup"] = json.dumps(data["reply_markup"])
1800
1811
 
@@ -1827,7 +1838,7 @@ class TelegramHelper(BaseHelper):
1827
1838
 
1828
1839
  set_my_commands = SetMyCommands(commands=commands_list)
1829
1840
 
1830
- r = self._perform_sync_request(url, set_my_commands.dict())
1841
+ r = self._perform_sync_request(url, set_my_commands.model_dump())
1831
1842
  return r
1832
1843
 
1833
1844
  async def async_set_my_commands(self, commands: List[Tuple[str, str]]):
@@ -1838,5 +1849,5 @@ class TelegramHelper(BaseHelper):
1838
1849
 
1839
1850
  set_my_commands = SetMyCommands(commands=commands_list)
1840
1851
 
1841
- r = await self._perform_async_request(url, set_my_commands.dict())
1852
+ r = await self._perform_async_request(url, set_my_commands.model_dump())
1842
1853
  return r