erfjab / holderbot

Telegram bot for managing the Marzban panel with unique capabilities.
https://t.me/Erfjabs
223 stars 57 forks source link

Notice #45

Closed Elecx-ir closed 6 months ago

Elecx-ir commented 6 months ago

سلام وقتی Notice رو فعال میکنم و یک کاربر منقضی میشه و ادیت میشه بعد از اینکه تمدید کردم مگه نباید به صورت خودکار ادیت بشه و به حالت قبل برگرده ؟

erfjab commented 6 months ago

سلام وقت بخیر، خیر، باید دستی بزنید

Elecx-ir commented 6 months ago

ببخشید من اگه داخل فایل expired.py یک تابع بنویسم که همه کاربرای اکتیو رو چک کنه اگه براشون اینباند های دیگه فعال نبود فعال کنه به نظرتون برای پنل مشکلی پیش میاد؟

erfjab commented 6 months ago

بستگی به کدنویسی‌تون داره، بهتره در فایل جدایی باشه. شما کد هاتون رو نوشتید برام ارسال کنید من حتما بررسی میکنم.

Elecx-ir commented 6 months ago
from pyrogram import *
from Function.db import *
import time

app = Client( 
    "activated",      
    api_id=26410400,
    api_hash="408bf51732560cb81a0e32533b858cbf",
    bot_token=DEF_GET_BOT_TOKEN())

with app :
    while True :
        try :
            BOSS_CHATID , STATUS = DEF_MESSAGER_IMPORT_DATA()
            if STATUS == "on" :
                PANEL_USER, PANEL_PASS, PANEL_DOMAIN = DEF_IMPORT_DATA (BOSS_CHATID)
                PANEL_TOKEN = DEF_PANEL_ACCESS(PANEL_USER, PANEL_PASS, PANEL_DOMAIN)
                URL = f"https://{PANEL_DOMAIN}/api/users?status=active"
                RESPONCE = requests.get(url=URL , headers=PANEL_TOKEN)

                if RESPONCE.status_code == 200 :
                    RESPONCE_DATA = RESPONCE.json()
                    for USER in RESPONCE_DATA["users"] :
                        if not USER["inbounds"] == {'vmess': ['VMess TCP']} : ## One of these existing inbounds
                            USERNAME = USER["username"]
                            URL = f"https://{PANEL_DOMAIN}/api/user/{USERNAME}"
                            DATA = {"proxies": {"vmess": {},"vless": {}},"inbounds": {"vmess": ["VMess TCP"],"vless": ["VLESS + GRPC + REALITY","VLESS-G-RE-speedtest","VLESS GRPC TLS"]}} ## All these existing inbounds
                            RESPONCE = requests.put(url=URL , json=DATA , headers=PANEL_TOKEN)
                            if RESPONCE.status_code == 200 :
                                app.send_message(chat_id=BOSS_CHATID , text=f"<b>✅ Boss! user <code>{USERNAME}</code> is Activated,\nI have set the inbounds.</b>" , parse_mode=enums.ParseMode.HTML)
                            else :
                                app.send_message(chat_id=BOSS_CHATID , text=f"<b>❗ Boss! user <code>{USERNAME}</code> is Activated,\nbut I can't set the inbounds.\n\n<pre>{RESPONCE.text}</pre></b>" , parse_mode=enums.ParseMode.HTML)                                
                        time.sleep(0.5)
                time.sleep(5)
            else :
                time.sleep(60)
        except Exception as e :
            app.send_message(chat_id=BOSS_CHATID , text=f"<b>❌ Activator Error :</b>\n<pre>{str(e)}</pre>" , parse_mode=enums.ParseMode.HTML)
            time.sleep(60)
            pass

من این برنامه نسبت به پنل خودم تغییر دادم ولی هنوز اجراش نکردم برنامه از نظر شما مشکلی نداره؟

میخوام بدونم امکان داره به صورت نصبی به اسکریپت اضافه کنمش ( خودم بلد نیستم ) :)

erfjab commented 6 months ago

بهتر بود در قالب فایل پایتون باشه تا دقیق‌تر بررسی شود.

