Groups Namespace (client.groups)¶
client.groups covers group lifecycle, membership controls, invite flows, and moderation primitives.
Scope
Use this namespace for normal groups. For community-parent orchestration, pair this page with Community Namespace.
Method Families¶
create_group(options)leave(jid)query_info(jid)get_participating()get_metadata(jid)
set_subject(jid, subject)set_description(jid, description=None, prev=None)set_locked(jid, locked)set_announce(jid, announce)set_ephemeral(jid, expiration)set_member_add_mode(jid, mode)set_membership_approval(jid, mode)
add_participants(jid, participants)remove_participants(jid, participants)promote_participants(jid, participants)demote_participants(jid, participants)get_membership_requests(jid)approve_membership_requests(jid, participants)reject_membership_requests(jid, participants)
get_invite_link(jid, reset)join_with_invite_code(code)join_with_invite_v4(group_jid, code, expiration, admin_jid)get_invite_info(code)
Runnable Example: Group Setup Playbook¶
from tryx.client import CreateGroupOptions, GroupParticipantOptions, MembershipApprovalMode
async def setup_group(client, title, member_jids):
participants = [GroupParticipantOptions(jid=jid) for jid in member_jids]
options = CreateGroupOptions(subject=title, participants=participants)
created = await client.groups.create_group(options)
gid = created.gid
await client.groups.set_announce(gid, True)
await client.groups.set_membership_approval(gid, MembershipApprovalMode.On)
await client.groups.set_ephemeral(gid, 604800)
return gid
Runnable Example: Membership Queue Handler¶
async def process_requests(client, group_jid):
pending = await client.groups.get_membership_requests(group_jid)
if not pending:
return {"approved": 0, "rejected": 0}
approve = [row.jid for row in pending[:10]]
reject = [row.jid for row in pending[10:]]
await client.groups.approve_membership_requests(group_jid, approve)
if reject:
await client.groups.reject_membership_requests(group_jid, reject)
return {"approved": len(approve), "rejected": len(reject)}
Partial success is valid
Participant mutations can return per-user status via ParticipantChangeResponse. Always inspect each response item and do not treat list-returning calls as all-or-nothing.