Users
Working with users in the Mezon SDK.
Accessing Users
Sending Direct Messages
Send a DM to a user:
from mezon.models import ChannelMessageContent
user = await client.users.get("user_id")
await user.send_dm_message(
content=ChannelMessageContent(t="Hello via DM!")
)
Friends
List Friends
friends = await client.get_list_friends(
limit=100,
state=None, # Optional filter
cursor=None # For pagination
)
for friend in friends:
print(f"Friend: {friend}")
Add Friend
Accept Friend Request
User Events
User Joined Channel
from mezon.protobuf.rtapi import realtime_pb2
async def on_user_joined(event: realtime_pb2.UserChannelAdded):
print(f"User {event.user_id} joined channel {event.channel_id}")
client.on_user_channel_added(on_user_joined)
User Left Channel
async def on_user_left(event: realtime_pb2.UserChannelRemoved):
print(f"User {event.user_id} left channel {event.channel_id}")
client.on_user_channel_removed(on_user_left)
User Joined Clan
async def on_user_joined_clan(event: realtime_pb2.AddClanUserEvent):
print(f"User joined clan: {event.clan_id}")
client.on_add_clan_user(on_user_joined_clan)
User Left Clan
from mezon import Events
async def on_user_left_clan(event):
print(f"User left clan")
client.on(Events.USER_CLAN_REMOVED, on_user_left_clan)
Message Author
When handling messages, access the sender:
async def handle_message(message: api_pb2.ChannelMessage):
sender_id = message.sender_id
# Check if it's the bot
if sender_id == client.client_id:
return
# Get user object
user = await client.users.get(sender_id)
# Reply or DM
channel = await client.channels.fetch(message.channel_id)
await channel.send(
content=ChannelMessageContent(t=f"Hello <@{sender_id}>!")
)
client.on_channel_message(handle_message)