dshellInterpreter 0.2.13.14__tar.gz → 0.2.13.15__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.
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/DISCORD_COMMANDS/dshell_interaction.py +19 -7
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/DISCORD_COMMANDS/dshell_message.py +28 -6
- dshellinterpreter-0.2.13.15/Dshell/DISCORD_COMMANDS/utils/utils_message.py +68 -0
- {dshellinterpreter-0.2.13.14/dshellInterpreter.egg-info → dshellinterpreter-0.2.13.15}/PKG-INFO +1 -1
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15/dshellInterpreter.egg-info}/PKG-INFO +1 -1
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/setup.py +1 -1
- dshellinterpreter-0.2.13.14/Dshell/DISCORD_COMMANDS/utils/utils_message.py +0 -28
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/DISCORD_COMMANDS/__init__.py +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/DISCORD_COMMANDS/dshell_channel.py +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/DISCORD_COMMANDS/dshell_member.py +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/DISCORD_COMMANDS/dshell_pastbin.py +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/DISCORD_COMMANDS/dshell_role.py +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/DISCORD_COMMANDS/utils/__init__.py +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/DISCORD_COMMANDS/utils/utils_thread.py +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/_DshellInterpreteur/__init__.py +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/_DshellInterpreteur/dshell_interpreter.py +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/_DshellParser/__init__.py +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/_DshellParser/ast_nodes.py +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/_DshellParser/dshell_parser.py +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/_DshellTokenizer/__init__.py +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/_DshellTokenizer/dshell_keywords.py +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/_DshellTokenizer/dshell_token_type.py +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/_DshellTokenizer/dshell_tokenizer.py +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/__init__.py +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/_utils.py +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/LICENSE +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/README.md +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/dshellInterpreter.egg-info/SOURCES.txt +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/dshellInterpreter.egg-info/dependency_links.txt +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/dshellInterpreter.egg-info/requires.txt +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/dshellInterpreter.egg-info/top_level.txt +0 -0
- {dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/setup.cfg +0 -0
|
@@ -4,11 +4,22 @@ __all__ = [
|
|
|
4
4
|
]
|
|
5
5
|
|
|
6
6
|
from types import NoneType
|
|
7
|
-
from discord import Interaction, Embed
|
|
7
|
+
from discord import Interaction, Embed, AllowedMentions
|
|
8
8
|
from pycordViews import EasyModifiedViews
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
from .utils.utils_message import utils_autorised_mentions
|
|
11
|
+
|
|
12
|
+
async def dshell_respond_interaction(ctx: Interaction,
|
|
13
|
+
content: str = None,
|
|
14
|
+
delete=None,
|
|
15
|
+
global_mentions: bool = None,
|
|
16
|
+
everyone_mention: bool = True,
|
|
17
|
+
roles_mentions: bool = True,
|
|
18
|
+
users_mentions: bool = True,
|
|
19
|
+
reply_mention: bool = False,
|
|
20
|
+
hide: bool = False,
|
|
21
|
+
embeds=None,
|
|
22
|
+
view=None) -> int:
|
|
12
23
|
"""
|
|
13
24
|
Responds to a message interaction on Discord
|
|
14
25
|
"""
|
|
@@ -19,13 +30,14 @@ async def dshell_respond_interaction(ctx: Interaction, content: str = None, dele
|
|
|
19
30
|
if delete is not None and not isinstance(delete, (int, float)):
|
|
20
31
|
raise Exception(f'Delete parameter must be a number (seconds) or None, not {type(delete)} !')
|
|
21
32
|
|
|
22
|
-
if not isinstance(mentions, (NoneType, bool)):
|
|
23
|
-
raise Exception(f'Mention parameter must be a boolean or None, not {type(mentions)} !')
|
|
24
|
-
|
|
25
33
|
if not isinstance(hide, bool):
|
|
26
34
|
raise Exception(f'Hide parameter must be a boolean, not {type(hide)} !')
|
|
27
35
|
|
|
28
|
-
allowed_mentions =
|
|
36
|
+
allowed_mentions = utils_autorised_mentions(global_mentions,
|
|
37
|
+
everyone_mention,
|
|
38
|
+
roles_mentions,
|
|
39
|
+
users_mentions,
|
|
40
|
+
reply_mention)
|
|
29
41
|
|
|
30
42
|
from .._DshellParser.ast_nodes import ListNode
|
|
31
43
|
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
from re import search
|
|
2
|
-
from tkinter import Listbox
|
|
3
2
|
|
|
4
|
-
from discord import Embed, Message
|
|
3
|
+
from discord import Embed, Message
|
|
5
4
|
from discord.ext import commands
|
|
6
5
|
|
|
7
6
|
from pycordViews import EasyModifiedViews
|
|
8
7
|
|
|
9
|
-
from .utils.utils_message import utils_get_message
|
|
8
|
+
from .utils.utils_message import utils_get_message, utils_autorised_mentions
|
|
10
9
|
from .._utils import NoneType
|
|
11
10
|
|
|
12
11
|
__all__ = [
|
|
@@ -24,7 +23,17 @@ __all__ = [
|
|
|
24
23
|
]
|
|
25
24
|
|
|
26
25
|
|
|
27
|
-
async def dshell_send_message(ctx: Message,
|
|
26
|
+
async def dshell_send_message(ctx: Message,
|
|
27
|
+
message=None,
|
|
28
|
+
delete=None,
|
|
29
|
+
channel=None,
|
|
30
|
+
global_mentions: bool = None,
|
|
31
|
+
everyone_mention: bool = True,
|
|
32
|
+
roles_mentions: bool = True,
|
|
33
|
+
users_mentions: bool = True,
|
|
34
|
+
reply_mention: bool = False,
|
|
35
|
+
embeds=None,
|
|
36
|
+
view=None) -> int:
|
|
28
37
|
"""
|
|
29
38
|
Sends a message on Discord
|
|
30
39
|
"""
|
|
@@ -33,6 +42,7 @@ async def dshell_send_message(ctx: Message, message=None, delete=None, channel=N
|
|
|
33
42
|
raise Exception(f'Delete parameter must be a number (seconds) or None, not {type(delete)} !')
|
|
34
43
|
|
|
35
44
|
channel_to_send = ctx.channel if channel is None else ctx.channel.guild.get_channel(channel)
|
|
45
|
+
allowed_mentions = utils_autorised_mentions(global_mentions, everyone_mention, roles_mentions, users_mentions, reply_mention)
|
|
36
46
|
|
|
37
47
|
if channel_to_send is None:
|
|
38
48
|
raise Exception(f'Channel {channel} not found!')
|
|
@@ -54,12 +64,22 @@ async def dshell_send_message(ctx: Message, message=None, delete=None, channel=N
|
|
|
54
64
|
sended_message = await channel_to_send.send(message,
|
|
55
65
|
delete_after=delete,
|
|
56
66
|
embeds=embeds,
|
|
67
|
+
allowed_mentions=allowed_mentions,
|
|
57
68
|
view=view)
|
|
58
69
|
|
|
59
70
|
return sended_message.id
|
|
60
71
|
|
|
61
72
|
|
|
62
|
-
async def dshell_respond_message(ctx: Message,
|
|
73
|
+
async def dshell_respond_message(ctx: Message,
|
|
74
|
+
message=None,
|
|
75
|
+
content: str = None,
|
|
76
|
+
global_mentions: bool = None,
|
|
77
|
+
everyone_mention: bool = True,
|
|
78
|
+
roles_mentions: bool = True,
|
|
79
|
+
users_mentions: bool = True,
|
|
80
|
+
reply_mention: bool = False,
|
|
81
|
+
delete=None,
|
|
82
|
+
embeds=None):
|
|
63
83
|
"""
|
|
64
84
|
Responds to a message on Discord
|
|
65
85
|
"""
|
|
@@ -67,7 +87,8 @@ async def dshell_respond_message(ctx: Message, message=None, content: str = None
|
|
|
67
87
|
raise Exception(f'Delete parameter must be a number (seconds) or None, not {type(delete)} !')
|
|
68
88
|
|
|
69
89
|
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)
|
|
70
|
-
|
|
90
|
+
autorised_mentions = utils_autorised_mentions(global_mentions, everyone_mention, roles_mentions, users_mentions, reply_mention)
|
|
91
|
+
mention_author = True if reply_mention else False
|
|
71
92
|
|
|
72
93
|
from .._DshellParser.ast_nodes import ListNode
|
|
73
94
|
|
|
@@ -83,6 +104,7 @@ async def dshell_respond_message(ctx: Message, message=None, content: str = None
|
|
|
83
104
|
sended_message = await respond_message.reply(
|
|
84
105
|
content=str(content),
|
|
85
106
|
mention_author=mention_author,
|
|
107
|
+
allowed_mentions=autorised_mentions,
|
|
86
108
|
delete_after=delete,
|
|
87
109
|
embeds=embeds)
|
|
88
110
|
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
from discord import Message, PartialMessage, AllowedMentions
|
|
2
|
+
from typing import Union
|
|
3
|
+
from re import search
|
|
4
|
+
|
|
5
|
+
def utils_get_message(ctx: Message, message: Union[int, str]) -> PartialMessage:
|
|
6
|
+
"""
|
|
7
|
+
Returns the message object of the specified message ID or link.
|
|
8
|
+
Message is only available in the same server as the command and in the same channel.
|
|
9
|
+
If the message is a link, it must be in the format: https://discord.com/channels/{guild_id}/{channel_id}/{message_id}
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
if isinstance(message, int):
|
|
13
|
+
return ctx.channel.get_partial_message(message)
|
|
14
|
+
|
|
15
|
+
elif isinstance(message, str):
|
|
16
|
+
match = search(r'https://discord\.com/channels/(\d+)/(\d+)/(\d+)', message)
|
|
17
|
+
if not match:
|
|
18
|
+
raise Exception("Invalid message link format. Use a valid Discord message link.")
|
|
19
|
+
guild_id = int(match.group(1))
|
|
20
|
+
channel_id = int(match.group(2))
|
|
21
|
+
message_id = int(match.group(3))
|
|
22
|
+
|
|
23
|
+
if guild_id != ctx.guild.id:
|
|
24
|
+
raise Exception("The message must be from the same server as the command !")
|
|
25
|
+
|
|
26
|
+
return ctx.guild.get_channel(channel_id).get_partial_message(message_id)
|
|
27
|
+
|
|
28
|
+
raise Exception(f"Message must be an integer or a string, not {type(message)} !")
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def utils_autorised_mentions(global_mentions: bool = None,
|
|
32
|
+
everyone_mention: bool = True,
|
|
33
|
+
roles_mentions: bool = True,
|
|
34
|
+
users_mentions: bool = True,
|
|
35
|
+
reply_mention: bool = False) -> Union[bool, 'AllowedMentions']:
|
|
36
|
+
"""
|
|
37
|
+
Returns the AllowedMentions object based on the provided parameters.
|
|
38
|
+
If global_mentions is set to True or False, it overrides all other parameters.
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
from discord import AllowedMentions
|
|
42
|
+
|
|
43
|
+
if not isinstance(global_mentions, (type(None), bool)):
|
|
44
|
+
raise Exception(f'Mention parameter must be a boolean or None, not {type(global_mentions)} !')
|
|
45
|
+
|
|
46
|
+
if not isinstance(everyone_mention, bool):
|
|
47
|
+
raise Exception(f'Everyone mention parameter must be a boolean, not {type(everyone_mention)} !')
|
|
48
|
+
|
|
49
|
+
if not isinstance(roles_mentions, bool):
|
|
50
|
+
raise Exception(f'Roles mention parameter must be a boolean, not {type(roles_mentions)} !')
|
|
51
|
+
|
|
52
|
+
if not isinstance(users_mentions, bool):
|
|
53
|
+
raise Exception(f'Users mention parameter must be a boolean, not {type(users_mentions)} !')
|
|
54
|
+
|
|
55
|
+
if not isinstance(reply_mention, bool):
|
|
56
|
+
raise Exception(f'Reply mention parameter must be a boolean, not {type(reply_mention)} !')
|
|
57
|
+
|
|
58
|
+
if global_mentions is True:
|
|
59
|
+
return AllowedMentions.all()
|
|
60
|
+
|
|
61
|
+
elif global_mentions is False:
|
|
62
|
+
return AllowedMentions.none()
|
|
63
|
+
|
|
64
|
+
else:
|
|
65
|
+
return AllowedMentions(everyone=everyone_mention,
|
|
66
|
+
roles=roles_mentions,
|
|
67
|
+
users=users_mentions,
|
|
68
|
+
replied_user=reply_mention)
|
|
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
|
|
|
5
5
|
|
|
6
6
|
setup(
|
|
7
7
|
name="dshellInterpreter",
|
|
8
|
-
version="0.2.13.
|
|
8
|
+
version="0.2.13.15",
|
|
9
9
|
author="Chronos",
|
|
10
10
|
author_email="vagabonwalybi@gmail.com",
|
|
11
11
|
description="A Discord bot interpreter for creating custom commands and automations.",
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
from discord import Message, PartialMessage
|
|
2
|
-
from typing import Union
|
|
3
|
-
from re import search
|
|
4
|
-
|
|
5
|
-
def utils_get_message(ctx: Message, message: Union[int, str]) -> PartialMessage:
|
|
6
|
-
"""
|
|
7
|
-
Returns the message object of the specified message ID or link.
|
|
8
|
-
Message is only available in the same server as the command and in the same channel.
|
|
9
|
-
If the message is a link, it must be in the format: https://discord.com/channels/{guild_id}/{channel_id}/{message_id}
|
|
10
|
-
"""
|
|
11
|
-
|
|
12
|
-
if isinstance(message, int):
|
|
13
|
-
return ctx.channel.get_partial_message(message)
|
|
14
|
-
|
|
15
|
-
elif isinstance(message, str):
|
|
16
|
-
match = search(r'https://discord\.com/channels/(\d+)/(\d+)/(\d+)', message)
|
|
17
|
-
if not match:
|
|
18
|
-
raise Exception("Invalid message link format. Use a valid Discord message link.")
|
|
19
|
-
guild_id = int(match.group(1))
|
|
20
|
-
channel_id = int(match.group(2))
|
|
21
|
-
message_id = int(match.group(3))
|
|
22
|
-
|
|
23
|
-
if guild_id != ctx.guild.id:
|
|
24
|
-
raise Exception("The message must be from the same server as the command !")
|
|
25
|
-
|
|
26
|
-
return ctx.guild.get_channel(channel_id).get_partial_message(message_id)
|
|
27
|
-
|
|
28
|
-
raise Exception(f"Message must be an integer or a string, not {type(message)} !")
|
{dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/DISCORD_COMMANDS/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/DISCORD_COMMANDS/dshell_member.py
RENAMED
|
File without changes
|
|
File without changes
|
{dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/DISCORD_COMMANDS/dshell_role.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/_DshellInterpreteur/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/_DshellParser/__init__.py
RENAMED
|
File without changes
|
{dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/_DshellParser/ast_nodes.py
RENAMED
|
File without changes
|
{dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/_DshellParser/dshell_parser.py
RENAMED
|
File without changes
|
{dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/Dshell/_DshellTokenizer/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/dshellInterpreter.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/dshellInterpreter.egg-info/requires.txt
RENAMED
|
File without changes
|
{dshellinterpreter-0.2.13.14 → dshellinterpreter-0.2.13.15}/dshellInterpreter.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|