مدیریت گروهها و سوپرگروههای تلگرامی از طریق ربات

مدیریت یک گروه خانوادگی یا دوستانه با حداکثر 20 تا نهایت 100 عضو کار خیلی راحت و بدون دردسری هستش و خیال افراد بابت جنگ و دعوای بین اعضا و یا ارسال موارد پورنوگرافی و کلمات رکیک تقریبا آسوده هستش.

اما در مقابل مدیریت گروههای مختلف در زمینه های مختلف اعم از حاشیه ها و کل کل های فوتبالی، گروههای گیمینگ، گروههای درخواست موزیک و ... که حالا به لطف تلگرام تا 100 هزار نفر هم میشه عضو گرفت چی؟ آیا اینها هم به همین سادگی میشه مدیریت کرد و با افراد خاطی که قوانین گروه رو نادیده میگیرن و یا فحاشی میکنن راحت برخورد کرد؟ علی الخصوص مواقعی که حجم پیغامهای ارسالی بالاست و عملا بررسی و چک کردن تعداد زیاد پیامها حتی با اضافه کردن ادمینهای جدید هم سخت و دشوار خواهد بود.

توی آموزش پیش رو میخوام کلیات این رو آموزش بدم که چطور یک ربات میتونه افراد خاطی رو با توجه به قوانینی که بعدا خودتون اضافه میکنید بَن (کیک -Kick)، محدود (Restrict) و یا در صورتی که عضو مفیدی هست به ادمینی ارتقاء بده.

دقت کنید که توی این آموزش من نحوه بن کردن، آنبن، محدود و ادمین کردن رو میگم و نه اینکه چطور تشخیص بدید چه کسی از قوانین تخطی کرده و یا مثلا فحش ارسال کرده. این موارد رو باید برنامه نویس انجام بده و هدف آموزش فعلی یادگیری API رباتهای تلگرامیه.

آموزش زیر ممکنه برای افراد مبتدی، کم تجربه و اونهایی که با برنامه نویسی آشنا نیستن مقداری سنگین بنظر برسه.

شروع آموزش

بن کردن افراد

برای بن کردن (کیک) یک فرد متخلف از نظر شما، و باتوجه به قوانین وضع شده در گروه، کافیه از متد kickChatMember به شکل زیر استفاده بکنید:

$content = ['chat_id' => $chat_id, 'user_id' => $user_id];
$telegram->kickChatMember($content);

بن کردن میتونه اتوماتیک یا دستی باشه. دستی یعنی مثلا زیر پیام هر فردی که دستور فرضی kick_user رو ریپلای کردید فرد کیک بشه؛ اتوماتیک هم میتونه مثلا بر اساس شمردن تعداد فحش یک کاربر و ذخیره ی اون توی دیتابیس باشه و اگر شخصی در روز بیشتر از 10 بار از الفاظ رکیک استفاده کرد اون رو به مدت ربع ساعت بن کنید.

به جز پارامترهای chat_id و user_id متود kickChatMember یک پارامتر اختیاری دیگه هم داره با عنوان until_date .

پارامتر until_date یک عدد از نوع اینتیجر(integer) با فرمت یونیکس تایم میگیره که میتونه بین 31 ثانیه و 366 روز باشه و اگر از این مقادیر کمتر و یا بیشتر باشه کاربر بن دائمی خواهد شد.

آنبن کردن اعضای گروه

آنبن کردن یا همون آزاد کردن اعضا دقیقا کار مخالف با بن کردنه. و باید توجه داشته باشید که برای استفاده از این متد، قطعا باید قبلش به طریقی اطلاعات فرد یا افرادی که بن شده رو جایی ذخیره کرده باشید تا اینجا بتونید اونها رو بوسیله چت آیدی از بن خارج کنید (حالا یا با استفاده از فایل متنی و یا دیتابیس).

طرز استفاده از دستور unbanChatMember دقیقا مشابه با بن کردن و به شکل زیر هستش:

$content = ['chat_id' => $chat_id, 'user_id' => $user_id];
$telegram->unbanChatMember($content);
  • چت ایدی و یوزر آیدی فرد رو بهش میدید و اون رو از بن خارج میکنه.

محدودیت اعضا با ربات

