dshellInterpreter 1.2.0.8__tar.gz → 1.2.0.9__tar.gz

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.
Files changed (53) hide show
  1. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/dshell_channel.py +7 -29
  2. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/dshell_file.py +1 -1
  3. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/dshell_message.py +32 -68
  4. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/utils/utils_message.py +31 -4
  5. {dshellinterpreter-1.2.0.8/dshellInterpreter.egg-info → dshellinterpreter-1.2.0.9}/PKG-INFO +1 -1
  6. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9/dshellInterpreter.egg-info}/PKG-INFO +1 -1
  7. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/setup.py +1 -1
  8. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/__init__.py +0 -0
  9. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/dshell_embed.py +0 -0
  10. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/dshell_interaction.py +0 -0
  11. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/dshell_member.py +0 -0
  12. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/dshell_pastbin.py +0 -0
  13. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/dshell_role.py +0 -0
  14. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/dshell_ui.py +0 -0
  15. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/utils/__init__.py +0 -0
  16. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/utils/utils_embed.py +0 -0
  17. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/utils/utils_file.py +0 -0
  18. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/utils/utils_global.py +0 -0
  19. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/utils/utils_list.py +0 -0
  20. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/utils/utils_member.py +0 -0
  21. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/utils/utils_numbers.py +0 -0
  22. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/utils/utils_permissions.py +0 -0
  23. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/utils/utils_string.py +0 -0
  24. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/utils/utils_thread.py +0 -0
  25. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DISCORD_COMMANDS/utils/utils_type_validation.py +0 -0
  26. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DshellInterpreteur/__init__.py +0 -0
  27. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DshellInterpreteur/cached_messages.py +0 -0
  28. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DshellInterpreteur/dshell_arguments.py +0 -0
  29. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DshellInterpreteur/dshell_global_variables.py +0 -0
  30. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DshellInterpreteur/dshell_interpreter.py +0 -0
  31. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DshellInterpreteur/dshell_scope.py +0 -0
  32. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DshellInterpreteur/errors.py +0 -0
  33. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DshellInterpreteur/utils_interpreter.py +0 -0
  34. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DshellParser/__init__.py +0 -0
  35. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DshellParser/ast_nodes.py +0 -0
  36. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DshellParser/dshell_parser.py +0 -0
  37. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DshellParser/errors.py +0 -0
  38. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DshellPreProcess/__init__.py +0 -0
  39. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DshellPreProcess/dshell_preprocess.py +0 -0
  40. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DshellTokenizer/__init__.py +0 -0
  41. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DshellTokenizer/dshell_keywords.py +0 -0
  42. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DshellTokenizer/dshell_token_type.py +0 -0
  43. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/DshellTokenizer/dshell_tokenizer.py +0 -0
  44. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/__init__.py +0 -0
  45. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/full_import.py +0 -0
  46. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/Dshell/regex_test.py +0 -0
  47. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/LICENSE +0 -0
  48. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/README.md +0 -0
  49. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/dshellInterpreter.egg-info/SOURCES.txt +0 -0
  50. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/dshellInterpreter.egg-info/dependency_links.txt +0 -0
  51. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/dshellInterpreter.egg-info/requires.txt +0 -0
  52. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/dshellInterpreter.egg-info/top_level.txt +0 -0
  53. {dshellinterpreter-1.2.0.8 → dshellinterpreter-1.2.0.9}/setup.cfg +0 -0
