dshellInterpreter 0.2.16.1__py3-none-any.whl → 0.2.17.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.

Potentially problematic release.


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

@@ -127,7 +127,7 @@ async def utils_get_roles(ctx: Message, value: int):
127
127
 
128
128
  guild = ctx.guild
129
129
 
130
- what_is = utils_what_discord_type_is(ctx, value)
130
+ what_is, member = utils_what_discord_type_is(ctx, value)
131
131
 
132
132
  if what_is == DiscordType.UNKNOWN:
133
133
  raise ValueError(f"{value} member not found in guild {guild.name}")
@@ -136,4 +136,4 @@ async def utils_get_roles(ctx: Message, value: int):
136
136
  raise TypeError(f"value must be a member id in roles command, not {what_is}")
137
137
 
138
138
  from ..._DshellParser.ast_nodes import ListNode
139
- return ListNode([i.id for i in guild.get_member(value).roles])
139
+ return ListNode([i.id for i in member.roles])
@@ -5,7 +5,7 @@ from discord import Message, PermissionOverwrite
5
5
 
6
6
  from .utils_global import utils_what_discord_type_is, DiscordType
7
7
 
8
- async def utils_has_permissions(ctx: Message, member: int, permission: PermissionOverwrite) -> bool:
8
+ async def utils_has_permissions(ctx: Message, member: int, permission: dict[None, PermissionOverwrite]) -> bool:
9
9
  """
10
10
  Return True if the member has the specified permissions.
11
11
  :param member:
@@ -16,12 +16,15 @@ async def utils_has_permissions(ctx: Message, member: int, permission: Permissio
16
16
  if not isinstance(member, int):
17
17
  raise TypeError(f"member must be an int in has_perms command, not {type(member)}")
18
18
 
19
- if not isinstance(permission, PermissionOverwrite):
19
+ if not isinstance(permission, dict):
20
20
  raise TypeError(f"permissions must be a permission bloc in has_perms command, not {type(permission)}")
21
21
 
22
+ if None not in permission:
23
+ raise ValueError(f"permissions must have simple 'allow' permission in has_perms command, not {permission.keys()}")
24
+
22
25
  discord_type, member = utils_what_discord_type_is(ctx, member)
23
26
 
24
27
  if discord_type != DiscordType.MEMBER:
25
28
  raise ValueError(f"No member found with ID {member} in has_perms command.")
26
29
 
27
- return (member.guild_permissions & permission.pair()[0]) == permission.pair()[0]
30
+ return (member.guild_permissions & permission[None].pair()[0]) == permission[None].pair()[0]
@@ -39,7 +39,7 @@ class DshellPermissions:
39
39
  return instance
40
40
  raise ValueError(f"No role found with ID {role_id} in perm command.")
41
41
 
42
- def get_permission_overwrite(self, guild: Guild) -> dict[Union[Member, Role], PermissionOverwrite]:
42
+ def get_permission_overwrite(self, guild: Guild) -> dict[Union[Member, Role, None], PermissionOverwrite]:
43
43
  """
44
44
  Returns a PermissionOverwrite object with member and role permissions.
45
45
  If no members or roles are specified, it returns a PermissionOverwrite with None key.
@@ -28,13 +28,19 @@ class DshellInterpreteur:
28
28
  Make what you want with Dshell code to interact with Discord !
29
29
  """
30
30
 
31
- def __init__(self, code: str, ctx: context, debug: bool = False, vars: Optional[str] = None):
31
+ def __init__(self, code: str, ctx: context,
32
+ debug: bool = False,
33
+ vars: Optional[str] = None,
34
+ vars_env: Optional[dict[str, Any]] = None):
32
35
  """
33
36
  Interpreter Dshell code
34
37
  :param code: The code to interpret. Each line must end with a newline character, except SEPARATOR and SUB_SEPARATOR tokens.
35
38
  :param ctx: The context in which the code is executed. It can be a Discord bot, a message, or a channel.
