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 run: npm ci
- name: Build - name: Build
run: npm run prod run: npm run prod
env:
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
# Deploy, limited to the master branch # Deploy, limited to the master branch
- name: Deploy - name: Deploy
if: success() && github.ref == 'refs/heads/master' if: success() && github.ref == 'refs/heads/master'

View File

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

View File

@@ -34,7 +34,7 @@ block main
:markdown-it(html linkify typographer) :markdown-it(html linkify typographer)
## 💬 Komm in die Gruppe! ## 💬 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 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. findest du News, Informationen und bekommst praktische Ratschläge zu technischen Themen.

View File

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

View File

@@ -8,7 +8,6 @@ const episodes = require('../generated/episodes.json')
const spendenregister = require('../generated/spendenregister.json') const spendenregister = require('../generated/spendenregister.json')
const spendenuebersicht = require('../content/spendenuebersicht.json') const spendenuebersicht = require('../content/spendenuebersicht.json')
const team = require('../content/team.json') const team = require('../content/team.json')
const meetups = require('../content/meetups.json')
const telegram = require('../content/telegram.json') const telegram = require('../content/telegram.json')
const shops = require('../content/shops.json') const shops = require('../content/shops.json')
const soundboard = require('../content/soundboard.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 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 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 meetups = require('../content/meetups.json')
const soundboard = require('../content/soundboard.json') const soundboard = require('../content/soundboard.json')
const { TELEGRAM_BOT_TOKEN } = process.env
const dir = (...path) => resolve(__dirname, '..', ...path) const dir = (...path) => resolve(__dirname, '..', ...path)
const writeJSON = (file, data) => writeFileSync(file, JSON.stringify(data, null, 2)) const writeJSON = (file, data) => writeFileSync(file, JSON.stringify(data, null, 2))
@@ -20,18 +22,43 @@ try {
const block = recentBlocks.length && recentBlocks[0].height const block = recentBlocks.length && recentBlocks[0].height
const date = (new Date()).toJSON().split('T')[0] const date = (new Date()).toJSON().split('T')[0]
writeJSON(dir('generated', 'site-data.json'), { date, block, meta })
// Meetups // Meetups
const meetup = meetups.map(m => { const meetup = meetups.map(m => {
const copy = Object.assign({}, 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 return copy
}) })
writeJSON(dir('dist', 'meetups.json'), meetup) writeJSON(dir('dist', 'meetups.json'), meetup)
writeJSON(dir('generated', 'site-data.json'), {
date,
block,
meta,
meetups: meetup,
})
// Soundboard // Soundboard
const sounds = soundboard.map(group => { const sounds = soundboard.map(group => {
group.sounds = group.sounds.map(sound => { group.sounds = group.sounds.map(sound => {