Events
Listening to events
import hikari
@sosad.listen(hikari.GuildMessageCreateEvent)
async def on_message(event: hikari.GuildMessageCreateEvent) -> None:
print(f"Message from {event.author}: {event.content}")
@sosad.listen(hikari.GuildMemberCreateEvent)
async def on_member_join(event: hikari.GuildMemberCreateEvent) -> None:
print(f"{event.user} joined {event.guild_id}")
Via the Client
bot = sosad.Client(token="...", intents=hikari.Intents.ALL)
@bot.listen()
async def on_ready(event: hikari.StartedEvent) -> None:
print("Bot is ready!")
Event priority
Events are dispatched in registration order. Use middleware for ordering.
Typed events
from sosad.events import TypedEvent
class UserMessageEvent(TypedEvent):
user_id: int
content: str
channel_id: int
# Emit
await UserMessageEvent(user_id=123, content="Hello!", channel_id=456).emit()
# Listen
@sosad.listen(UserMessageEvent)
async def on_user_message(event: UserMessageEvent) -> None:
print(f"{event.user_id}: {event.content}")