Add Telegram group members count to meetups

This commit is contained in:
Dennis Reimann
2022-05-04 12:10:38 +02:00
parent e28bd422b9
commit 67f0a9adf1
6 changed files with 51 additions and 10 deletions

View File

@@ -33,6 +33,8 @@ jobs:
run: npm ci
- name: Build
run: npm run prod
env:
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
# Deploy, limited to the master branch
- name: Deploy
if: success() && github.ref == 'refs/heads/master'

View File

@@ -73,6 +73,10 @@
transform: scale(.75);
animation-name: pulse;
}
& .members {
display: none;
}
}
}
}

View File

@@ -34,7 +34,7 @@ block main
:markdown-it(html linkify typographer)
## 💬 Komm in die Gruppe!
Mit unserer Telegram-Gruppe bieten wir dir ein Shitcoin-freies Refugium: Mit über 1.000 Gleichgesinnten
Mit unserer Telegram-Gruppe bieten wir dir ein Shitcoin-freies Refugium: Mit über 2.000 Gleichgesinnten
sprechen wir dort nicht über den Preis, Altcoins oder sonstige unwichtigen Dinge. In unserer Gruppe
findest du News, Informationen und bekommst praktische Ratschläge zu technischen Themen.

View File

@@ -28,18 +28,24 @@ block main
ul.meetups
each m in filterOfficial(meetups, true)
li.official(class=clss(m) style=style(m))
a(href=m.url target="_blank" rel="nofollow noopener")
a(href=m.url target="_blank" rel="nofollow noopener" title=m.members ? `${m.members} Mitglieder` : null)
.dot(style=`animation-delay:${((j*2000) + random(3000))}ms;animation-duration:${meetups.length*2}s;`)
= m.name.replace('Einundzwanzig ', '')
if m.members
= ' '
span.members= `(${m.members} Mitglieder)`
- j++
h2 Weitere Meetups
ul.meetups
each m in filterOfficial(meetups, false)
li(class=clss(m) style=style(m))
a(href=m.url target="_blank" rel="nofollow noopener")
a(href=m.url target="_blank" rel="nofollow noopener" title=m.members ? `${m.members} Mitglieder` : null)
.dot(style=`animation-delay:${((j*2000) + random(3000))}ms;animation-duration:${meetups.length*2}s;`)
= m.name.replace('Bitcoin ', '')
if m.members
= ' '
span.members= `(${m.members} Mitglieder)`
- j++
img#dach(src=assetPath('/img/dach.svg') alt="DE, AT, CH")
@@ -49,8 +55,11 @@ block main
ul.meetups
each m in filterUnmapped(meetups)
li(class=clss(m) style=style(m))
a(href=m.url target="_blank" rel="nofollow noopener")
a(href=m.url target="_blank" rel="nofollow noopener" title=m.members ? `${m.members} Mitglieder` : null)
= m.name
if m.members
= ' '
span.members= `(${m.members} Mitglieder)`
script.
document.getElementById('dach').onclick = e => {

View File

@@ -8,7 +8,6 @@ const episodes = require('../generated/episodes.json')
const spendenregister = require('../generated/spendenregister.json')
const spendenuebersicht = require('../content/spendenuebersicht.json')
const team = require('../content/team.json')
const meetups = require('../content/meetups.json')
const telegram = require('../content/telegram.json')
const shops = require('../content/shops.json')
const soundboard = require('../content/soundboard.json')
@@ -27,7 +26,7 @@ const renderPage = (template, out, data = {}) => {
}
const sortId = m => `${m.country === 'DE' ? '0' : m.country}-${m.name}`
const meetupsSorted = meetups.sort((a, b) => {
const meetupsSorted = site.meetups.sort((a, b) => {
return sortId(a) > sortId(b) ? 1 : -1
})

View File

@@ -6,6 +6,8 @@ const meta = require('../content/meta.json')
const meetups = require('../content/meetups.json')
const soundboard = require('../content/soundboard.json')
const { TELEGRAM_BOT_TOKEN } = process.env
const dir = (...path) => resolve(__dirname, '..', ...path)
const writeJSON = (file, data) => writeFileSync(file, JSON.stringify(data, null, 2))
@@ -20,18 +22,43 @@ try {
const block = recentBlocks.length && recentBlocks[0].height
const date = (new Date()).toJSON().split('T')[0]
writeJSON(dir('generated', 'site-data.json'), { date, block, meta })
// Meetups
const meetup = meetups.map(m => {
const copy = Object.assign({}, m)
delete copy.top
delete copy.left
if (TELEGRAM_BOT_TOKEN) {
let { telegramId } = m
if (!telegramId && m.url.startsWith('https://t.me/')) {
[,, telegramId] = m.url.match(/:\/\/t\.me\/(?!(\+|joinchat))(.*)/) || []
if (telegramId) {
try {
const jsonBody = request(
'GET',
`https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/getChatMemberCount?chat_id=@${telegramId}`
).getBody('utf8')
const { ok, result } = JSON.parse(jsonBody)
if (ok) {
copy.telegramId = telegramId
copy.members = result
}
} catch (err) {
}
}
}
}
return copy
})
writeJSON(dir('dist', 'meetups.json'), meetup)
writeJSON(dir('generated', 'site-data.json'), {
date,
block,
meta,
meetups: meetup,
})
// Soundboard
const sounds = soundboard.map(group => {
group.sounds = group.sounds.map(sound => {