Skip to content

Silent-Galaxy/telegram-terms-bot

Repository files navigation

if u like please give star... SilentGalaxy :) #telegram-terms-bot images 🖤

image image image image image image

telegram-terms-bot

https://t.me/addmember_menu_0_bot 🤖 ربات تلگرام: مدیریت قوانین و زبان پیشرفته 🌟 مقدمه این پروژه یک ربات تلگرام پیشرفته است که به طور خاص برای مدیریت تعامل اولیه کاربران با سیستم شما طراحی شده است. تمرکز اصلی آن بر پذیرش قوانین و حریم خصوصی و مدیریت چندزبانه است. هدف نهایی، ایجاد یک تجربه کاربری روان و شفاف است که در آن کاربران به طور کامل از شرایط استفاده مطلع شده و به راحتی زبان مورد نظر خود را انتخاب کنند، قبل از اینکه به ربات اصلی شما هدایت شوند. این ربات یک دروازه هوشمند است که احترام به حریم خصوصی و رضایت کاربر را در اولویت قرار می‌دهد.

✨ ویژگی‌های برجسته سیستم جامع پذیرش قوانین:

فرآیند گام به گام برای مطالعه و پذیرش قوانین و مقررات.

ذخیره تاریخ و زمان دقیق پذیرش قوانین در پایگاه داده.

امکان بازبینی مجدد قوانین پذیرفته شده در هر زمان.

پشتیبانی چندزبانه پویا:

قابلیت انتخاب و تغییر زبان ربات توسط کاربر.

پشتیبانی آسان از اضافه کردن زبان‌های جدید از طریق یک فایل JSON مرکزی.

مدیریت هوشمند پیام:

پاکسازی خودکار پیام‌های نامربوط کاربر برای حفظ نظم چت.

اطمینان از نمایش صحیح و پایدار منوها با ویرایش پیام‌های موجود به جای ارسال پیام‌های تکراری.

یکپارچه‌سازی با ربات اصلی:

هدایت یکپارچه و آسان کاربران به ربات اصلی شما پس از تکمیل فرآیند پذیرش.

ذخیره‌سازی وضعیت کاربر:

حفظ وضعیت هر کاربر (زبان انتخابی، وضعیت پذیرش قوانین، آخرین پیام ربات) در یک پایگاه داده MySQL.

پیکربندی آسان:

استفاده از متغیرهای محیطی برای پیکربندی امن و آسان توکن ربات و اطلاعات پایگاه داده.

لاگ‌برداری پیشرفته برای اشکال‌زدایی و نظارت بر عملکرد ربات.

⚙️ پیش‌نیازها برای راه‌اندازی و اجرای موفقیت‌آمیز این ربات، موارد زیر ضروری هستند:

وب سرور:

Apache HTTP Server (با ماژول mod_rewrite و پشتیبانی از فایل .htaccess فعال باشد).

Nginx (با پیکربندی مناسب برای fastcgi_pass به PHP-FPM و rewrite rule ها).

PHP:

PHP 7.4 یا بالاتر.

افزونه php-curl (برای ارتباط با API تلگرام) نصب و فعال باشد.

افزونه php-mysqli (برای اتصال به MySQL) نصب و فعال باشد.

پایگاه داده:

MySQL یا MariaDB (نسخه 5.7 یا بالاتر توصیه می‌شود).

داشتن یک کاربر پایگاه داده با دسترسی‌های لازم برای ایجاد و مدیریت جداول.

ربات تلگرام:

یک توکن ربات تلگرام معتبر که از @BotFather دریافت کرده‌اید.

دامنه/هاست:

یک دامنه معتبر با گواهی SSL فعال (HTTPS). وب‌هوک‌های تلگرام تنها روی اتصالات امن کار می‌کنند.

دسترسی FTP/SFTP یا SSH برای آپلود و مدیریت فایل‌ها.

🚀 راه‌اندازی و استقرار (Deployment) این راهنما شما را در مراحل نصب و پیکربندی ربات روی سرور خود راهنمایی می‌کند.

