modifyself 0.3.1__tar.gz → 0.3.4__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.
- {modifyself-0.3.1 → modifyself-0.3.4}/PKG-INFO +1 -1
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/__init__.py +1 -1
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/commands/context.py +11 -8
- modifyself-0.3.4/modifyself/models/__init__.py +32 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/channel.py +34 -3
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself.egg-info/PKG-INFO +1 -1
- {modifyself-0.3.1 → modifyself-0.3.4}/pyproject.toml +1 -1
- modifyself-0.3.1/modifyself/models/__init__.py +0 -23
- {modifyself-0.3.1 → modifyself-0.3.4}/LICENSE +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/README.md +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/activity.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/client.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/commands/__init__.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/commands/checks.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/commands/cog.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/commands/converters.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/commands/core.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/components.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/core/bitfield.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/core/enums.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/core/mixins.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/core/snowflake.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/errors.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/gateway/__init__.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/gateway/dispatcher.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/gateway/heartbeat.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/gateway/websocket.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/headers.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/http/__init__.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/http/client.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/http/ratelimit.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/http/route.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/interactions.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/base.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/billing.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/guild.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/member.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/message.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/relationship.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/settings.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/user.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/webhook.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/state.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/types.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/utils.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/voice.py +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself.egg-info/SOURCES.txt +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself.egg-info/dependency_links.txt +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself.egg-info/requires.txt +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/modifyself.egg-info/top_level.txt +0 -0
- {modifyself-0.3.1 → modifyself-0.3.4}/setup.cfg +0 -0
|
@@ -43,7 +43,7 @@ class Context:
|
|
|
43
43
|
@property
|
|
44
44
|
def channel(self) -> "Channel | None":
|
|
45
45
|
if self._cs_channel is None:
|
|
46
|
-
self._cs_channel = self.message.
|
|
46
|
+
self._cs_channel = self.bot.get_channel(self.message.channel_id)
|
|
47
47
|
return self._cs_channel
|
|
48
48
|
|
|
49
49
|
@property
|
|
@@ -72,8 +72,9 @@ class Context:
|
|
|
72
72
|
|
|
73
73
|
async def send(self, content: str | None = None, **kwargs):
|
|
74
74
|
"""Send a message to the current channel."""
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
ch = self.channel
|
|
76
|
+
if ch:
|
|
77
|
+
return await ch.send(content, **kwargs)
|
|
77
78
|
raise RuntimeError("Cannot send: no channel available")
|
|
78
79
|
|
|
79
80
|
async def reply(self, content: str | None = None, **kwargs):
|
|
@@ -82,16 +83,18 @@ class Context:
|
|
|
82
83
|
|
|
83
84
|
async def trigger_typing(self):
|
|
84
85
|
"""Trigger typing in the current channel."""
|
|
85
|
-
|
|
86
|
-
|
|
86
|
+
ch = self.channel
|
|
87
|
+
if ch:
|
|
88
|
+
await ch.typing()
|
|
87
89
|
|
|
88
90
|
async def fetch_message(self, message_id: int):
|
|
89
91
|
"""Fetch a message from the current channel."""
|
|
90
|
-
|
|
92
|
+
ch = self.channel
|
|
93
|
+
if ch:
|
|
91
94
|
data = await self.bot._state.http.get_messages(
|
|
92
|
-
|
|
95
|
+
ch.id, limit=1, before=message_id + 1
|
|
93
96
|
)
|
|
94
97
|
if data:
|
|
95
98
|
from ..models.message import Message
|
|
96
99
|
return Message(state=self.bot._state, data=data[0])
|
|
97
|
-
return None
|
|
100
|
+
return None
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from .user import User
|
|
2
|
+
from .guild import Guild
|
|
3
|
+
from .channel import Channel, TextChannel, DMChannel, GroupChannel, VoiceChannel, CategoryChannel, channel_factory
|
|
4
|
+
from .message import Message
|
|
5
|
+
from .member import Member
|
|
6
|
+
from .base import DiscordObject
|
|
7
|
+
from .relationship import Relationship
|
|
8
|
+
from .billing import PaymentSource, Subscription
|
|
9
|
+
from .settings import GuildSettings, UserSettings
|
|
10
|
+
from .webhook import Webhook, WebhookMessage
|
|
11
|
+
|
|
12
|
+
__all__ = [
|
|
13
|
+
"User",
|
|
14
|
+
"Guild",
|
|
15
|
+
"Channel",
|
|
16
|
+
"TextChannel",
|
|
17
|
+
"DMChannel",
|
|
18
|
+
"GroupChannel",
|
|
19
|
+
"VoiceChannel",
|
|
20
|
+
"CategoryChannel",
|
|
21
|
+
"channel_factory",
|
|
22
|
+
"Message",
|
|
23
|
+
"Member",
|
|
24
|
+
"DiscordObject",
|
|
25
|
+
"Relationship",
|
|
26
|
+
"PaymentSource",
|
|
27
|
+
"Subscription",
|
|
28
|
+
"GuildSettings",
|
|
29
|
+
"UserSettings",
|
|
30
|
+
"Webhook",
|
|
31
|
+
"WebhookMessage",
|
|
32
|
+
]
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
Discord Channel models.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
from typing import TYPE_CHECKING
|
|
5
|
+
from typing import TYPE_CHECKING, Optional, List
|
|
6
6
|
|
|
7
7
|
from .base import DiscordObject
|
|
8
|
+
from .user import User
|
|
8
9
|
from ..core.enums import ChannelType
|
|
9
10
|
|
|
10
11
|
if TYPE_CHECKING:
|
|
@@ -84,7 +85,6 @@ class DMChannel(Channel):
|
|
|
84
85
|
|
|
85
86
|
def _update(self, data: dict):
|
|
86
87
|
super()._update(data)
|
|
87
|
-
from .user import User
|
|
88
88
|
self.recipients = [
|
|
89
89
|
User(state=self._state, data=u) for u in data.get("recipients", [])
|
|
90
90
|
]
|
|
@@ -100,6 +100,35 @@ class DMChannel(Channel):
|
|
|
100
100
|
return f"<DMChannel id={self.id} recipient={self.recipient}>"
|
|
101
101
|
|
|
102
102
|
|
|
103
|
+
class GroupChannel(Channel):
|
|
104
|
+
"""Represents a group DM channel."""
|
|
105
|
+
|
|
106
|
+
__slots__ = ("name", "icon", "recipients", "owner_id", "application_id", "managed")
|
|
107
|
+
|
|
108
|
+
def __init__(self, *, state: "ConnectionState", data: dict):
|
|
109
|
+
super().__init__(state=state, data=data)
|
|
110
|
+
|
|
111
|
+
def _update(self, data: dict):
|
|
112
|
+
super()._update(data)
|
|
113
|
+
self.name = data.get("name")
|
|
114
|
+
self.icon = data.get("icon")
|
|
115
|
+
self.recipients = [
|
|
116
|
+
User(state=self._state, data=u) for u in data.get("recipients", [])
|
|
117
|
+
]
|
|
118
|
+
self.owner_id = int(data["owner_id"]) if data.get("owner_id") else None
|
|
119
|
+
self.application_id = int(data["application_id"]) if data.get("application_id") else None
|
|
120
|
+
self.managed = data.get("managed", False)
|
|
121
|
+
|
|
122
|
+
@property
|
|
123
|
+
def icon_url(self) -> Optional[str]:
|
|
124
|
+
if self.icon:
|
|
125
|
+
return f"https://cdn.discordapp.com/channel-icons/{self.id}/{self.icon}.png"
|
|
126
|
+
return None
|
|
127
|
+
|
|
128
|
+
def __repr__(self) -> str:
|
|
129
|
+
return f"<GroupChannel id={self.id} name={self.name!r}>"
|
|
130
|
+
|
|
131
|
+
|
|
103
132
|
class VoiceChannel(Channel):
|
|
104
133
|
"""Represents a guild voice channel."""
|
|
105
134
|
|
|
@@ -142,9 +171,11 @@ def channel_factory(state: "ConnectionState", data: dict) -> Channel:
|
|
|
142
171
|
return TextChannel(state=state, data=data)
|
|
143
172
|
elif channel_type == ChannelType.DM:
|
|
144
173
|
return DMChannel(state=state, data=data)
|
|
174
|
+
elif channel_type == ChannelType.GROUP_DM:
|
|
175
|
+
return GroupChannel(state=state, data=data)
|
|
145
176
|
elif channel_type == ChannelType.GUILD_VOICE:
|
|
146
177
|
return VoiceChannel(state=state, data=data)
|
|
147
178
|
elif channel_type == ChannelType.GUILD_CATEGORY:
|
|
148
179
|
return CategoryChannel(state=state, data=data)
|
|
149
180
|
else:
|
|
150
|
-
return Channel(state=state, data=data)
|
|
181
|
+
return Channel(state=state, data=data)
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Discord entity models.
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
from .base import DiscordObject
|
|
6
|
-
from .user import User
|
|
7
|
-
from .guild import Guild
|
|
8
|
-
from .channel import Channel, TextChannel, DMChannel, VoiceChannel, CategoryChannel
|
|
9
|
-
from .message import Message
|
|
10
|
-
from .member import Member
|
|
11
|
-
|
|
12
|
-
__all__ = [
|
|
13
|
-
"DiscordObject",
|
|
14
|
-
"User",
|
|
15
|
-
"Guild",
|
|
16
|
-
"Channel",
|
|
17
|
-
"TextChannel",
|
|
18
|
-
"DMChannel",
|
|
19
|
-
"VoiceChannel",
|
|
20
|
-
"CategoryChannel",
|
|
21
|
-
"Message",
|
|
22
|
-
"Member",
|
|
23
|
-
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|