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 100000Ordinary (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.
403CHAT_WRITE_FORBIDDENYou can't write in this chat.
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.
500PERSISTENT_TIMESTAMP_OUTDATEDChannel internal replication issues, try again later (treat this like an RPC_CALL_FAIL).
400PINNED_DIALOGS_TOO_MUCHToo many pinned dialogs.
400RANGES_INVALIDInvalid range provided.
400USER_BANNED_IN_CHANNELYou're banned from sending messages in supergroups/channels.

Can bots use this method?

Yes

Working with Updates

How to subscribe to updates and handle them properly.