dshellInterpreter 0.2.14.5__tar.gz → 0.2.15.1__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.

Potentially problematic release.


This version of dshellInterpreter might be problematic. Click here for more details.

Files changed (31) hide show
  1. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/DISCORD_COMMANDS/dshell_interaction.py +2 -5
  2. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/_DshellInterpreteur/dshell_interpreter.py +39 -4
  3. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/_DshellParser/ast_nodes.py +48 -0
  4. {dshellinterpreter-0.2.14.5/dshellInterpreter.egg-info → dshellinterpreter-0.2.15.1}/PKG-INFO +1 -1
  5. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1/dshellInterpreter.egg-info}/PKG-INFO +1 -1
  6. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/setup.py +1 -1
  7. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/DISCORD_COMMANDS/__init__.py +0 -0
  8. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/DISCORD_COMMANDS/dshell_channel.py +0 -0
  9. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/DISCORD_COMMANDS/dshell_member.py +0 -0
  10. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/DISCORD_COMMANDS/dshell_message.py +0 -0
  11. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/DISCORD_COMMANDS/dshell_pastbin.py +0 -0
  12. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/DISCORD_COMMANDS/dshell_role.py +0 -0
  13. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/DISCORD_COMMANDS/utils/__init__.py +0 -0
  14. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/DISCORD_COMMANDS/utils/utils_message.py +0 -0
  15. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/DISCORD_COMMANDS/utils/utils_thread.py +0 -0
  16. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/_DshellInterpreteur/__init__.py +0 -0
  17. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/_DshellParser/__init__.py +0 -0
  18. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/_DshellParser/dshell_parser.py +0 -0
  19. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/_DshellTokenizer/__init__.py +0 -0
  20. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/_DshellTokenizer/dshell_keywords.py +0 -0
  21. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/_DshellTokenizer/dshell_token_type.py +0 -0
  22. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/_DshellTokenizer/dshell_tokenizer.py +0 -0
  23. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/__init__.py +0 -0
  24. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/Dshell/_utils.py +0 -0
  25. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/LICENSE +0 -0
  26. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/README.md +0 -0
  27. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/dshellInterpreter.egg-info/SOURCES.txt +0 -0
  28. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/dshellInterpreter.egg-info/dependency_links.txt +0 -0
  29. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/dshellInterpreter.egg-info/requires.txt +0 -0
  30. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/dshellInterpreter.egg-info/top_level.txt +0 -0
  31. {dshellinterpreter-0.2.14.5 → dshellinterpreter-0.2.15.1}/setup.cfg +0 -0
