Menguruskan kumpulan Telegram dengan 3,000 ahli bukan sahaja tentang peningkatan bilangan—ia tentang memupuk komuniti yang selamat dan hormat-menghormati. Selepas menghadapi kejadian ucapan benci yang berulang, saya membangunkan bot penyederhanaan berasaskan Node.js yang secara automatik mengenal pasti dan menyekat pengguna yang menyiarkan cercaan kaum. Dalam artikel ini, saya akan membimbing anda melalui keseluruhan proses pembangunan, daripada konsep hingga penggunaan.
Moderasi manual kumpulan Telegram yang besar memberikan beberapa cabaran:
Mula-mula, kami menyediakan struktur bot asas dengan pengendalian ralat yang betul:
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 });
Bot melaksanakan sistem pemantauan berbilang lapisan:
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; } }
Bot termasuk sistem susun atur kakitangan untuk akses mudah kepada maklumat penyederhana:
const STAFF_LAYOUT = ` <b>GROUP STAFF</b> ? <b>Founder</b> └ @Sixademiks ⚜️ <b>Verified Vendors</b> ├ @Vendor1 (City1) └ @Vendor2 (City2) `;
Pengguna baharu menerima mesej alu-aluan berformat dengan penghuraian HTML:
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); } });
Pengelogan komprehensif membantu menjejak prestasi bot dan pelanggaran pengguna:
logging.log('User was restricted due to violation'); logging.error('Error during restriction:', error);
Selepas menggunakan bot dalam kumpulan 5,000 ahli kami, kami memerhati:
Pada mulanya, kami mencapai had kadar Telegram semasa tempoh trafik tinggi. Penyelesaian:
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; } };
Pengendalian ralat yang mantap menghalang ranap bot:
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. Pemprosesan Mesej </h3> <p>Pemprosesan mesej yang cekap untuk mengendalikan volum tinggi:<br> </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><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 });
Bot digunakan pada pelayan Linux menggunakan PM2 untuk pengurusan proses:
bot.on('message', async (msg) => { if (!msg.chat || !msg.from) return; // Message processing logic });
Pemantauan berkala adalah penting:
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); } });
Membina bot penyederhana untuk kumpulan Telegram yang besar mengajar pelajaran berharga tentang kebolehskalaan, pengendalian ralat dan pengurusan komuniti. Bot telah meningkatkan persekitaran kumpulan kami dengan ketara sambil mengurangkan beban kerja penyederhana.
Ingat bahawa penyederhanaan yang berkesan adalah tentang mencari keseimbangan yang betul antara sistem automatik dan pengawasan manusia. Walaupun bot ini mengendalikan barisan pertahanan pertama, ia direka untuk melengkapkan, bukan menggantikan, penyederhana manusia.
Jangan teragak-agak untuk menghubungi dengan soalan atau lihat kod lengkap pada GitHub saya!
Atas ialah kandungan terperinci Membina Bot Penyederhanaan Pertuturan Anti-Kebencian Berskala untuk Telegram: A Deep Dive. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!