Add member and ban events (#20)
This commit is contained in:
parent
f9a7895ecb
commit
15f969c7e6
@ -54,7 +54,13 @@ class EventDispatcher:
|
||||
"INTERACTION_CREATE": self._parse_interaction_create,
|
||||
"GUILD_CREATE": self._parse_guild_create,
|
||||
"CHANNEL_CREATE": self._parse_channel_create,
|
||||
"CHANNEL_UPDATE": self._parse_channel_update,
|
||||
"PRESENCE_UPDATE": self._parse_presence_update,
|
||||
"GUILD_MEMBER_ADD": self._parse_guild_member_add,
|
||||
"GUILD_MEMBER_REMOVE": self._parse_guild_member_remove,
|
||||
"GUILD_BAN_ADD": self._parse_guild_ban_add,
|
||||
"GUILD_BAN_REMOVE": self._parse_guild_ban_remove,
|
||||
"GUILD_ROLE_UPDATE": self._parse_guild_role_update,
|
||||
"TYPING_START": self._parse_typing_start,
|
||||
}
|
||||
|
||||
@ -110,6 +116,45 @@ class EventDispatcher:
|
||||
|
||||
return Reaction(data, client_instance=self._client)
|
||||
|
||||
def _parse_guild_member_add(self, data: Dict[str, Any]):
|
||||
"""Parses GUILD_MEMBER_ADD into a Member object."""
|
||||
|
||||
guild_id = str(data.get("guild_id"))
|
||||
return self._client.parse_member(data, guild_id)
|
||||
|
||||
def _parse_guild_member_remove(self, data: Dict[str, Any]):
|
||||
"""Parses GUILD_MEMBER_REMOVE into a GuildMemberRemove model."""
|
||||
|
||||
from .models import GuildMemberRemove
|
||||
|
||||
return GuildMemberRemove(data, client_instance=self._client)
|
||||
|
||||
def _parse_guild_ban_add(self, data: Dict[str, Any]):
|
||||
"""Parses GUILD_BAN_ADD into a GuildBanAdd model."""
|
||||
|
||||
from .models import GuildBanAdd
|
||||
|
||||
return GuildBanAdd(data, client_instance=self._client)
|
||||
|
||||
def _parse_guild_ban_remove(self, data: Dict[str, Any]):
|
||||
"""Parses GUILD_BAN_REMOVE into a GuildBanRemove model."""
|
||||
|
||||
from .models import GuildBanRemove
|
||||
|
||||
return GuildBanRemove(data, client_instance=self._client)
|
||||
|
||||
def _parse_channel_update(self, data: Dict[str, Any]):
|
||||
"""Parses CHANNEL_UPDATE into a Channel object."""
|
||||
|
||||
return self._client.parse_channel(data)
|
||||
|
||||
def _parse_guild_role_update(self, data: Dict[str, Any]):
|
||||
"""Parses GUILD_ROLE_UPDATE into a GuildRoleUpdate model."""
|
||||
|
||||
from .models import GuildRoleUpdate
|
||||
|
||||
return GuildRoleUpdate(data, client_instance=self._client)
|
||||
|
||||
# Potentially add _parse_user for events that directly provide a full user object
|
||||
# def _parse_user_update(self, data: Dict[str, Any]) -> User:
|
||||
# return User(data=data)
|
||||
|
@ -1734,6 +1734,64 @@ class Reaction:
|
||||
return f"<Reaction message_id='{self.message_id}' user_id='{self.user_id}' emoji='{emoji_value}'>"
|
||||
|
||||
|
||||
class GuildMemberRemove:
|
||||
"""Represents a GUILD_MEMBER_REMOVE event."""
|
||||
|
||||
def __init__(
|
||||
self, data: Dict[str, Any], client_instance: Optional["Client"] = None
|
||||
):
|
||||
self._client = client_instance
|
||||
self.guild_id: str = data["guild_id"]
|
||||
self.user: User = User(data["user"])
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return (
|
||||
f"<GuildMemberRemove guild_id='{self.guild_id}' user_id='{self.user.id}'>"
|
||||
)
|
||||
|
||||
|
||||
class GuildBanAdd:
|
||||
"""Represents a GUILD_BAN_ADD event."""
|
||||
|
||||
def __init__(
|
||||
self, data: Dict[str, Any], client_instance: Optional["Client"] = None
|
||||
):
|
||||
self._client = client_instance
|
||||
self.guild_id: str = data["guild_id"]
|
||||
self.user: User = User(data["user"])
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"<GuildBanAdd guild_id='{self.guild_id}' user_id='{self.user.id}'>"
|
||||
|
||||
|
||||
class GuildBanRemove:
|
||||
"""Represents a GUILD_BAN_REMOVE event."""
|
||||
|
||||
def __init__(
|
||||
self, data: Dict[str, Any], client_instance: Optional["Client"] = None
|
||||
):
|
||||
self._client = client_instance
|
||||
self.guild_id: str = data["guild_id"]
|
||||
self.user: User = User(data["user"])
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"<GuildBanRemove guild_id='{self.guild_id}' user_id='{self.user.id}'>"
|
||||
|
||||
|
||||
class GuildRoleUpdate:
|
||||
"""Represents a GUILD_ROLE_UPDATE event."""
|
||||
|
||||
def __init__(
|
||||
self, data: Dict[str, Any], client_instance: Optional["Client"] = None
|
||||
):
|
||||
self._client = client_instance
|
||||
self.guild_id: str = data["guild_id"]
|
||||
self.role: Role = Role(data["role"])
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"<GuildRoleUpdate guild_id='{self.guild_id}' role_id='{self.role.id}'>"
|
||||
|
||||
|
||||
def channel_factory(data: Dict[str, Any], client: "Client") -> Channel:
|
||||
"""Create a channel object from raw API data."""
|
||||
channel_type = data.get("type")
|
||||
|
@ -23,3 +23,68 @@ Dispatched when a user begins typing in a channel. The callback receives a `Typi
|
||||
async def on_typing_start(typing: disagreement.TypingStart):
|
||||
...
|
||||
```
|
||||
|
||||
## GUILD_MEMBER_ADD
|
||||
|
||||
Fired when a new member joins a guild. The callback receives a `Member` model.
|
||||
|
||||
```python
|
||||
@client.event
|
||||
async def on_guild_member_add(member: disagreement.Member):
|
||||
...
|
||||
```
|
||||
|
||||
## GUILD_MEMBER_REMOVE
|
||||
|
||||
Triggered when a member leaves or is removed from a guild. The callback
|
||||
receives a `GuildMemberRemove` model.
|
||||
|
||||
```python
|
||||
@client.event
|
||||
async def on_guild_member_remove(event: disagreement.GuildMemberRemove):
|
||||
...
|
||||
```
|
||||
|
||||
## GUILD_BAN_ADD
|
||||
|
||||
Dispatched when a user is banned from a guild. The callback receives a
|
||||
`GuildBanAdd` model.
|
||||
|
||||
```python
|
||||
@client.event
|
||||
async def on_guild_ban_add(event: disagreement.GuildBanAdd):
|
||||
...
|
||||
```
|
||||
|
||||
## GUILD_BAN_REMOVE
|
||||
|
||||
Dispatched when a user's ban is lifted. The callback receives a
|
||||
`GuildBanRemove` model.
|
||||
|
||||
```python
|
||||
@client.event
|
||||
async def on_guild_ban_remove(event: disagreement.GuildBanRemove):
|
||||
...
|
||||
```
|
||||
|
||||
## CHANNEL_UPDATE
|
||||
|
||||
Sent when a channel's settings change. The callback receives an updated
|
||||
`Channel` model.
|
||||
|
||||
```python
|
||||
@client.event
|
||||
async def on_channel_update(channel: disagreement.Channel):
|
||||
...
|
||||
```
|
||||
|
||||
## GUILD_ROLE_UPDATE
|
||||
|
||||
Emitted when a guild role is updated. The callback receives a
|
||||
`GuildRoleUpdate` model.
|
||||
|
||||
```python
|
||||
@client.event
|
||||
async def on_guild_role_update(event: disagreement.GuildRoleUpdate):
|
||||
...
|
||||
```
|
||||
|
Loading…
x
Reference in New Issue
Block a user