@@ -64,7 +64,7 @@ async def dshell_respond_interaction(ctx: Interaction,
64
64
 
65
65
  return sended_message.id
66
66
 
67
- async def dshell_defer_interaction(ctx: Interaction, hide: bool = False) -> bool:
67
+ async def dshell_defer_interaction(ctx: Interaction) -> bool:
68
68
  """
69
69
  Defer a message interaction on Discord
70
70
  """
@@ -72,10 +72,7 @@ async def dshell_defer_interaction(ctx: Interaction, hide: bool = False) -> bool
72
72
  if not isinstance(ctx, Interaction):
73
73
  raise Exception(f'Respond to an interaction must be used in an interaction context, not {type(ctx)} !')
74
74
 
75
- if not isinstance(hide, bool):
76
- raise Exception(f'Hide parameter must be a boolean, not {type(hide)} !')
77
-
78
- await ctx.response.defer(ephemeral=hide)
75
+ await ctx.response.defer()
79
76
 
80
77
  return True
81
78
 
@@ -139,10 +139,18 @@ class DshellInterpreteur:
139
139
  self.env[node.name.value] = eval_expression_inline(first_node, self)
140
140
 
141
141
  elif isinstance(first_node, EmbedNode):
142
- self.env[node.name.value] = build_embed(first_node.body, first_node.fields, self)
142
+ # rebuild the embed if it already exists
143
+ if node.name.value in self.env and isinstance(self.env[node.name.value], Embed):
144
+ self.env[node.name.value] = rebuild_embed(self.env[node.name.value], first_node.body, first_node.fields, self)
145
+ else:
146
+ self.env[node.name.value] = build_embed(first_node.body, first_node.fields, self)
143
147
 
144
148
  elif isinstance(first_node, PermissionNode):
145
- self.env[node.name.value] = build_permission(first_node.body, self)
149
+ # rebuild the permissions if it already exists
150
+ if node.name.value in self.env and isinstance(self.env[node.name.value], dict):
151
+ self.env[node.name.value].update(build_permission(first_node.body, self))
152
+ else:
153
+ self.env[node.name.value] = build_permission(first_node.body, self)
146
154
 
147
155
  elif isinstance(first_node, UiNode):
148
156
  # rebuild the UI if it already exists
@@ -410,9 +418,9 @@ def length(variable : LengthNode) -> int:
410
418
  else:
411
419
  return len(variable.body.value)
412
420
 
413
- def build_embed(body: list[Token], fields: list[FieldEmbedNode], interpreter: DshellInterpreteur) -> Embed:
421
+ def build_embed_args(body: list[Token], fields: list[FieldEmbedNode], interpreter: DshellInterpreteur) -> tuple[dict, list[dict]]:
414
422
  """
415
- Builds an embed from the command information.
423
+ Builds the arguments for an embed from the command information.
416
424
  """
417
425
  args_main_embed: dict[str, list[Any]] = regroupe_commandes(body, interpreter)[0]
418
426
  args_main_embed.pop('*') # remove unspecified parameters for the embed
@@ -430,12 +438,39 @@ def build_embed(body: list[Token], fields: list[FieldEmbedNode], interpreter: Ds
430
438
  if 'color' in args_main_embed:
431
439
  args_main_embed['color'] = build_colour(args_main_embed['color']) # convert color to Colour object or int
432
440
 
441
+ return args_main_embed, args_fields
442
+
443
+ def build_embed(body: list[Token], fields: list[FieldEmbedNode], interpreter: DshellInterpreteur) -> Embed:
444
+ """
445
+ Builds an embed from the command information.
446
+ """
447
+
448
+ args_main_embed, args_fields = build_embed_args(body, fields, interpreter)
433
449
  embed = Embed(**args_main_embed) # build the main embed
434
450
  for field in args_fields:
435
451
  embed.add_field(**field) # add all fields
436
452
 
437
453
  return embed
438
454
 
455
+ def rebuild_embed(embed: Embed, body: list[Token], fields: list[FieldEmbedNode], interpreter: DshellInterpreteur) -> Embed:
456
+ """
457
+ Rebuilds an embed from an existing embed and the command information.
458
+ """
459
+ args_main_embed, args_fields = build_embed_args(body, fields, interpreter)
460
+
461
+ for key, value in args_main_embed.items():
462
+ if key == 'color':
463
+ embed.colour = value
464
+ else:
465
+ setattr(embed, key, value)
466
+
467
+ if args_fields:
468
+ embed.clear_fields()
469
+ for field in args_fields:
470
+ embed.add_field(**field)
471
+
472
+ return embed
473
+
439
474
  def build_colour(color: Union[int, ListNode]) -> Union[Colour, int]:
440
475
  """
441
476
  Builds a Colour object from an integer or a ListNode.
@@ -586,6 +586,54 @@ class ListNode(ASTNode):
586
586
  if number < 1:
587
587
  raise Exception(f"The number of elements to remove must be at least 1, not {number} !")
588
588
 
589
+ count = 0
590
+ while number > 0 and count < self.len_iterable:
591
+ if self.iterable[count] == value:
592
+ self.iterable.pop(count)
593
+ self.len_iterable -= 1
594
+ number -= 1
595
+ continue
596
+ count += 1
597
+
598
+ def pop(self):
599
+ """
600
+ Remove and return the last element of the list.
601
+ :return: The last element of the list.
602
+ """
603
+ if self.len_iterable == 0:
604
+ raise IndexError("pop from empty list")
605
+
606
+ self.len_iterable -= 1
607
+ return self.iterable.pop()
608
+
609
+ def count(self):
610
+ """
611
+ Return the number of elements in the list.
612
+ :return: The number of elements in the list.
613
+ """
614
+ return self.len_iterable
615
+
616
+ def clear(self):
617
+ """
618
+ Clear the list.
619
+ """
620
+ self.iterable = []
621
+ self.len_iterable = 0
622
+ self.iterateur_count = 0
623
+
624
+ def sort(self, reverse: bool = False):
625
+ """
626
+ Sort the list.
627
+ :param reverse: Whether to sort the list in reverse order.
628
+ """
629
+ self.iterable.sort(reverse=reverse)
630
+
631
+ def reverse(self):
632
+ """
633
+ Reverse the list.
634
+ """
635
+ self.iterable.reverse()
636
+
589
637
  def __add__(self, other: "ListNode"):
590
638
  """
591
639
  Add another ListNode to this one.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dshellInterpreter
3
- Version: 0.2.14.5
3
+ Version: 0.2.15.1
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: 0.2.14.5
3
+ Version: 0.2.15.1
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="0.2.14.5",
8
+ version="0.2.15.1",
9
9
  author="Chronos",
10
10
  author_email="vagabonwalybi@gmail.com",
11
11
  description="A Discord bot interpreter for creating custom commands and automations.",