Way 1: Telegraf middleware

export const withDetectMembers = (bot) => {
  try {
    bot.on('new_chat_members', (ctx) => {
      // console.log(ctx.message.new_chat_members)

      const { replyWithMarkdown, message } = ctx

      replyWithMarkdown(
        `Event *new_chat_members*\n\n\`\`\`${JSON.stringify(
          { message },
          null,
          2
        )}\`\`\``
      )
    })
  } catch (err) {
    console.log(err)
  }
}

Usage

withDetectMembers(bot)

Output example

При добавлении бота в группу Красная Акула

{
  "message": {
    "message_id": 566,
    "from": {
      "id": 000000000,
      "is_bot": false,
      "first_name": "Den",
      "last_name": "Pol",
      "username": "pravosleva",
      "language_code": "ru"
    },
    "chat": {
      "id": -1001551335399,
      "title": "Красная Акула",
      "is_forum": true,
      "type": "supergroup"
    },
    "date": 1678804889,
    "new_chat_participant": {
      "id": 5347403052,
      "is_bot": true,
      "first_name": "dev_pravosleva_bot",
      "username": "dev_pravosleva_bot"
    },
    "new_chat_member": {
      "id": 5347403052,
      "is_bot": true,
      "first_name": "dev_pravosleva_bot",
      "username": "dev_pravosleva_bot"
    },
    "new_chat_members": [
      {
        "id": 5347403052,
        "is_bot": true,
        "first_name": "dev_pravosleva_bot",
        "username": "dev_pravosleva_bot"
      }
    ]
  }
}

Way 2: @ShowJsonBot

Этот товарищ просто показывает все апдейты, которые в него приходят, отвечая в тот же чат