# Memes Bot ربات شخصی تلگرام برای ذخیره و جستجوی میم (عکس، گیف، ویدیو، صدا، موزیک، استیکر، فایل) با کلیدواژه. [English](README.md) --- ### پیش‌نیازها - یک سرور با [Docker](https://docs.docker.com/engine/install/) نصب‌شده - توکن ربات تلگرام از [@BotFather](https://t.me/BotFather) ### راه‌اندازی **۱. ساخت ربات در BotFather** - `/newbot` ← توکن بگیرید - `/setinline` ← حالت اینلاین را فعال کنید (مثلاً: `جستجوی میم...`) **۲. پیدا کردن شناسه تلگرام** برای وایت‌لیست کردن خودتان به ID عددی نیاز دارید. - **ساده‌ترین روش:** یک پیام به [@userinfobot](https://t.me/userinfobot) فوروارد کنید — شناسه شما را برمی‌گرداند - **روش دیگر:** تلگرام وب را باز کنید، روی پروفایل کلیک کنید، عدد داخل URL شناسه شماست - **برای چند کاربر:** ID هر نفر را با کاما جدا کنید **۳. کلون و تنظیم** ```bash git clone https://git.goyban.com/goyban/memes_bot cd memes_bot cp .env.example .env ``` فایل `.env` را ویرایش کنید: ```env BOT_TOKEN=توکن_ربات_شما ALLOWED_USERS=123456789,987654321 ``` **۴. اجرا** ```bash docker compose up -d --build ``` دیتابیس در مسیر `./bot_db/media.db` ذخیره می‌شود. ### نحوه استفاده **افزودن میم** — یک عکس، گیف، ویدیو، صدا، موزیک، استیکر یا هر فایلی برای ربات بفرستید. ربات از شما کلیدواژه می‌خواهد. کلیدواژه‌ها را یکی‌یکی یا با کاما جدا بفرستید، سپس `/done` بزنید. **جستجوی اینلاین** — در هر چتی بنویسید `@نام_ربات کلیدواژه` تا نتایج نمایش داده شود. **دستورات** | دستور | توضیح | |---|---| | `/list` | نمایش همه رسانه‌های ذخیره‌شده | | `/review` | بررسی یک‌به‌یک ارسال‌های در انتظار تأیید (فقط ادمین) | | `/delete ` | حذف یک مورد (ID را از `/list` بگیرید) | | `/cancel` | لغو عملیات جاری | ### پذیرش ارسال کاربران اگر در فایل `.env` مقدار `ACCEPT_SUBMISSIONS=true` را تنظیم کنید، کاربران غیرادمین هم می‌توانند رسانه بفرستند. این موارد ذخیره می‌شوند اما تا وقتی یک ناظر تأییدشان نکند در جستجوی inline و `/list` دیده نمی‌شوند. رسانه‌ای که خود ادمین‌ها می‌فرستند مثل قبل مستقیم ذخیره می‌شود. با دستور `/review` می‌توانید صف را بررسی کنید. هر مورد همراه با کلیدواژه‌هایش و چهار دکمه نمایش داده می‌شود: تأیید، رد، اصلاح کلیدواژه‌ها، و توقف. صف هیچ نشانگری ذخیره نمی‌کند و `/review` همیشه قدیمی‌ترین مورد در انتظار را می‌آورد. برای همین می‌توانید بعد از چند مورد متوقف شوید و فردا ادامه دهید، و چند ناظر هم می‌توانند هم‌زمان کار کنند — اگر دو نفر یک مورد را باز کنند، تصمیم اولی ثبت می‌شود و به دومی گفته می‌شود که قبلاً بررسی شده است. > **تا وقتی مطمئن نیستید این گزینه را خاموش بگذارید.** وقتی `ALLOWED_USERS` خالی باشد همه کاربرِ مجاز حساب می‌شوند، پس روشن‌کردن این گزینه یعنی پذیرفتن رسانه از هر کسی که ربات را پیدا کند. ### انتقال به سرور دیگر فقط کافی است این دو فایل را منتقل کنید: - `.env` - `bot_db/media.db`