12 Mar 2024 Sal 13:49 tarihinde Abolfazl @.***> şunu yazdı:

`from pyrogram import from Function.db import import time

app = Client( "activated", api_id=26410400, api_hash="408bf51732560cb81a0e32533b858cbf", bot_token=DEF_GET_BOT_TOKEN())

with app : while True : try : BOSS_CHATID , STATUS = DEF_MESSAGER_IMPORT_DATA() if STATUS == "on" : PANEL_USER, PANEL_PASS, PANEL_DOMAIN = DEF_IMPORT_DATA (BOSS_CHATID) PANEL_TOKEN = DEF_PANEL_ACCESS(PANEL_USER, PANEL_PASS, PANEL_DOMAIN) URL = f"https://{PANEL_DOMAIN}/api/users?status=active" RESPONCE = requests.get(url=URL , headers=PANEL_TOKEN)

        if RESPONCE.status_code == 200 :
            RESPONCE_DATA = RESPONCE.json()
            for USER in RESPONCE_DATA["users"] :
                if not USER["inbounds"] == {'vmess': ['VMess TCP']} : ## One of these existing inbounds
                    USERNAME = USER["username"]
                    URL = f"https://{PANEL_DOMAIN}/api/user/{USERNAME}"
                    DATA = {"proxies": {"vmess": {},"vless": {}},"inbounds": {"vmess": ["VMess TCP"],"vless": ["VLESS + GRPC + REALITY","VLESS-G-RE-speedtest","VLESS GRPC TLS"]}} ## All these existing inbounds
                    RESPONCE = requests.put(url=URL , json=DATA , headers=PANEL_TOKEN)
                    if RESPONCE.status_code == 200 :
                        app.send_message(chat_id=BOSS_CHATID , text=f"<b>✅ Boss! user <code>{USERNAME}</code> is Activated,\nI have set the inbounds.</b>" , parse_mode=enums.ParseMode.HTML)
                    else :
                        app.send_message(chat_id=BOSS_CHATID , text=f"<b>❗ Boss! user <code>{USERNAME}</code> is Activated,\nbut I can't set the inbounds.\n\n<pre>{RESPONCE.text}</pre></b>" , parse_mode=enums.ParseMode.HTML)
                time.sleep(0.5)
        time.sleep(5)
    else :
        time.sleep(60)
except Exception as e :
    app.send_message(chat_id=BOSS_CHATID , text=f"<b>❌ Activator Error :</b>\n<pre>{str(e)}</pre>" , parse_mode=enums.ParseMode.HTML)
    time.sleep(60)
    pass

`

من این برنامه نصبت به پنل خودم تغییر دادم ولی هنوز اجراش نکردم برنامه از نظر شما مشکلی نداره

میخوام بدونم امکان داره به صورت نصبی به اسکریپت اضافه کنمش ( خودم بلد نیستم ) :)

— Reply to this email directly, view it on GitHub https://github.com/erfjab/holderbot/issues/45#issuecomment-1991284728, or unsubscribe https://github.com/notifications/unsubscribe-auth/BCJKIE5INXSB3SOGSGBEZDTYX3JDFAVCNFSM6AAAAABERTAYT2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOJRGI4DINZSHA . You are receiving this because you commented.Message ID: @.***>

Elecx-ir commented 6 months ago

هر چی تلاش کردم نتونستم فایل پایتون ارسال کنم

We don’t support that file type.

Try again with GIF, JPEG, JPG, MOV, MP4, PNG, SVG, WEBM, CPUPROFILE, CSV, DMP, DOCX, FODG, FODP, FODS, FODT, GZ, JSON, JSONC, LOG, MD, ODF, ODG, ODP, ODS, ODT, PATCH, PDF, PPTX, TGZ, TXT, XLS, XLSX or ZIP.

Elecx-ir commented 6 months ago
if ps aux | grep -v grep | grep "python3 activated.py" &> /dev/null; then
    echo "Stopping existing Activated process..."
    pkill -f "python3 activated.py"
fi

chmod +x activated.py

nohup python3 activated.py & disown

این کد هارو به فایل /holderbot.sh اضافه کنم و اسکریپت رو دوباره اجرا کنم اوکی میشه؟

