diff --git a/package-lock.json b/package-lock.json index 8b005dc..eb42fa6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,8 @@ "astro": "^4.15.1", "astro-embed": "^0.7.2", "astro-icon": "^1.1.1", + "axios": "^1.7.9", + "dotenv": "^16.4.7", "gsap": "^3.12.5", "i18next": "^24.2.0", "limax": "4.1.0", @@ -3928,9 +3930,10 @@ } }, "node_modules/axios": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.5.tgz", - "integrity": "sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -4833,6 +4836,18 @@ "tslib": "^2.0.3" } }, + "node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/dset": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", diff --git a/package.json b/package.json index 0ed579b..979bb27 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,8 @@ "astro": "^4.15.1", "astro-embed": "^0.7.2", "astro-icon": "^1.1.1", + "axios": "^1.7.9", + "dotenv": "^16.4.7", "gsap": "^3.12.5", "i18next": "^24.2.0", "limax": "4.1.0", diff --git a/src/components/widgets/hero/Hero.astro b/src/components/widgets/hero/Hero.astro index a04e84a..42e193e 100644 --- a/src/components/widgets/hero/Hero.astro +++ b/src/components/widgets/hero/Hero.astro @@ -18,6 +18,9 @@ import telegramAvatar5 from '~/assets/images/telegram/telegram-avatar-5.jpg'; import telegramIcon from '~/assets/images/telegram-icon.png'; import telegramSky from '~/assets/images/telegram-sky.jpg'; +// telegram channels members +import { telegramChannelMembers, formatMemberCount } from '~/utils/telegram'; + import youtubeIcon from '~/assets/images/youtube-icon.jpg'; //portrait images @@ -96,6 +99,12 @@ const portraitImages = [ { image: { src: portraitImage16, alt: 'portraitImage16' } }, { image: { src: portraitImage17, alt: 'portraitImage17' } }, ]; + +// get the members count's of telegram channel +const channelName = 'persian_flutter'; +const membersCount = await telegramChannelMembers(channelName); + +const formattedMembers = formatMemberCount(membersCount); --- +1.7K{formattedMembers} {translations.socials.telegram.members?.text || 'Default Members'} { + try { + const response = await axios.get( + `https://api.telegram.org/bot${botToken}/getChatMembersCount?chat_id=@${channelName}` + ); + return response.data.result; + } catch (error) { + console.error('Error fetching Telegram members count:', error); + return 0; + } +} + +export function formatMemberCount(num: number): string { + if (num < 1000) { + return num.toString(); + } else if (num < 10000) { + const truncated = Math.floor((num / 1000) * 10) / 10; + return truncated + 'k'; + } else { + return Math.floor(num / 1000) + 'k'; + } +}