۱. بارگذاری فایل‌های پروژه تمام فایل‌های اصلی ربات (webhook.php, db.php, lang.php, languages.json, .htaccess) را به ریشه دایرکتوری وب‌سایت (مثلاً public_html یا www) در سرور خود آپلود کنید.

۲. تنظیم پایگاه داده MySQL ایجاد پایگاه داده: وارد پنل مدیریت پایگاه داده خود (مانند phpMyAdmin یا ابزارهای مدیریت دیتابیس هاستینگ) شوید و یک پایگاه داده جدید ایجاد کنید. نامی مناسب برای آن انتخاب کنید (مثلاً telegram_bot_db).

ایجاد جدول users: پس از ایجاد پایگاه داده، کد SQL زیر را اجرا کنید تا جدول مورد نیاز ربات ایجاد شود. این جدول برای ذخیره اطلاعات کاربران و وضعیت قوانین آن‌ها استفاده می‌شود.

CREATE DATABASE IF NOT EXISTS telegram_bot_db CHARACTER SET utf8mb4 COLLATE utf8mb4_persian_ci; -- اطمینان از پشتیبانی کامل فارسی

USE telegram_bot_db;

CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, telegram_user_id BIGINT UNIQUE NOT NULL, language_code VARCHAR(10) DEFAULT 'en' NOT NULL, terms_status ENUM('initial', 'read_rules', 'accepted') DEFAULT 'initial' NOT NULL, accepted_at DATETIME NULL, last_bot_message_id INT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_persian_ci;

توضیحات فیلدها:

telegram_user_id: شناسه منحصر به فرد کاربر تلگرام.

language_code: کد زبان انتخابی کاربر (مانند en, fa).

terms_status: وضعیت پذیرش قوانین (initial, read_rules, accepted).

accepted_at: تاریخ و زمان پذیرش قوانین.

last_bot_message_id: شناسه آخرین پیام ربات در چت کاربر (برای ویرایش/حذف).

۳. پیکربندی متغیرهای محیطی (.htaccess) فایل .htaccess در ریشه دایرکتوری وب‌سایت شما، مسئول تنظیم متغیرهای محیطی حیاتی ربات و قوانین دسترسی به فایل‌ها است. این فایل را با یک ویرایشگر متن باز کرده و مقادیر داخل " را با اطلاعات واقعی خود جایگزین کنید:

BOT_TOKEN: توکن ربات تلگرام که از BotFather دریافت کرده‌اید.

DB_HOST: هاست پایگاه داده شما (معمولاً localhost).

DB_USER: نام کاربری پایگاه داده شما.

DB_PASS: رمز عبور پایگاه داده شما.

DB_NAME: نام پایگاه داده‌ای که در مرحله ۲ ایجاد کردید.