یا دستوراتی برای پاک کردن باید بزنم بعد اسکریپت رو اجرا کنم؟

erfjab commented 6 months ago

خب تو کد چیز خاصی ندیدم باعث ارور شود، پروژه رو فورک کنید تست کنید، نگران نباشید مشکل خوردید خودم کامیت میزنم براتون حل شه.

Elecx-ir commented 6 months ago
if ps aux | grep -v grep | grep "python3 activated.py" &> /dev/null; then
    echo "Stopping existing Activated process..."
    pkill -f "python3 activated.py"
fi

chmod +x activated.py

nohup python3 activated.py & disown

این کد هارو به فایل /holderbot.sh اضافه کنم و اسکریپت رو دوباره اجرا کنم اوکی میشه؟

یا دستوراتی برای پاک کردن باید بزنم بعد اسکریپت رو اجرا کنم؟

همین کارو بکنم اوکی میشه ؟

erfjab commented 6 months ago

آره عزیز

Elecx-ir commented 6 months ago
cd && cd .. && rm -f holderbot.sh* || true && sudo apt install && sudo apt-get install libjpeg-dev && wget https://raw.githubusercontent.com/Elecx-ir/holderbot/main/holderbot.sh && chmod +x holderbot.sh && ./holderbot.sh

https://raw.githubusercontent.com/Elecx-ir/holderbot/main/holderbot.sh

https://raw.githubusercontent.com/Elecx-ir/holderbot/main/activated.py

مشکل این چیه وقتی روی سرور اجرا میکنم فایل ها جدید نمیاد ولی وقتی لینک رو باز میکنم تغییرات انجام شده و فایل هست

erfjab commented 6 months ago

داخل فایل holderbot.sh اون قسمتی که پروژه clone میشه، به اسم خودتون تغییر بدید. آموزشش : https://t.me/ErfjabHolderbot/84

Elecx-ir commented 6 months ago

شت حاجی همه یوزرام رو uuid هاشون رو عوض کرد همه قطع شدن.

Elecx-ir commented 6 months ago

شرط if not USER["inbounds"] == {'vmess': ['VMess TCP']} : همیشه برقرار بوده :|

Elecx-ir commented 6 months ago
if not USER["inbounds"] == {"vmess": ["VMess TCP"],"vless": ["VLESS + GRPC + REALITY","VLESS-G-RE-speedtest","VLESS GRPC TLS"]} :

این به نظرت درسته دیگه ؟

erfjab commented 6 months ago

بستگی به اینباند شما داره عزیز، اگر اینباند هاتون به این شکلن بله درسته

Elecx-ir commented 6 months ago

داداش دمت گرم کارت درسته

فقط اگه time.sleep(0.5) رو کمتر کنم مشکلی پیش میاد؟ چون تا بیاد بین هر یوزر 0.5 ثانیه صبر کنه خیلی طول میکشه تا برسه به یوزر اخر

erfjab commented 6 months ago

خواهش میکنم، بهتره مکث باشه، مشکل میشه اگه نباشه

Elecx-ir commented 6 months ago

IMG_20240312_164022

عالی شده

I can't find user.

این ارور برای چیه کارو انجام میده ولی این ارور هم میده

erfjab commented 6 months ago

اون به خاطر اینه که پیام set the messages رو به اینباند تغییر دادی، بهتره همون مسیج بزاری.

Elecx-ir commented 6 months ago
 if MESSAGE_TEXT == "🧨" or ("boss of one") in MESSAGE_TEXT or "set the messages." in MESSAGE_TEXT or "set the inbounds." in MESSAGE_TEXT :

خط 111 فایل holder.py درسته ؟
ممنون

erfjab commented 6 months ago

عالی داداش، فکر نمیکردم پیدا کنی واسه همین گفتم اینباند رو مسیج کن، کارت درسته، پرانتز های شرط دو (boss of one) رو هم حذف کن. داداش خوشحال میشم باهام از تلگرامم در ارتباط باشی : @Erfjab

Elecx-ir commented 6 months ago

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

erfjab commented 6 months ago

تو خودت استادی داداش ❤️