ptgc
MTProto client for Dart

Events & Updates

Part of the API Reference. A best-effort, high-signal subset of Telegram’s update system — new messages and membership/admin changes, the events most automation cares about. For anything else, listen to client.raw’s .stream directly for the full raw update feed.

TelegramClient.events

Stream<TelegramEvent> get events => _events.stream;

A broadcast stream of TelegramEvents, active once connect() has been called. See Filtering Events by Chat for narrowing this down with .where().

client.events.listen((event) {
  switch (event) {
    case NewMessageEvent():
      print('${event.chatId}: ${event.text}');
    case MemberStatusChangedEvent():
      print('${event.userId} changed status in ${event.chatId}');
  }
});

Types

TelegramEvent

The sealed base type for everything delivered on events. Switch exhaustively over its two subtypes, or match one with is.

NewMessageEvent

A new message was sent or received.

Field Type Meaning
messageId int
chatId int The chat (user, group, or channel) this message belongs to.
senderId int? Who sent it, if known (may be null for channel posts, service messages, etc).
text String Empty for pure-media messages.
isOutgoing bool True if this account sent it.
date DateTime

MemberStatusChangedEvent

A member’s status changed in a basic group or a supergroup/channel — joined, left, was banned/restricted, or had their admin rights changed. Fires for the target of the change; check Members.get if you need the resulting role/rights spelled out as a Participant.

Field Type Meaning
chatId int
userId int The member whose status changed.
actorId int Who made the change (an admin, or userId itself if they left/joined on their own).
date DateTime