회원 수가 3,000명인 Telegram 그룹을 관리하는 것은 단순히 숫자를 늘리는 것이 아니라 안전하고 존중받는 커뮤니티를 조성하는 것입니다. 반복되는 증오심 표현 사례를 접한 후 인종 비방을 게시하는 사용자를 자동으로 식별하고 제한하는 Node.js 기반 조정 봇을 개발했습니다. 이 기사에서는 개념 구상부터 배포까지 전체 개발 과정을 안내해 드리겠습니다.
대규모 Telegram 그룹을 수동으로 조정하면 다음과 같은 몇 가지 문제가 발생합니다.
먼저 적절한 오류 처리 기능을 갖춘 기본 봇 구조를 설정합니다.
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.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; } }
봇에는 중재자 정보에 쉽게 접근할 수 있는 직원 레이아웃 시스템이 포함되어 있습니다.
const STAFF_LAYOUT = ` <b>GROUP STAFF</b> ? <b>Founder</b> └ @Sixademiks ⚜️ <b>Verified Vendors</b> ├ @Vendor1 (City1) └ @Vendor2 (City2) `;
신규 사용자는 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); } });
포괄적인 로깅은 봇 성능 및 사용자 위반을 추적하는 데 도움이 됩니다.
logging.log('User was restricted due to violation'); logging.error('Error during restriction:', error);
5,000명의 회원 그룹에 봇을 배포한 후 다음을 관찰했습니다.
처음에는 트래픽이 많은 기간 동안 Telegram의 속도 제한에 도달했습니다. 해결책:
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; } };
강력한 오류 처리로 봇 충돌 방지:
process.on('unhandledRejection', (reason, promise) => { logging.error('Unhandled Rejection at:', promise, 'reason:', reason); }); bot.on('polling_error', (error) => { logging.error('Polling error:', error); });
대량 처리를 위한 효율적인 메시지 처리:
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 });
봇은 프로세스 관리를 위해 PM2를 사용하여 Linux 서버에 배포됩니다.
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; } }
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); } });
대규모 Telegram 그룹을 위한 조정 봇을 구축하면서 확장성, 오류 처리 및 커뮤니티 관리에 대한 귀중한 교훈을 얻었습니다. 봇은 중재자의 업무량을 줄이면서 우리 그룹의 환경을 크게 개선했습니다.
효과적인 조정은 자동화된 시스템과 사람의 감독 사이에서 적절한 균형을 찾는 것임을 기억하세요. 이 봇은 첫 번째 방어선을 처리하지만 인간 조정자를 대체하는 것이 아니라 보완하도록 설계되었습니다.
궁금한 점이 있으면 언제든지 문의하거나 내 GitHub에서 전체 코드를 확인하세요!
위 내용은 Telegram을 위한 확장 가능한 증오심 방지 연설 중재 봇 구축: 심층 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!