محدودیت همون بن کردن ولی به شکل لطیف تره! به وسیله محدودیت میتونیم فرد یا افراد رو از یکسری کارها به مدت زمانی خاص یا دائمی محروم کنیم. مثلا میتونیم قانون بذاریم و فردی که پشت سر هم و از تعدادی مشخص در روز گیف ارسال میکنه رو به مدت 2 ساعت از ارسال مدیا محروم کنیم. کارهایی که میشه به وسیله متود restrictChatMember انجام داد شامل موارد زیر هستش:

  • محدودیت ارسال متن (ارسال متن، مخاطب، لوکیشن و رویدادها در گروه) با کلمه کلیدی can_send_messages
  • محدودیت ارسال محتوای چند رسانه ای (ارسال فایلهای صوتی، تصویری، ویدئو مسیج و وویس) با کلمه کلیدی can_send_media_messages
  • محدودیت ارسال موارد دیگر (ارسال گیف، استیکر، استفاده از رباتهای اینلاین) با کلمه کلیدی can_send_other_messages
  • محدودیت ارسال وب پیج (محدودیت در ارسال و اشتراک گذاری لینکها) با کلمه کلیدی can_add_web_page_previews
مانند دستور بن کردن، پارامتر until_date اینجا هم به همین شکل عمل خواهد کرد
پارامترهای can_send_messages، can_send_media_messages ، can_send_other_messages ، can_add_web_page_previews و استفاده از until_date همگی اختیاری و ارسالشان اجباری نمی باشد و در صورتی که هیچکدوم از پارامترها ارسال نشه این متد هم مثل متد بَن کردن kickChatMember عمل خواهد کرد.
  • نمونه کد محدود کردن فرد به مدت 7 دقیقه که فقط میتونه متن توی گروه ارسال کنه:
$content = ['chat_id' => $chat_id, 'user_id' => $user_id, 'until_date' => '1523816940', 'can_send_messages' => TRUE];
$telegram->restrictChatMember($content);

نکته آخر در مورد متود restrictChatMember اینه که موقع محدود کردن باید کارایی که یوزر میتونه انجام بده رو مشخص کنیم و کلمات کلیدی رو به عنوان پارامتر اضافه و مقدار TRUE بدیم. مثلا کد بالا من با استفاده از پارامتر و کلیدواژه can_send_messages مشخص کردم که یوزر فقط میتونه متن ارسال کنه و بقیه دسترسی ها مثل ارسال گیف، ویدئو و ... اتوماتیک ازش گرفته میشه.

ادمین کردن کاربرها (اضافه و حذف دسترسی)

برای ادمین کردن کاربرهای مورد نظر، مثلا افراد فعال در گروه (فرض میکنیم فعالیت کاربرها رو ثبت میکنید دائم و هرکس بیش از 10 هزار امتیاز بگیره میتونه ادمین بشه اتوماتیک) از متود promoteChatMember باید استفاده کرد.

طرز کارش شبیه به متد محدودیت هستش و پارامترهاش به این شکله:

  • اجازه ویرایش اطلاعات گروه و یا کانال (در صورتی ادمین کانال کرده باشید) - can_change_info
  • اجازه ارسال محتوا در کانال (در صورتی که ادمین کانال کرده باشید) - can_post_messages
  • اجازه ویرایش مطالب ارسالی دیگر ادمینها در کانال - can_edit_messages
  • اجازه حذف محتوای کاربرها در گروه و کانال - can_delete_messages
  • اجازه اضافه کردن یوزر به کانال یا گروه - can_invite_users
  • اجازه محدود کردن (بن و آنبن) - can_restrict_members
  • اجازه پین کردن (سنجاق) محتوا در گروه و یا کانال - can_pin_messages
  • اجازه اضافه کردن ادمین جدید به گروه یا کانال - can_promote_members
نمونه کد زیر یک یوزر رو ادمین میکنه و بهش اجازه حذف محتوا، پین کردن محتوا و ارسال مطلب رو اعطا میکنه:
$content = ['chat_id' => $chat_id, 'user_id' => $user_id, 'can_change_info' => TRUE, 'can_post_messages ' => TRUE, 'can_delete_messages' => TRUE];
$telegram->restrictChatMember($content);

برای گرفتن ادمینی از یک یوزر خاص کافیه متود رو بدون هیچ پارامتر اضافه ای و فقط با مشخص کردن چت آیدی و یوزر آیدی صدا بزنید. نمونه:

$content = ['chat_id' => $chat_id, 'user_id' => $user_id];
$telegram->restrictChatMember($content);




آموزش بالا با توجه به جدیدترین نسخه مستندات موجود در وبسایت رسمی تلگرام برای رباتها تا این لحظه نوشته شده و هیچ مشابه و نمونه فارسی برای این آموزش تا کنون وجود ندارد.

انتشار و کپی برداری از این مطلب با ذکر منبع کاملا مجاز خواهد بود.
نمونه کدها و آموزشهای بیشتر در کانال تلگرامی