NEXT_BOT_LINK: لینک کامل به ربات اصلی/بعدی شما (مثلاً https://t.me/YourMainBotUsername). این لینک پس از پذیرش قوانین به کاربر نمایش داده می‌شود.

.htaccess

تنظیم متغیرهای محیطی برای PHP

SetEnv BOT_TOKEN "YOUR_TELEGRAM_BOT_TOKEN_HERE" SetEnv DB_HOST "your_database_host_here" SetEnv DB_USER "your_database_username_here" SetEnv DB_PASS "your_database_password_here" SetEnv DB_NAME "your_database_name_here" SetEnv NEXT_BOT_LINK "https://t.me/YourMainBotUsername"

جلوگیری از دسترسی مستقیم به فایل‌های PHP و JSON

<FilesMatch ".(php|json)$"> Require all denied

اجازه دسترسی به webhook.php را می‌دهد (نقطه ورودی اصلی ربات)

Require all granted

می‌توانید برای URLهای تمیزتر، قوانین Rewrite را فعال کنید (اختیاری)

RewriteEngine On

RewriteRule ^(.*)$ webhook.php [L]

نکته امنیتی: استفاده از .htaccess برای متغیرهای محیطی روشی امن است. اگر سرور شما Apache نیست یا .htaccess پشتیبانی نمی‌شود، ممکن است نیاز به تعریف این متغیرها در فایل پیکربندی سرور (مانند nginx.conf) یا مستقیماً در کد PHP (که کمتر توصیه می‌شود) داشته باشید.

۴. تنظیم وب‌هوک تلگرام برای اینکه تلگرام به‌روزرسانی‌ها را به ربات شما ارسال کند، باید یک وب‌هوک تنظیم کنید. آدرس وب‌هوک شما باید به شکل https://yourdomain.com/webhook.php باشد.

می‌توانید این کار را با باز کردن آدرس زیر در مرورگر خود یا از طریق ابزارهای curl انجام دهید:

https://api.telegram.org/bot<YOUR_BOT_TOKEN>/setWebhook?url=https://yourdomain.com/webhook.php

مثال: https://api.telegram.org/bot1234567890:ABC-DEF1234ghIkl-799-j-kL/setWebhook?url=https://mybot.com/webhook.php

در صورت موفقیت‌آمیز بودن، پاسخ {"ok":true,"result":true,"description":"Webhook was set"} را دریافت خواهید کرد.

۵. تنظیمات زبان‌ها (languages.json) فایل languages.json شامل تمام ترجمه‌های متون ربات است. می‌توانید ترجمه‌های موجود را ویرایش کنید یا زبان‌های جدیدی اضافه نمایید. ساختار JSON باید رعایت شود:

{ "en": { "welcome_message": "متن خوش‌آمدگویی انگلیسی...", "button_accept_rules": "متن دکمه قبول قوانین انگلیسی", "button_change_language": "متن دکمه تغییر زبان انگلیسی", "button_back_to_accepted_menu": "متن دکمه بازگشت انگلیسی", "rules_accepted_message": "متن قوانین پذیرفته شده انگلیسی...", "proceed_message": "متن ادامه به ربات اصلی انگلیسی...", "button_proceed_to_next_bot": "متن دکمه ورود به ربات اصلی انگلیسی", "button_review_accepted_rules": "متن دکمه بازبینی قوانین انگلیسی", "error_not_accepted": "متن خطای عدم پذیرش انگلیسی", "status_initial": "وضعیت اولیه انگلیسی", "status_read_rules": "وضعیت قوانین خوانده شده انگلیسی", "status_accepted": "وضعیت قوانین پذیرفته شده انگلیسی", "message_deleted": "پیام حذف شده انگلیسی", "select_language_prompt": "پیام انتخاب زبان انگلیسی", "language_changed": "پیام تغییر زبان انگلیسی" }, "fa": { "welcome_message": "متن خوش‌آمدگویی فارسی...", "button_accept_rules": "متن دکمه قبول قوانین فارسی", "button_change_language": "متن دکمه تغییر زبان فارسی", "button_back_to_accepted_menu": "⬅️ بازگشت به منوی قوانین پذیرفته شده", "rules_accepted_message": "متن قوانین پذیرفته شده فارسی...", "proceed_message": "متن ادامه به ربات اصلی فارسی...", "button_proceed_to_next_bot": "متن دکمه ورود به ربات اصلی فارسی", "button_review_accepted_rules": "متن دکمه بازبینی قوانین فارسی", "error_not_accepted": "متن خطای عدم پذیرش فارسی", "status_initial": "وضعیت اولیه فارسی", "status_read_rules": "وضعیت قوانین خوانده شده فارسی", "status_accepted": "وضعیت قوانین پذیرفته شده فارسی", "message_deleted": "پیام حذف شده فارسی", "select_language_prompt": "پیام انتخاب زبان فارسی", "language_changed": "پیام تغییر زبان فارسی" } // می‌توانید زبان‌های دیگر را به همین ترتیب اضافه کنید. }

🕹️ نحوه استفاده (تعامل با ربات) ربات به گونه‌ای طراحی شده است که تعامل با آن از طریق دکمه‌های اینلاین و فرمان‌های ساده انجام شود:

/start:

این فرمان، ربات را آغاز کرده و پیام خوش‌آمدگویی، راهنمای جامعه و دکمه‌های اولیه (پذیرش قوانین، تغییر زبان) را نمایش می‌دهد.

✅ قبول و درک قوانین:

با کلیک بر روی این دکمه، کاربر با قوانین موافقت کرده و به منوی نهایی "قوانین پذیرفته شده" (همراه با تاریخ و زمان پذیرش) هدایت می‌شود.

🌐 تغییر زبان:

با کلیک بر روی این دکمه، منوی انتخاب زبان‌های پشتیبانی شده نمایش داده می‌شود.

پس از انتخاب زبان جدید، ربات به زبان انتخابی به‌روزرسانی شده و به منوی مربوطه باز می‌گردد (منوی قوانین در صورت عدم پذیرش، یا منوی نهایی در صورت پذیرش).

📖 بازبینی قوانین پذیرفته شده:

این دکمه (که در منوی نهایی قرار دارد) کاربر را به صفحه قوانین بازمی‌گرداند تا آن‌ها را مجدداً مطالعه کند.

⬅️ بازگشت به منوی قوانین پذیرفته شده:

این دکمه (که در منوی قوانین پس از بازبینی قرار دارد) کاربر را به منوی نهایی "قوانین پذیرفته شده" بازمی‌گرداند.

➡️ ورود به ربات اصلی:

این دکمه (در منوی نهایی) کاربر را به لینک تعیین شده برای ربات اصلی شما هدایت می‌کند.

پیام‌های متنی دیگر:

هر پیام متنی غیرمرتبط که کاربر ارسال کند (به جز /start)، برای حفظ وضوح چت حذف خواهد شد.

📂 ساختار پروژه پروژه از یک ساختار ماژولار و سازمان‌یافته پیروی می‌کند تا نگهداری و توسعه آن آسان باشد:

. ├── webhook.php # نقطه ورودی اصلی ربات؛ دریافت و پردازش به‌روزرسانی‌ها از تلگرام. ├── db.php # شامل توابع مدیریت پایگاه داده (اتصال، خواندن، نوشتن، به‌روزرسانی کاربران). ├── lang.php # سیستم مدیریت چندزبانه؛ توابع بارگذاری و بازیابی ترجمه‌ها. ├── languages.json # فایل پیکربندی JSON حاوی تمام رشته‌های ترجمه شده برای زبان‌های مختلف. └── .htaccess # فایل پیکربندی سرور Apache؛ تنظیم متغیرهای محیطی و قوانین دسترسی/بازنویسی URL.

🤝 مشارکت (Contributing) مشارکت شما در بهبود این پروژه بسیار ارزشمند است! اگر ایده‌ای برای ویژگی جدید، بهبود کد، یا رفع باگ دارید، لطفاً:

Fork این ریپازیتوری را از گیت‌هاب.

یک Branch جدید برای ویژگی/رفع مشکل خود ایجاد کنید: git checkout -b feature/your-feature-name یا bugfix/your-bug-name.

تغییرات خود را اعمال کرده و آن‌ها را Commit کنید.

Push تغییرات خود را به Branch جدید.

یک Pull Request (PR) به ریپازیتوری اصلی ایجاد کنید.

لطفاً توضیحات کامل و واضحی برای PR خود ارائه دهید.

📄 لایسنس (License) این پروژه تحت لایسنس MIT منتشر شده است.

💖 تشکر و قدردانی (Acknowledgements) از شما برای استفاده و حمایت از این پروژه سپاسگزاریم! اگر این ربات برای شما مفید بوده است، لطفا پروژه را ستاره (Star) دهید و آن را به دیگران معرفی کنید.

Releases

No releases published

Packages

 
 
 

Contributors

Languages