mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig.space.git
synced 2025-12-13 16:26:50 +00:00
Add Telegram group members count to meetups
This commit is contained in:
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@@ -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'
|
||||||
|
|||||||
@@ -73,6 +73,10 @@
|
|||||||
transform: scale(.75);
|
transform: scale(.75);
|
||||||
animation-name: pulse;
|
animation-name: pulse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
& .members {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|
||||||
|
|||||||
@@ -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 => {
|
||||||
|
|||||||
@@ -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
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -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 => {
|
||||||
|
|||||||
Reference in New Issue
Block a user