ホームページ >ウェブフロントエンド >jsチュートリアル >Telegram 用のスケーラブルなアンチ ヘイト スピーチ モデレーション ボットの構築: 詳細

Telegram 用のスケーラブルなアンチ ヘイト スピーチ モデレーション ボットの構築: 詳細

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-14 16:42:14600ブラウズ

3,000 人のメンバーを持つ Telegram グループを管理することは、単にメンバーを増やすことではなく、安全で敬意を持ったコミュニティを育成することでもあります。繰り返しヘイトスピーチに遭遇した後、私は人種的中傷を投稿するユーザーを自動的に識別して制限する Node.js ベースのモデレーション ボットを開発しました。この記事では、構想から展開までの開発プロセス全体を説明します。

挑戦

大規模な Telegram グループの手動モデレーションには、いくつかの課題があります:

  • モデレーターは 24 時間 365 日オンラインでいられるわけではありません
  • 有害なコンテンツは削除される前に急速に拡散する可能性があります
  • ルールを一貫して施行するのは難しい
  • 大量のメッセージにより手動レビューは現実的ではありません

技術アーキテクチャ

コア技術

  • Node.js: ランタイム環境
  • node-telegram-bot-api: 公式 Telegram Bot API ラッパー
  • Express.js: 将来の Webhook 実装用の Web サーバー
  • 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 グループ向けのモデレーション ボットの構築により、スケーラビリティ、エラー処理、コミュニティ管理について貴重な教訓が得られました。ボットにより、モデレーターの作業負荷が軽減されながら、グループの環境が大幅に改善されました。

効果的なモデレーションとは、自動化されたシステムと人間の監視の間の適切なバランスを見つけることであることを忘れないでください。このボットは防御の第一線を担当しますが、人間のモデレーターに取って代わるのではなく、補完するように設計されています。

リソース

  • Telegram ボット API ドキュメント
  • ノードテレグラムボットAPI
  • Express.js ドキュメント

ご質問がございましたら、お気軽にお問い合わせいただくか、GitHub で完全なコードをチェックしてください!

以上がTelegram 用のスケーラブルなアンチ ヘイト スピーチ モデレーション ボットの構築: 詳細の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。