diff --git a/content/meetups.json b/content/meetups.json index b132b2f1b8e..d4f5e79a6f9 100644 --- a/content/meetups.json +++ b/content/meetups.json @@ -49,7 +49,7 @@ }, { "name": "Einundzwanzig Berlin", - "url": "https://t.me/joinchat/vUYgAbXeCnIzMWRi", + "url": "https://t.me/Einundzwanzig_Berlin", "top": 26, "left": 65, "country": "DE", @@ -129,7 +129,7 @@ }, { "name": "Einundzwanzig Düsseldorf", - "url": "https://t.me/joinchat/pwUMGpOQzDZiZDRi", + "url": "https://t.me/einundzwanzig_duesseldorf", "top": 38, "left": 16, "country": "DE", @@ -201,7 +201,7 @@ }, { "name": "Einundzwanzig Frankfurt am Main", - "url": "https://t.me/joinchat/Ox2zR68PzuQ2OTYy", + "url": "/https://t.me/einundzwanzigffm", "top": 51, "left": 26, "country": "DE", diff --git a/src/css/sections/meetups.css b/src/css/sections/meetups.css index 1f6e71162e4..b7a5f69ebc3 100644 --- a/src/css/sections/meetups.css +++ b/src/css/sections/meetups.css @@ -73,10 +73,6 @@ transform: scale(.75); animation-name: pulse; } - - & .members { - display: none; - } } } } diff --git a/src/meetups.pug b/src/meetups.pug index e5065b75d38..8294a5307de 100644 --- a/src/meetups.pug +++ b/src/meetups.pug @@ -21,6 +21,10 @@ block main Hier gibt es ein [Video-Tutorial](https://www.youtube.com/watch?v=BNJc9LExEzU), wie ein neuer Pull Request erstellt werden kann. Die Werte für `top/left` geben prozentual die Position des Ortes auf der Karte an. + Wir können auch die Anzahl der Gruppenmitglieder hier anzeigen lassen. + Voraussetzung dafür ist, dass die Gruppe öffentlich ist und einen Linknamen hat (a la `t.me/Einundzwanzig_ORT`, kann nur vom Ersteller der Gruppe angepasst werden). + Tipp: Mit Bots wie [Shieldy](https://t.me/shieldy_bot) kann man die Spammer draußen halten. + Die Vorlage für das Telegram-Gruppenbild findest du im [Media Kit](/media). #map @@ -28,24 +32,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" title=m.members ? `${m.members} Mitglieder` : null) + a(href=m.url target="_blank" rel="nofollow noopener") .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)` + if m.members + = ' ' + small.members= `(${m.members})` - 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" title=m.members ? `${m.members} Mitglieder` : null) + a(href=m.url target="_blank" rel="nofollow noopener") .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)` + if m.members + = ' ' + small.members= `(${m.members})` - j++ img#dach(src=assetPath('/img/dach.svg') alt="DE, AT, CH") @@ -55,11 +59,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" title=m.members ? `${m.members} Mitglieder` : null) + a(href=m.url target="_blank" rel="nofollow noopener") = m.name - if m.members - = ' ' - span.members= `(${m.members} Mitglieder)` + if m.members + = ' ' + small.members= `(${m.members})` script. document.getElementById('dach').onclick = e => { diff --git a/src/telegram.pug b/src/telegram.pug index 9dbdb8d9772..82bfd718060 100644 --- a/src/telegram.pug +++ b/src/telegram.pug @@ -18,3 +18,6 @@ block main each group in telegram li a(href=group.url rel="nofollow noopener" target="_blank")= group.name + if group.members + = ' ' + small.members= `(${group.members} Mitglieder)` diff --git a/tasks/generate_pages.js b/tasks/generate_pages.js index 4fa3a0c50fc..19b0ebf04a3 100644 --- a/tasks/generate_pages.js +++ b/tasks/generate_pages.js @@ -37,7 +37,7 @@ renderPage('meetups', 'meetups', { navCurrent: 'meetups', meetups: meetupsSorted renderPage('spenden', 'spenden', { navCurrent: 'spenden', spendenregister, spendenuebersicht }) renderPage('media', 'media', { navCurrent: 'media' }) renderPage('soundboard', 'soundboard', { navCurrent: 'soundboard', soundboard }) -renderPage('telegram', 'telegram', { navCurrent: 'telegram', telegram }) +renderPage('telegram', 'telegram', { navCurrent: 'telegram', telegram: site.telegram }) renderPage('events', 'events', { navCurrent: 'events' }) renderPage('events/satoshis-bleibe-2022', 'events/satoshis-bleibe-2022', { navCurrent: 'events'}) renderPage('events/bitcoin-im-laendle-2022', 'events/bitcoin-im-laendle-2022', { navCurrent: 'events' }) diff --git a/tasks/generate_site_data.js b/tasks/generate_site_data.js index 5abdb875729..cb355208130 100644 --- a/tasks/generate_site_data.js +++ b/tasks/generate_site_data.js @@ -4,12 +4,32 @@ const request = require('sync-request') const meta = require('../content/meta.json') const meetups = require('../content/meetups.json') +const telegram = require('../content/telegram.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)) +const getTelegramMembersCount = url => { + if (TELEGRAM_BOT_TOKEN) { + if (url.startsWith('https://t.me/')) { + [, , telegramId] = 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) { + return result + } + } catch (err) {} + } + } + } +} let recentBlocks = [] try { @@ -22,41 +42,26 @@ try { const block = recentBlocks.length && recentBlocks[0].height const date = (new Date()).toJSON().split('T')[0] +// Telegram +const telegramData = telegram.map(t => + Object.assign(t, { + members: getTelegramMembersCount(t.url), + }) +) + // Meetups -const meetup = meetups.map(m => { - const copy = Object.assign({}, m) +const meetupsData = meetups.map(m => Object.assign(m, { + members: getTelegramMembersCount(m.url) +})) - 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('dist', 'meetups.json'), meetupsData) writeJSON(dir('generated', 'site-data.json'), { date, block, meta, - meetups: meetup, + meetups: meetupsData, + telegram: telegramData }) // Soundboard