GramJS

updates.GetChannelDifference

Returns the difference between the current state of updates of a certain channel and transmitted.

Example

const { Api, TelegramClient } = require("telegram");
const { StringSession } = require("telegram/sessions");

const session = new StringSession(""); // You should put your string session here
const client = new TelegramClient(session, apiId, apiHash, {});

(async function run() {
  await client.connect(); // This assumes you have already authenticated with .start()

  const result = await client.invoke(
    new Api.updates.GetChannelDifference({
      channel: "username",
      filter: new Api.ChannelMessagesFilter({
        ranges: [
          new Api.MessageRange({
            minId: 0,
            maxId: 0,
          }),
        ],
        excludeNewMessages: true,
      }),
      pts: 43,
      limit: 100,
      force: true,
    })
  );
  console.log(result); // prints the result
})();
import { Api, TelegramClient } from "telegram";
import { StringSession } from "telegram/sessions";

const session = new StringSession(""); // You should put your string session here
const client = new TelegramClient(session, apiId, apiHash, {});

(async function run() {
  await client.connect(); // This assumes you have already authenticated with .start()

  const result: Api.updates.ChannelDifference = await client.invoke(
    new Api.updates.GetChannelDifference({
      channel: "username",
      filter: new Api.ChannelMessagesFilter({
        ranges: [
          new Api.MessageRange({
            minId: 0,
            maxId: 0,
          }),
        ],
        excludeNewMessages: true,
      }),
      pts: 43,
      limit: 100,
      force: true,
    })
  );
  console.log(result); // prints the result
})();

Parameters

NameTypeDescription
flags#Flags, see TL conditional fields
forceflags.0?trueSet to true to skip some possibly unneeded updates and reduce server-side load
channelInputChannelThe channel
filterChannelMessagesFilterMesssage filter
ptsintPersistent timestamp (see updates)
limitintHow many updates to fetch, max 100000
Ordinary (non-bot) users are supposed to pass 10-100

Result

updates.ChannelDifference

Possible errors

CodeTypeDescription
400CHANNEL_INVALIDThe provided channel is invalid
400CHANNEL_PRIVATEYou haven't joined this channel/supergroup
403CHANNEL_PUBLIC_GROUP_NAchannel/supergroup not available
400FROM_MESSAGE_BOT_DISABLEDBots can't use fromMessage min constructors
400MSG_ID_INVALIDInvalid message ID provided
400PERSISTENT_TIMESTAMP_EMPTYPersistent timestamp empty
400PERSISTENT_TIMESTAMP_INVALIDPersistent timestamp invalid
400PINNED_DIALOGS_TOO_MUCHToo many pinned dialogs
400RANGES_INVALIDInvalid range provided

Can bots use this method?

Yes

Working with Updates

How to subscribe to updates and handle them properly.