XMTP
XMTP is the protocol that MessageKit uses to send and receive messages.
Check out the xmtp e2ee plugins for more information.
Context
The Context
object is a core component that provides access to all XMTP messaging functionality. It handles conversations, groups, and messages.
import { Context } from "@xmtp/message-kit";
onMessage(async (context: Context) => {
const {
message, // Current message details
client, // V3 XMTP client
v2client, // V2 XMTP client
conversation, // Current conversation
group, // Group details if in a group chat
} = context;
// Your message handling logic
});
Properties
Message
Contains information about the current message:
content
: The message contentsender
: Address of message sendersent
: Timestamp when message was senttypeId
: Type of messageclient
: V3 XMTP client instancev2client
: V2 XMTP client instanceconversation
: Current conversation object with messaging methods
Group (V3 Only)
Group chat information including:
members
: List of all group membersadmins
: List of group administratorssuperAdmins
: List of group super administrators
Identity
Each messages comes with a sender object that contains the address, name, and avatar of the sender.
interface Member {
// Unique identifier for the user's inbox
inboxId: string;
// User's blockchain address (e.g. Ethereum address)
address: string;
// Array of all addresses associated with this identity
accountAddresses: string[];
// Array of unique installation identifiers
installationIds: string[];
}
// Example usage
const { sender } = context.message;
Properties:
inboxId
: A unique identifier for the user's message inbox. This remains consistent across different installations.address
: The primary blockchain address associated with the sender. This is typically an Ethereum address.accountAddresses
: An array of all blockchain addresses linked to this identity. Users can have multiple addresses associated with their XMTP identity.installationIds
: Array of unique identifiers for each installation/device where the user has XMTP enabled.
Clients
MessageKit provides wrapped versions of XMTP clients for easier integration:
import { V2Client, V3Client } from "xmtp";
You can create new client instances using the createClient
helper:
import { XMTP } from "xmtp";
const xmtp = new XMTP();
const { v2client, v3client } = await xmtp.init();
Availability
To check if a user has XMTP enabled:
const { v2, v3 } = await context.xmtp.isOnXMTP(address);
Returns:
v2
:true
if user has XMTP V2 enabledv3
:true
if user has XMTP V3 enabled