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.
Files changed (51) hide show
  1. {modifyself-0.3.1 → modifyself-0.3.4}/PKG-INFO +1 -1
  2. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/__init__.py +1 -1
  3. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/commands/context.py +11 -8
  4. modifyself-0.3.4/modifyself/models/__init__.py +32 -0
  5. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/channel.py +34 -3
  6. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself.egg-info/PKG-INFO +1 -1
  7. {modifyself-0.3.1 → modifyself-0.3.4}/pyproject.toml +1 -1
  8. modifyself-0.3.1/modifyself/models/__init__.py +0 -23
  9. {modifyself-0.3.1 → modifyself-0.3.4}/LICENSE +0 -0
  10. {modifyself-0.3.1 → modifyself-0.3.4}/README.md +0 -0
  11. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/activity.py +0 -0
  12. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/client.py +0 -0
  13. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/commands/__init__.py +0 -0
  14. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/commands/checks.py +0 -0
  15. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/commands/cog.py +0 -0
  16. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/commands/converters.py +0 -0
  17. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/commands/core.py +0 -0
  18. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/components.py +0 -0
  19. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/core/bitfield.py +0 -0
  20. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/core/enums.py +0 -0
  21. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/core/mixins.py +0 -0
  22. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/core/snowflake.py +0 -0
  23. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/errors.py +0 -0
  24. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/gateway/__init__.py +0 -0
  25. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/gateway/dispatcher.py +0 -0
  26. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/gateway/heartbeat.py +0 -0
  27. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/gateway/websocket.py +0 -0
  28. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/headers.py +0 -0
  29. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/http/__init__.py +0 -0
  30. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/http/client.py +0 -0
  31. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/http/ratelimit.py +0 -0
  32. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/http/route.py +0 -0
  33. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/interactions.py +0 -0
  34. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/base.py +0 -0
  35. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/billing.py +0 -0
  36. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/guild.py +0 -0
  37. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/member.py +0 -0
  38. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/message.py +0 -0
  39. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/relationship.py +0 -0
  40. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/settings.py +0 -0
  41. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/user.py +0 -0
  42. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/models/webhook.py +0 -0
  43. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/state.py +0 -0
  44. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/types.py +0 -0
  45. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/utils.py +0 -0
  46. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself/voice.py +0 -0
  47. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself.egg-info/SOURCES.txt +0 -0
  48. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself.egg-info/dependency_links.txt +0 -0
  49. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself.egg-info/requires.txt +0 -0
  50. {modifyself-0.3.1 → modifyself-0.3.4}/modifyself.egg-info/top_level.txt +0 -0
  51. {modifyself-0.3.1 → modifyself-0.3.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modifyself
3
- Version: 0.3.1
3
+ Version: 0.3.4
4
4
  Summary: A clean, pythonic Discord self-bot library
5
5
  Author-email: modifyself <modifyself@example.com>
6
6
  License-Expression: MIT
@@ -2,7 +2,7 @@
2
2
  modifyself ? a clean, pythonic Discord self-bot library.
3
3
  """
4
4
 
5
- __version__ = "0.3.1"
5
+ __version__ = "0.3.4"
6
6
 
7
7
  from .client import Client
8
8
  from .commands.core import command
@@ -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.channel
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
- if self.channel:
76
- return await self.channel.send(content, **kwargs)
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
- if self.channel:
86
- await self.channel.typing()
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
- if self.channel:
92
+ ch = self.channel
93
+ if ch:
91
94
  data = await self.bot._state.http.get_messages(
92
- self.channel.id, limit=1, before=message_id + 1
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modifyself
3
- Version: 0.3.1
3
+ Version: 0.3.4
4
4
  Summary: A clean, pythonic Discord self-bot library
5
5
  Author-email: modifyself <modifyself@example.com>
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "modifyself"
7
- version = "0.3.1"
7
+ version = "0.3.4"
8
8
  description = "A clean, pythonic Discord self-bot library"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -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