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 中国語 Web サイトの他の関連記事を参照してください。