36
- :param debug: If True, prints the AST of the code.
39
+ :param debug: If True, prints the AST of the code and put the ctx to None.
37
40
  :param vars: Optional dictionary of variables to initialize in the interpreter's environment.
41
+ :param vars_env: Optional dictionary of additional environment variables to add to the interpreter's environment.
42
+
43
+ Note: __message_before__ (message content before edit) can be overwritten by vars_env parameter.
38
44
  """
39
45
  self.ast: list[ASTNode] = parse(DshellTokenizer(code).start(), StartNode([]))[0]
40
46
  message = ctx.message if isinstance(ctx, Interaction) else ctx
@@ -50,6 +56,8 @@ class DshellInterpreteur:
50
56
  '__author_id__': message.author.id,
51
57
 
52
58
  '__message__': message.content,
59
+ '__message_author__': message.author.id,
60
+ '__message_before__': message.content, # same as __message__, but before edit. Can be overwritten by add vars_env parameter
53
61
  '__message_content__': message.content,
54
62
  '__message_id__': message.id,
55
63
  '__message_url__': message.jump_url if hasattr(message, 'jump_url') else None,
@@ -81,6 +89,8 @@ class DshellInterpreteur:
81
89
  '__guild_channels_count__': len(message.channel.guild.channels),
82
90
 
83
91
  } if message is not None and not debug else {} # {} is used in debug mode, when ctx is None
92
+ if vars_env is not None: # add the variables to the environment
93
+ self.env.update(vars_env)
84
94
  self.vars = vars if vars is not None else ''
85
95
  self.ctx: context = ctx
86
96
  if debug:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dshellInterpreter
3
- Version: 0.2.16.1
3
+ Version: 0.2.17.0
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
@@ -8,14 +8,14 @@ Dshell/DISCORD_COMMANDS/dshell_message.py,sha256=zcWl6Y1W31h9MTHS-j9tLDwcrRiE_wG
8
8
  Dshell/DISCORD_COMMANDS/dshell_pastbin.py,sha256=H0tUJOwdzYBXvxqipK3mzoNZUKrSLcVm4EZlWbBRScs,796
9
9
  Dshell/DISCORD_COMMANDS/dshell_role.py,sha256=t_yRZRD0FKE2gT4dIDIsHz2PSZZztDVEkkqkG_OkNh4,5002
10
10
  Dshell/DISCORD_COMMANDS/utils/__init__.py,sha256=-amNcYysjgx3YDpDSnbQmJhnm3lbJere9K9aDH-YnJg,115
11
- Dshell/DISCORD_COMMANDS/utils/utils_global.py,sha256=TRqKx8FBEJ4cAFfscN-ohx3ySq9tuGI16UAAnZgB5qw,4222
11
+ Dshell/DISCORD_COMMANDS/utils/utils_global.py,sha256=48WpW4Vkdz1ITjCQzmnqKej-1kE71CTY0fB65k2OyWw,4213
12
12
  Dshell/DISCORD_COMMANDS/utils/utils_list.py,sha256=zqImMWvD-1UnbPP1TZewnvZpq7qs1sOTT1YhbJ5I8h8,3160
13
- Dshell/DISCORD_COMMANDS/utils/utils_member.py,sha256=PbZk4Rzz87mktvJPTIvR2f0sXdMylzUWWM6vGEx2efk,998
13
+ Dshell/DISCORD_COMMANDS/utils/utils_member.py,sha256=1EoHooxwijc7AFJGnuae3ccjQk0x69MELtZ5ES5abLY,1165
14
14
  Dshell/DISCORD_COMMANDS/utils/utils_message.py,sha256=cQvJ15f49ddOjybARwkJKNFe3ITYQciF-pZHERFPkr0,2964
15
- Dshell/DISCORD_COMMANDS/utils/utils_permissions.py,sha256=N1Ttn-n1qG87AuOuz5Dlw-mEk8io5ogxxbhiuGmBtgA,3461
15
+ Dshell/DISCORD_COMMANDS/utils/utils_permissions.py,sha256=qfuD_kvzf2J8gHAB4lPO0eOsCjEN-Z3mBTGLEyUoJlk,3467
16
16
  Dshell/DISCORD_COMMANDS/utils/utils_thread.py,sha256=tVl4msEwrWHY-0AytI6eY3JSs-eIFUigDSJfK9mT1ww,1457
17
17
  Dshell/_DshellInterpreteur/__init__.py,sha256=xy5-J-R3YmY99JF3NBHTRRLsComFxpjnCA5xacISctU,35
18
- Dshell/_DshellInterpreteur/dshell_interpreter.py,sha256=Us9eLIUbaKC5rRkPRjGWHlX9ZEFNYeOnwEW_w7LwPhI,28665
18
+ Dshell/_DshellInterpreteur/dshell_interpreter.py,sha256=mO2UCzcc7-6IFtmo_63U_G6NI1RzMvKGbpE0yfgjOd0,29321
19
19
  Dshell/_DshellParser/__init__.py,sha256=ONDfhZMvClqP_6tE8SLjp-cf3pXL-auQYnfYRrHZxC4,56
20
20
  Dshell/_DshellParser/ast_nodes.py,sha256=S2byqd02RMC-ILCX-ZS8zhwOBIBtvMtQ4ESnljjsWmA,18748
21
21
  Dshell/_DshellParser/dshell_parser.py,sha256=KD2ZbKYa1nnvroKmN8fIRD2exXre54Qx_roEBrTV7Mo,18588
@@ -23,8 +23,8 @@ Dshell/_DshellTokenizer/__init__.py,sha256=LIQSRhDx2B9pmPx5ADMwwD0Xr9ybneVLhHH8q
23
23
  Dshell/_DshellTokenizer/dshell_keywords.py,sha256=crzX16IbcYCVqxgzz3NvN0-FzKtBjZcZQvtHqdxhDGk,6787
24
24
  Dshell/_DshellTokenizer/dshell_token_type.py,sha256=gYIb2XN2YcgeRgmar_rBDS5CGmwfmxihu8mOW_d6lbE,1533
25
25
  Dshell/_DshellTokenizer/dshell_tokenizer.py,sha256=AJnUocD6hbU6wvjRAN5uDha5QQieTwXlHzZVtgRGaZQ,7307
26
- dshellinterpreter-0.2.16.1.dist-info/licenses/LICENSE,sha256=lNgcw1_xb7QENAQi3uHGymaFtbs0RV-ihiCd7AoLQjA,1082
27
- dshellinterpreter-0.2.16.1.dist-info/METADATA,sha256=0YtsSJdMbvebXArTm2kTLsPOH1UrGPp-x-0gjhWCHKU,1151
28
- dshellinterpreter-0.2.16.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
29
- dshellinterpreter-0.2.16.1.dist-info/top_level.txt,sha256=B4CMhtmchGwPQJLuqUy0GhRG-0cUGxKL4GqEbCiB_vE,7
30
- dshellinterpreter-0.2.16.1.dist-info/RECORD,,
26
+ dshellinterpreter-0.2.17.0.dist-info/licenses/LICENSE,sha256=lNgcw1_xb7QENAQi3uHGymaFtbs0RV-ihiCd7AoLQjA,1082
27
+ dshellinterpreter-0.2.17.0.dist-info/METADATA,sha256=J8b00rglHz6PwrT6eXudHrMygBS7-bXgSna0zUZ74eo,1151
28
+ dshellinterpreter-0.2.17.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
29
+ dshellinterpreter-0.2.17.0.dist-info/top_level.txt,sha256=B4CMhtmchGwPQJLuqUy0GhRG-0cUGxKL4GqEbCiB_vE,7
30
+ dshellinterpreter-0.2.17.0.dist-info/RECORD,,