@@ -353,10 +353,7 @@ async def dshell_create_thread_message(ctx: Message,
353
353
 
354
354
  _CMD = "ct"
355
355
 
356
- if message is None:
357
- message = ctx.id
358
-
359
- message = utils_get_message(ctx, message)
356
+ message = ctx if message is None else await utils_get_message(ctx, message)
360
357
 
361
358
  _validate_required_string(name, "Name", _CMD)
362
359
 
@@ -372,12 +369,7 @@ async def dshell_create_thread_message(ctx: Message,
372
369
  if isinstance(slowmode, IntNode) and slowmode < 0:
373
370
  raise Exception("Slowmode delay must be a positive integer !")
374
371
 
375
- if isinstance(message, PartialMessage):
376
- m = await message.fetch()
377
- else:
378
- m = message
379
-
380
- thread = await m.create_thread(name=name,
372
+ thread = await message.create_thread(name=name,
381
373
  auto_archive_duration=archive,
382
374
  slowmode_delay=slowmode)
383
375
 
@@ -430,14 +422,7 @@ async def dshell_get_thread(ctx: Message, message: Optional[Union[IntNode, StrNo
430
422
 
431
423
  _CMD = "gt"
432
424
 
433
- if message is None:
434
- message = ctx.id
435
-
436
- target_message = utils_get_message(ctx, message)
437
- if isinstance(target_message, PartialMessage):
438
- message = await target_message.fetch()
439
- else:
440
- message = target_message
425
+ message = ctx if message is None else await utils_get_message(ctx, message)
441
426
 
442
427
  # Return None if message doesn't have thread attribute (not raising error for this case)
443
428
  if not hasattr(message, 'thread'):
@@ -460,24 +445,17 @@ async def dshell_delete_thread(ctx: Message,
460
445
 
461
446
  _CMD = "dt"
462
447
 
463
- if thread is None:
464
- thread = ctx.id
465
-
466
- target_message = utils_get_message(ctx, thread)
467
- if isinstance(target_message, PartialMessage):
468
- thread = await target_message.fetch()
469
- else:
470
- thread = target_message
448
+ target_message = ctx if thread is None else await utils_get_message(ctx, thread)
471
449
 
472
450
  _validate_has_attribute(thread, 'thread', f"[{_CMD}] The specified message does not have a thread !")
473
451
  _validate_optional_string(reason, "reason", _CMD)
474
452
 
475
- if thread.thread is None:
453
+ if target_message.thread is None:
476
454
  raise Exception("The specified message does not have a thread !")
477
455
 
478
- await thread.thread.delete(reason=reason)
456
+ await target_message.thread.delete(reason=reason)
479
457
 
480
- return IntNode(thread.thread.id)
458
+ return IntNode(target_message.thread.id)
481
459
 
482
460
  async def dshell_create_category(ctx: Message,
483
461
  name: StrNode,
@@ -23,7 +23,7 @@ async def dshell_get_message_files(ctx: Message, message: Union[StrNode, IntNode
23
23
  :return:
24
24
  """
25
25
 
26
- target_message = ctx if message is None else utils_get_message(ctx, message)
26
+ target_message = ctx if message is None else await utils_get_message(ctx, message)
27
27
 
28
28
  attachments_list: ListNode = ListNode([], bypass_limit_elt=True)
29
29
 
@@ -1,3 +1,5 @@
1
+ from pycordViews import EasyModifiedViews
2
+
1
3
  from Dshell.full_import import (Message,
2
4
  PartialMessage,
3
5
  File)
@@ -124,7 +126,7 @@ async def dshell_respond_message(ctx: Message,
124
126
  _validate_required_bool(users_mentions, "Users mentions", _CMD)
125
127
  _validate_required_bool(reply_mention, "Reply mention", _CMD)
126
128
 
127
- respond_message = ctx if message is None else utils_get_message(ctx, message) # builds a reference to the message (even if it doesn't exist)
129
+ respond_message = ctx if message is None else await utils_get_message(ctx, message) # builds a reference to the message (even if it doesn't exist)
128
130
  autorised_mentions = utils_autorised_mentions(global_mentions, everyone_mention, roles_mentions, users_mentions, reply_mention)
129
131
  mention_author = True if reply_mention else False
130
132
 
@@ -157,7 +159,7 @@ async def dshell_delete_message(ctx: Message,
157
159
  """
158
160
  _CMD = "dm"
159
161
 
160
- delete_message = ctx if message is None else utils_get_message(ctx, message)
162
+ delete_message = ctx if message is None else await utils_get_message(ctx, message)
161
163
 
162
164
  _validate_optional_int(delay, "delay", _CMD)
163
165
  _validate_optional_string(reason, "reason", _CMD)
@@ -198,26 +200,33 @@ async def dshell_purge_message(ctx: Message,
198
200
 
199
201
  async def dshell_edit_message(ctx: Message,
200
202
  message,
201
- new_content: Optional[StrNode]=None,
203
+ content: Optional[StrNode]=None,
202
204
  embeds: Optional[EmbedNode]=None,
203
- view=None,
204
- files: Optional[FileNode]=None) -> IntNode:
205
+ view: Optional[EasyModifiedViews]=None,
206
+ files: Optional[FileNode]=None,
207
+ keep: BoolNode = BoolNode(1)) -> IntNode:
205
208
  """
206
209
  Edits a message
207
210
  """
208
211
  _CMD = "em"
209
212
 
210
- edit_message = utils_get_message(ctx, message)
213
+ edit_message = await utils_get_message(ctx, message)
214
+
211
215
 
212
216
  _validate_optional_embed(embeds, "embeds", _CMD)
213
217
  _validate_optional_view(view, "view", _CMD)
214
- _validate_optional_string(new_content, "new_content", _CMD)
218
+ _validate_optional_string(content, "content", _CMD)
219
+ _validate_required_bool(keep, "keep", _CMD)
215
220
 
216
221
  final_files: Optional[list[File]] = utils_check_files_arguments(_CMD, files)
217
222
 
218
223
  embeds = utils_check_embeds_arguments(_CMD, embeds)
219
224
 
220
- await edit_message.edit(content=new_content, embeds=embeds, view=view, files=final_files)
225
+ await edit_message.edit(content=content,
226
+ embeds=embeds,
227
+ view=view,
228
+ files=final_files,
229
+ attachments=edit_message.attachments if keep else [])
221
230
 
222
231
  return IntNode(edit_message.id)
223
232
 
@@ -226,7 +235,7 @@ async def dshell_add_reactions(ctx: Message, reactions: Union[StrNode, ListNode]
226
235
  Adds reactions to a message
227
236
  """
228
237
  _CMD = "ar"
229
- message = ctx if message is None else utils_get_message(ctx, message)
238
+ message = ctx if message is None else await utils_get_message(ctx, message)
230
239
 
231
240
  if isinstance(reactions, StrNode):
232
241
  reactions = (reactions,)
@@ -243,7 +252,7 @@ async def dshell_remove_reactions(ctx: Message, reactions: Union[ListNode, StrNo
243
252
  Removes reactions from a message
244
253
  """
245
254
  _CMD = "rr"
246
- message = ctx if message is None else utils_get_message(ctx, message)
255
+ message = ctx if message is None else await utils_get_message(ctx, message)
247
256
 
248
257
  if isinstance(reactions, StrNode):
249
258
  reactions = [reactions]
@@ -258,10 +267,7 @@ async def dshell_clear_message_reactions(ctx: Message, message: Optional[Union[I
258
267
  """
259
268
  Clear all reaction on the target message
260
269
  """
261
- message = ctx if message is None else utils_get_message(ctx, message)
262
-
263
- if message is None:
264
- raise Exception(f'Message not found !')
270
+ message = ctx if message is None else await utils_get_message(ctx, message)
265
271
 
266
272
  await message.clear_reactions()
267
273
 
@@ -275,7 +281,7 @@ async def dshell_clear_one_reactions(ctx: Message, message: Union[IntNode, StrNo
275
281
  if not isinstance(emoji, StrNode):
276
282
  raise Exception(f'Emoji must be StrNode, not {type(emoji)}')
277
283
 
278
- target_message = ctx if message is None else utils_get_message(ctx, message)
284
+ target_message = ctx if message is None else await utils_get_message(ctx, message)
279
285
 
280
286
  await target_message.clear_reaction(emoji)
281
287
 
@@ -286,7 +292,7 @@ async def dshell_pin_message(ctx: Message, message: Union[IntNode, StrNode]=None
286
292
  Pin a message
287
293
  """
288
294
 
289
- target_message = ctx if message is None else utils_get_message(ctx, message)
295
+ target_message = ctx if message is None else await utils_get_message(ctx, message)
290
296
 
291
297
  await target_message.pin()
292
298
 
@@ -299,7 +305,7 @@ async def dshell_unpin_message(ctx: Message, message: Optional[Union[IntNode, St
299
305
 
300
306
  _CMD = "upinm"
301
307
 
302
- target_message = ctx if message is None else utils_get_message(ctx, message)
308
+ target_message = ctx if message is None else await utils_get_message(ctx, message)
303
309
 
304
310
  _validate_optional_string(reason, "Reason", _CMD)
305
311
 
@@ -341,17 +347,9 @@ async def dshell_get_content_message(ctx: Message, message: Optional[Union[IntNo
341
347
  Get the content of a message
342
348
  """
343
349
 
344
- target_message = ctx if message is None else utils_get_message(ctx, message)
345
-
346
- if isinstance(target_message, PartialMessage):
347
- try:
348
- fetch_target_message = await target_message.fetch()
349
- except:
350
- raise Exception(f'Message not found !')
351
- else:
352
- fetch_target_message = target_message
350
+ target_message = ctx if message is None else await utils_get_message(ctx, message)
353
351
 
354
- return StrNode(fetch_target_message.content)
352
+ return StrNode(target_message.content)
355
353
 
356
354
 
357
355
  async def dshell_get_author_id_message(ctx: Message, message: Optional[Union[IntNode, StrNode]] = None):
@@ -363,15 +361,7 @@ async def dshell_get_author_id_message(ctx: Message, message: Optional[Union[Int
363
361
  """
364
362
  _CMD = "gma"
365
363
 
366
- target_message = ctx
367
- if message is not None:
368
- target_message = utils_get_message(ctx, message)
369
-
370
- if isinstance(target_message, PartialMessage):
371
- try:
372
- target_message = await target_message.fetch()
373
- except:
374
- raise Exception(f"[message_author] Author ID message to get is not found !")
364
+ target_message = ctx if message is None else await utils_get_message(ctx, message)
375
365
 
376
366
  return IntNode(target_message.author.id)
377
367
 
@@ -383,7 +373,7 @@ async def dshell_get_message_link(ctx: Message, message: Union[IntNode, StrNode]
383
373
  :return:
384
374
  """
385
375
 
386
- target_message = utils_get_message(ctx, message)
376
+ target_message = await utils_get_message(ctx, message)
387
377
 
388
378
  return StrNode(target_message.jump_url)
389
379
 
@@ -396,19 +386,11 @@ async def dshell_get_message_category_id(ctx: Message, message: Optional[Union[I
396
386
  """
397
387
  _CMD = "gmc"
398
388
 
399
- target_message = ctx
400
- if message is not None:
401
- target_message = utils_get_message(ctx, message)
402
-
403
- if isinstance(target_message, PartialMessage):
404
- try:
405
- target_message = await target_message.fetch()
406
- except:
407
- raise Exception(f"[category_message] Message ID to get is not found !")
389
+ target_message = ctx if message is None else await utils_get_message(ctx, message)
408
390
 
409
391
  return IntNode(target_message.channel.category.id) if target_message.channel.category is not None else IntNode(0)
410
392
 
411
- async def dshell_get_message_attachments(ctx: Message, message: Optional[Union[InterruptedError, StrNode]] = None):
393
+ async def dshell_get_message_attachments(ctx: Message, message: Optional[Union[IntNode, StrNode]] = None):
412
394
  """
413
395
  Return the attachments of a message given its ID
414
396
  :param ctx:
@@ -419,15 +401,7 @@ async def dshell_get_message_attachments(ctx: Message, message: Optional[Union[I
419
401
 
420
402
  _validate_optional_int(message, "Message parameter", _CMD)
421
403
 
422
- target_message = ctx
423
- if message is not None:
424
- target_message = utils_get_message(ctx, message)
425
-
426
- if isinstance(target_message, PartialMessage):
427
- try:
428
- target_message = await target_message.fetch()
429
- except:
430
- raise Exception(f"[attachments_message] Message ID to get is not found !")
404
+ target_message = ctx if message is None else await utils_get_message(ctx, message)
431
405
 
432
406
  attachments = ListNode([])
433
407
 
@@ -447,7 +421,6 @@ async def dshell_get_channel_pined_messages(ctx: Message, channel: Optional[IntN
447
421
 
448
422
  pinned_messages = await channel_to_check.pins()
449
423
 
450
-
451
424
  messages_list = ListNode([])
452
425
 
453
426
  cached_messages = dshell_cached_messages.get()
@@ -468,15 +441,7 @@ async def dshell_is_message_system(ctx: Message, message: Optional[Union[IntNode
468
441
 
469
442
  _validate_optional_int(message, "Message parameter", _CMD)
470
443
 
471
- target_message = ctx
472
- if message is not None:
473
- target_message = utils_get_message(ctx, message)
474
-
475
- if isinstance(target_message, PartialMessage):
476
- try:
477
- target_message = await target_message.fetch()
478
- except:
479
- raise Exception(f"[is_system_message] Message ID to get is not found !")
444
+ target_message = ctx if message is None else await utils_get_message(ctx, message)
480
445
 
481
446
  return BoolNode(target_message.is_system())
482
447
 
@@ -506,8 +471,7 @@ async def dshell_scan_message(ctx: Message,
506
471
 
507
472
  target_channel = ctx.channel if channel is None else ctx.guild.get_channel(channel)
508
473
 
509
- if target_channel is None:
510
- raise Exception(f"Channel with ID {channel} not found in guild {ctx.guild.name}.")
474
+ _validate_not_none(target_channel, f"Channel {channel} not found in guild {ctx.guild.name} !")
511
475
 
512
476
  if regex is not None:
513
477
  try:
@@ -2,7 +2,10 @@ from Dshell.full_import import (Message,
2
2
  PartialMessage,
3
3
  AllowedMentions,
4
4
  search,
5
- Optional)
5
+ Optional,
6
+ NotFound,
7
+ Forbidden,
8
+ HTTPException)
6
9
 
7
10
  from ...DshellInterpreteur.cached_messages import dshell_cached_messages
8
11
  from ...DshellParser.ast_nodes import StrNode, BoolNode, IntNode
@@ -12,7 +15,7 @@ from Dshell.full_import import Union
12
15
  from .utils_type_validation import (_validate_optional_bool,
13
16
  _validate_required_bool)
14
17
 
15
- def utils_get_message(ctx: Message, message: Union[IntNode, StrNode]) -> Union[PartialMessage, Message]:
18
+ async def utils_get_message(ctx: Message, message: Union[IntNode, StrNode]) -> Message:
16
19
  """
17
20
  Récupère l'objet message Discord à partir d'un ID ou d'un lien.
18
21
 
@@ -42,7 +45,7 @@ def utils_get_message(ctx: Message, message: Union[IntNode, StrNode]) -> Union[P
42
45
  if message in cached_messages:
43
46
  return cached_messages[message]
44
47
 
45
- cached_messages[message] = ctx.channel.get_partial_message(message)
48
+ cached_messages[message] = await utils_fetch_partial_message(ctx.channel.get_partial_message(message))
46
49
  dshell_cached_messages.set(cached_messages)
47
50
  return cached_messages[message]
48
51
 
@@ -60,13 +63,37 @@ def utils_get_message(ctx: Message, message: Union[IntNode, StrNode]) -> Union[P
60
63
  channel = ctx.guild.get_channel(channel_id)
61
64
  if channel is None:
62
65
  raise Exception(f"Channel with ID {channel_id} not found in guild {ctx.guild.name}.")
63
- cached_messages[message_id] = channel.get_partial_message(message_id)
66
+ cached_messages[message_id] = await utils_fetch_partial_message(channel.get_partial_message(message_id))
64
67
  dshell_cached_messages.set(cached_messages)
65
68
  return cached_messages[message_id]
66
69
 
67
70
  raise Exception(f"Message must be an integer or a string, not {type(message)} !")
68
71
 
69
72
 
73
+ async def utils_fetch_partial_message(partial_message: Union[Message, PartialMessage]) -> Message:
74
+ """
75
+ Fetch le message et renvoie une instance de Message s'il existe
76
+ :param ctx:
77
+ :param partial_message:
78
+ :return:
79
+ """
80
+
81
+ if not isinstance(partial_message, PartialMessage):
82
+ if isinstance(partial_message, Message):
83
+ return partial_message
84
+ raise Exception(f"Expected a PartialMessage or Message, got '{type(partial_message)}' !")
85
+
86
+ try:
87
+ message = await partial_message.fetch()
88
+ except NotFound:
89
+ raise Exception(f"Message '{partial_message.id}' not found !")
90
+ except Forbidden:
91
+ raise Exception(f"I don't have the permission to fetch the message '{partial_message.id}' !")
92
+ except HTTPException:
93
+ raise Exception(f"An internal error occurred when i try to fetch the message '{partial_message.id}'. Please, contact the support if this problem persists !")
94
+ return message
95
+
96
+
70
97
  def utils_autorised_mentions(global_mentions: Optional[BoolNode] = None,
71
98
  everyone_mention: BoolNode = BoolNode(1),
72
99
  roles_mentions: BoolNode = BoolNode(1),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dshellInterpreter
3
- Version: 1.2.0.8
3
+ Version: 1.2.0.9
4
4
  Summary: A Discord bot interpreter for creating custom commands and automations.
5
5
  Home-page: https://github.com/BOXERRMD/Dshell_Interpreter
6
6
  Author: Chronos
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dshellInterpreter
3
- Version: 1.2.0.8
3
+ Version: 1.2.0.9
4
4
  Summary: A Discord bot interpreter for creating custom commands and automations.
5
5
  Home-page: https://github.com/BOXERRMD/Dshell_Interpreter
6
6
  Author: Chronos
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
5
5
 
6
6
  setup(
7
7
  name="dshellInterpreter",
8
- version="1.2.0.8",
8
+ version="1.2.0.9",
9
9
  author="Chronos",
10
10
  author_email="vagabonwalybi@gmail.com",
11
11
  description="A Discord bot interpreter for creating custom commands and automations.",