Heim >Web-Frontend >js-Tutorial >Aufbau eines skalierbaren Bots zur Moderation von Hassreden für Telegram: Ein tiefer Einblick
Bei der Verwaltung einer Telegram-Gruppe mit 3.000 Mitgliedern geht es nicht nur darum, die Zahl zu erhöhen – es geht auch darum, eine sichere, respektvolle Gemeinschaft zu fördern. Nachdem ich wiederholt auf Hassreden gestoßen bin, habe ich einen Node.js-basierten Moderationsbot entwickelt, der Benutzer, die rassistische Beleidigungen posten, automatisch identifiziert und einschränkt. In diesem Artikel begleite ich Sie durch den gesamten Entwicklungsprozess, von der Konzeption bis zur Bereitstellung.
Die manuelle Moderation einer großen Telegram-Gruppe stellt mehrere Herausforderungen dar:
Zuerst richten wir die grundlegende Bot-Struktur mit der richtigen Fehlerbehandlung ein:
const TelegramBot = require('node-telegram-bot-api'); const express = require('express'); const bodyParser = require('body-parser'); const dotenv = require('dotenv'); const logging = require('console'); dotenv.config(); const BOT_TOKEN = process.env.BOT_TOKEN; const bot = new TelegramBot(BOT_TOKEN, { polling: true });
Der Bot implementiert ein mehrschichtiges Überwachungssystem:
bot.on('message', async (msg) => { if (!msg.chat || !msg.from) return; // Message processing logic });
function checkForRacialSlurs(message) { if (!message) return false; return RACIAL_SLURS.some(slur => message.toLowerCase().includes(slur) ); }
async function restrictUser(chatId, userId) { try { await bot.restrictChatMember(chatId, userId, { permissions: { can_send_messages: false, can_send_media_messages: false, can_send_polls: false, can_send_other_messages: false, can_add_web_page_previews: false, can_change_info: false, can_invite_users: false, can_pin_messages: false, }, }); return true; } catch (error) { logging.error('Restriction failed:', error); return false; } }
Der Bot enthält ein Personallayoutsystem für den einfachen Zugriff auf Moderatorinformationen:
const STAFF_LAYOUT = ` <b>GROUP STAFF</b> ? <b>Founder</b> └ @Sixademiks ⚜️ <b>Verified Vendors</b> ├ @Vendor1 (City1) └ @Vendor2 (City2) `;
Neue Benutzer erhalten eine formatierte Willkommensnachricht mit HTML-Analyse:
bot.onText(/\/start/, async (msg) => { try { const welcomeMessage = ` <b>Welcome to the DirtyNewz Bot!</b> Please read the <b>pinned messages</b> for the group rules...`; await bot.sendMessage(msg.chat.id, welcomeMessage, { parse_mode: 'HTML' }); } catch (error) { logging.error("Error in /start:", error); } });
Umfassende Protokollierung hilft, die Bot-Leistung und Benutzerverstöße zu verfolgen:
logging.log('User was restricted due to violation'); logging.error('Error during restriction:', error);
Nachdem wir den Bot in unserer 5.000-köpfigen Gruppe eingesetzt hatten, beobachteten wir Folgendes:
Zunächst stoßen wir in Zeiten mit hohem Datenverkehr auf die Ratengrenzen von Telegram. Lösung:
const rateLimiter = { messageCount: 0, lastReset: Date.now(), check: function() { if (Date.now() - this.lastReset > 1000) { this.messageCount = 0; this.lastReset = Date.now(); } return this.messageCount++ < 30; } };
Robuste Fehlerbehandlung verhindert Bot-Abstürze:
process.on('unhandledRejection', (reason, promise) => { logging.error('Unhandled Rejection at:', promise, 'reason:', reason); }); bot.on('polling_error', (error) => { logging.error('Polling error:', error); }); <h3> 3. Nachrichtenverarbeitung </h3> <p>Effiziente Nachrichtenverarbeitung zur Bewältigung großer Mengen:<br> </p> <pre class="brush:php;toolbar:false">const TelegramBot = require('node-telegram-bot-api'); const express = require('express'); const bodyParser = require('body-parser'); const dotenv = require('dotenv'); const logging = require('console'); dotenv.config(); const BOT_TOKEN = process.env.BOT_TOKEN; const bot = new TelegramBot(BOT_TOKEN, { polling: true });
Der Bot wird auf einem Linux-Server unter Verwendung von PM2 für die Prozessverwaltung bereitgestellt:
bot.on('message', async (msg) => { if (!msg.chat || !msg.from) return; // Message processing logic });
Regelmäßige Überwachung ist entscheidend:
function checkForRacialSlurs(message) { if (!message) return false; return RACIAL_SLURS.some(slur => message.toLowerCase().includes(slur) ); }
async function restrictUser(chatId, userId) { try { await bot.restrictChatMember(chatId, userId, { permissions: { can_send_messages: false, can_send_media_messages: false, can_send_polls: false, can_send_other_messages: false, can_add_web_page_previews: false, can_change_info: false, can_invite_users: false, can_pin_messages: false, }, }); return true; } catch (error) { logging.error('Restriction failed:', error); return false; } }
const STAFF_LAYOUT = ` <b>GROUP STAFF</b> ? <b>Founder</b> └ @Sixademiks ⚜️ <b>Verified Vendors</b> ├ @Vendor1 (City1) └ @Vendor2 (City2) `;
bot.onText(/\/start/, async (msg) => { try { const welcomeMessage = ` <b>Welcome to the DirtyNewz Bot!</b> Please read the <b>pinned messages</b> for the group rules...`; await bot.sendMessage(msg.chat.id, welcomeMessage, { parse_mode: 'HTML' }); } catch (error) { logging.error("Error in /start:", error); } });
Der Aufbau eines Moderations-Bots für eine große Telegram-Gruppe brachte wertvolle Erkenntnisse über Skalierbarkeit, Fehlerbehandlung und Community-Management. Der Bot hat die Umgebung unserer Gruppe deutlich verbessert und gleichzeitig die Arbeitsbelastung der Moderatoren reduziert.
Denken Sie daran, dass es bei einer effektiven Moderation darum geht, das richtige Gleichgewicht zwischen automatisierten Systemen und menschlicher Aufsicht zu finden. Während dieser Bot die erste Verteidigungslinie übernimmt, ist er dazu konzipiert, menschliche Moderatoren zu ergänzen und nicht zu ersetzen.
Bei Fragen können Sie sich gerne an mich wenden oder den vollständigen Code auf meinem GitHub ansehen!
Das obige ist der detaillierte Inhalt vonAufbau eines skalierbaren Bots zur Moderation von Hassreden für Telegram: Ein tiefer Einblick. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!