>웹 프론트엔드 >JS 튜토리얼 >Telegram을 위한 확장 가능한 증오심 방지 연설 중재 봇 구축: 심층 분석

Telegram을 위한 확장 가능한 증오심 방지 연설 중재 봇 구축: 심층 분석

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-14 16:42:14595검색

회원 수가 3,000명인 Telegram 그룹을 관리하는 것은 단순히 숫자를 늘리는 것이 아니라 안전하고 존중받는 커뮤니티를 조성하는 것입니다. 반복되는 증오심 표현 사례를 접한 후 인종 비방을 게시하는 사용자를 자동으로 식별하고 제한하는 Node.js 기반 조정 봇을 개발했습니다. 이 기사에서는 개념 구상부터 배포까지 전체 개발 과정을 안내해 드리겠습니다.

도전

대규모 Telegram 그룹을 수동으로 조정하면 다음과 같은 몇 가지 문제가 발생합니다.

  • 운영자는 연중무휴 온라인 상태일 수 없습니다
  • 유해한 콘텐츠는 삭제되기 전에 빠르게 확산될 수 있습니다
  • 일관적인 규칙 시행이 어렵습니다
  • 메시지 양이 많아 수동 검토가 불가능함

기술 아키텍처

핵심기술

  • Node.js: 런타임 환경
  • node-telegram-bot-api: 공식 Telegram Bot API 래퍼
  • Express.js: 향후 웹훅 구현을 위한 웹 서버
  • dotenv: 환경변수 관리
  • Body-parser: 파싱 미들웨어 요청

봇 구성

먼저 적절한 오류 처리 기능을 갖춘 기본 봇 구조를 설정합니다.

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 });

메시지 모니터링 시스템

봇은 다층 모니터링 시스템을 구현합니다.

  1. 최초 메시지 수신:
bot.on('message', async (msg) => {
  if (!msg.chat || !msg.from) return;
  // Message processing logic
});
  1. 콘텐츠 분석:
function checkForRacialSlurs(message) {
  if (!message) return false;
  return RACIAL_SLURS.some(slur => 
    message.toLowerCase().includes(slur)
  );
}
  1. 단속 조치:
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;
  }
}

고급 기능

1. 직원 관리 시스템

봇에는 중재자 정보에 쉽게 접근할 수 있는 직원 레이아웃 시스템이 포함되어 있습니다.

const STAFF_LAYOUT = ` 
<b>GROUP STAFF</b>

? <b>Founder</b>
└ @Sixademiks

⚜️ <b>Verified Vendors</b>
├ @Vendor1 (City1)
└ @Vendor2 (City2)
`;

2. 환영 메시지 시스템

신규 사용자는 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);
  }
});

3. 로깅 시스템

포괄적인 로깅은 봇 성능 및 사용자 위반을 추적하는 데 도움이 됩니다.

logging.log('User was restricted due to violation');
logging.error('Error during restriction:', error);

실제 성능

5,000명의 회원 그룹에 봇을 배포한 후 다음을 관찰했습니다.

  • 99.9% 가동 시간
  • 평균 응답 시간
  • 비방 감지 오탐지 제로
  • 조정 업무량 30% 감소
  • 커뮤니티 분위기 대폭 개선

구현 과제 및 솔루션

1. 속도 제한

처음에는 트래픽이 많은 기간 동안 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;
  }
};

2. 오류 처리

강력한 오류 처리로 봇 충돌 방지:

process.on('unhandledRejection', (reason, promise) => {
  logging.error('Unhandled Rejection at:', promise, 'reason:', reason);
});

bot.on('polling_error', (error) => {
  logging.error('Polling error:', error);
});

3. 메시지 처리

대량 처리를 위한 효율적인 메시지 처리:

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 });

Building a Scalable Anti-Hate Speech Moderation Bot for Telegram: A Deep Dive

전개

봇은 프로세스 관리를 위해 PM2를 사용하여 Linux 서버에 배포됩니다.

bot.on('message', async (msg) => {
  if (!msg.chat || !msg.from) return;
  // Message processing logic
});

Building a Scalable Anti-Hate Speech Moderation Bot for Telegram: A Deep Dive

모니터링 및 유지보수

정기적인 모니터링이 중요합니다:

function checkForRacialSlurs(message) {
  if (!message) return false;
  return RACIAL_SLURS.some(slur => 
    message.toLowerCase().includes(slur)
  );
}

향후 개선 사항

  1. 머신러닝 통합
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;
  }
}
  1. 관리 대시보드
const STAFF_LAYOUT = ` 
<b>GROUP STAFF</b>

? <b>Founder</b>
└ @Sixademiks

⚜️ <b>Verified Vendors</b>
├ @Vendor1 (City1)
└ @Vendor2 (City2)
`;
  1. 이의신청 시스템
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 그룹을 위한 조정 봇을 구축하면서 확장성, 오류 처리 및 커뮤니티 관리에 대한 귀중한 교훈을 얻었습니다. 봇은 중재자의 업무량을 줄이면서 우리 그룹의 환경을 크게 개선했습니다.

효과적인 조정은 자동화된 시스템과 사람의 감독 사이에서 적절한 균형을 찾는 것임을 기억하세요. 이 봇은 첫 번째 방어선을 처리하지만 인간 조정자를 대체하는 것이 아니라 보완하도록 설계되었습니다.

자원

  • 텔레그램 봇 API 문서
  • 노드-텔레그램-봇-API
  • Express.js 문서

궁금한 점이 있으면 언제든지 문의하거나 내 GitHub에서 전체 코드를 확인하세요!

위 내용은 Telegram을 위한 확장 가능한 증오심 방지 연설 중재 봇 구축: 심층 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.