و صد البته اینم لینک ناشناس ما اگر خواستید سورس رو ناشناس ارسال بکنید یا اینکه ریپورت بودید :
https://t.me/BiChatBot?start=sc-774a47dc71
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍4🔥2🆒2❤1 1
index.php
7.8 KB
علنا type hint های آرگومان های توابع رو قورت دادن !
و هیچ اعتقادی هم به استفاده از یک تابع برای هندل کردن خطا ها و ارسال راحت درخواست ها انجام ندادن !
و درخواست های GET که ایشون درست کردن برای استفاده از API HTTP تلگرام شامل محدودیت هایی میشه که اونا هم در نظر گرفته نشده ! حداقل باید از POST کردن دیتا استفاده میکردند
هیچ کنترل مدیریت خطایی از سمت API ایمیلی که استفاده کردند انجام ندادن
و هیچ دقتی به این موضوع نکردن که سرور یه حد کشش i/o داره و اگر قرار باشه تعداد کاربران زیادی ازش استفاده بکنند علنا دیتا ها از یه جایی به بعد به فنا میره توی مسیر انتقال بهتر بود از File Asynchronously استفاده بکنند که i/o هاست های اشتراکی پر نشن مثلاً !
ولی درکل سورس ساده ای بود حرف دیگه ای ندارم
Please open Telegram to view this post
VIEW IN TELEGRAM
بابا دم این دوستمون گرم که هیچ اعتقادی به استفاده از حلقه هایی همچون for نداره
حالا لعنتی چرا هرچی اومده دم دستت رو ایمپورت all کردی !! اینطوری باعث میشی اسکریپتت چیزای الکی و بیخود هم لود بکنه
اسم گذاری های متغیر هاش کاملا غیر اصولی هست و هرچی دلش خواسته گذاشته بنظرم
آخ آخ رایج ترین اشتباه همین هست که ایشون موقع ارسال درخواست های همزمان اومده وسط توابع Asynchronously خودش از Thread استفاده کرده !! این دو تا کاملا در جنگ با هم هستن !! بهتر بود از کتابخانه های async استفاده بکنه برای خیلی چیزا مثلاً بجای requests از aiohttp میشد استفاده کرد
من که این قسمت رو نفهمیدم چی چی شد 🤣 شما فهمیدین بگید :
app.run(print ('self is run...'))انصافاً من حال کردم که انقدر متغیر cr رو تعریف کرده برای معرفی خودش نویسنده سورس
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
سورس کده | Source kade
سورس سلف | self | سلف پایتون | ربات مدیریت اکانت تلگرامی
➖➖➖➖
✔ بدون باگ
➖➖➖➖
✔ تست شده
➖➖➖➖
✔ قابلیت ست کردن انمی و سکوت
➖➖➖➖
✔ قابلیت دانلود عکس تایمردار
➖➖➖➖
✔ قابلیت ارسال اس ام اس بمبر
➖➖➖➖
✔ قابلیت ساعت در بیو با دو فونت مختلف
➖➖➖➖
✔ دارای ویژگی…
➖➖➖➖
✔ بدون باگ
➖➖➖➖
✔ تست شده
➖➖➖➖
✔ قابلیت ست کردن انمی و سکوت
➖➖➖➖
✔ قابلیت دانلود عکس تایمردار
➖➖➖➖
✔ قابلیت ارسال اس ام اس بمبر
➖➖➖➖
✔ قابلیت ساعت در بیو با دو فونت مختلف
➖➖➖➖
✔ دارای ویژگی…
خب ایشون داخل لاین 39 اومدن از کد زیر استفاده کردن :) خب متاسفانه باید یکی به ارقام آخر استفاده میکردند چون وقتی از range استفاده میکنید از range(1,10) یعنی از عدد ۱ تا خود عدد ۹ ! پس ۱۰ رو شامل نمیشه و پورت ها هم از ۱ شروع میشن ( غیر نرمالش ) تا 65535 پس پورت آخر رو بررسی نمیکنی ! و درست شده کد :
for port in range(1,65535 + 1)و اینکه داش ! اینجا آخر سورست هست دیگه تموم شده چرا پس تو تابع اسکن اومدی از sys.exit استفاده کردی ؟
چه حیف که از ipv6 پشتیبانی نمیکنی
ماشاالله از exceptions ها هم فقط ValueError رو میشناسن و کاری به بقیه اشون ندارن
و خب در آخر اینکه از ماژول whois مناسبی باید بگم که استفاده نکردن چون نواقصی دارند و میتونه به پروژه آسیب هایی رو بزنه
و در کل کارات رو خیلی طولانی کردی میتونستی از تردینگ استفاده بکنی که همزمان همه پورت ها رو بررسی بکنی نه اینکه تک تک !
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - Amirprx3/IP-TOOLS: IP-TOOLS is a simple command-line toolset for network operations, including IP address lookup, port…
IP-TOOLS is a simple command-line toolset for network operations, including IP address lookup, port scanning, and WHOIS lookup. It is written in Python and designed for users who need basic tools f...
👍3 2🔥1
اول چیزی که دیدم این بود که ایشون ایندنت ها رو رعایت نکرده و بعضاً جاهایی دیده میشه که حتی از ۱ دونه وایت اسپیس استفاده شده حتی ! ( مثل خط self.py:49 ) بعضی از IDle ها به این چیزا گیر میدن موقع اجرا و همچنین زیادی تمیز ننوشتن
IndentationError: unindent does not match any outer indentation levelو خب بعضی جا ها دیده میشه که از یک تابع مکرراً صدا زده شده مثل
get_me در لاین های self.py:438 و self.py:451 و خب یکم غیر منطقی هست که بخاطر هر آپدیت جدید بخاید یوزر آیدی سلف رو اینطوری دریافت بکنید def gpt(text):
false=False
true=True
null=None
و خب یه جای سم دیگه اینکه وقتی میشد اطلاعات رو از تابع اولت یا دومت گرفت چرا دو بار درخواست های مشابه فرستادی
Amo_Anon = await slf.get_me()
g = await slf(functions.users.GetFullUserRequest("me"))
داش قربونت بشم شما تابع query رو تعریف کردی به این شکل :
def query(x):
global db,conn
return conn.execute(f"SELECT {x} FROM SELF").fetchall()[0][0]
پس این کد لعنتی دیگه چی میگه توی خط self.py:100
mode = json.loads(conn.execute(f"SELECT mode FROM SELF").fetchall()[0][0])
# mode = query('mode') ✅
این سم رو دیگه توی لاین self.py:89 نمیپذیرم 😂 چرا باید تایپ رو تغییر بدی که بخای مساوی با یه رشته 'None' بزاری ؟ اینطوری قسمتی از سی پیو رو الکی اشغال کردی با این کارت
str(about.about) == 'None'
# about.about == None ✅
در خط self.py:154 اومدن اسامی رو گرفتن تا لیستی ازشون درست بکنن و بفرستن ... نکته مهمش اینجاست که اگر طرف توی اسمش یه کد HTML بود اونوقت تلتون نمیتونه بفرستش پس به ارور میخوری
t += f"<a href=tg://user?id={id}>{i} : {info.first_name}</a>\n "حالا کاری با این اسم گذاری های متغیر هاش ندارم اما میشه توضیح بدی متغیر n که صفر هست همیشه خدا ، کجا استفادت شده ؟! ( فکر کنه بنده خدا میخواسته هر بار n += 1 انجام بده که یادش رفته
a,n= "",0
if len(answer) >= 1:
for i in range(0,int(len(answer))):
a+= f"{n} : {answer[i]} -> {javab[i]} \n"
await event.edit("<b> Answer List : </b>\n {a}",parse_mode='html')
else:
await event.edit("Answer list is empty ")
داش عالی نواختی ! فایل رو دو بار آپلود کردی چرا توی لاین self.py:313 و self.py:314
m=await slf.upload_file(photo) # بار اول
await slf(functions.photos.UploadProfilePhotoRequest(fallback=True,file=await slf.upload_file(m))) # بار دوم
خط self.py:426 هم دستت درد نکنه که parse_mode = html رو به عنوان پارامتر ندادی بهش و اشتباهه
await event.edit(f"<u>{text}</u>")یه قسمت اکشن هم معذرت
بعد که فایل helper.py رو باز کردم و دیدم چند تا تابع نوشتی برای اینکه متن خروجی چی باشه همونجا سورسو بستم و پشمام ریخت که یه تابع بنویسی صرفاً یه تکست عادی رو ریترن کنه
Please open Telegram to view this post
VIEW IN TELEGRAM
2 12👍9🔥3
👍 https://t.me/Sourrce_kade/4787
🔥 https://t.me/Sourrce_kade/2295
❤️ https://t.me/Sourrce_kade/4819
با ری اکشنت بگو بعدی کدوم باشه 😉 خیلی هاتون سورس فرستادید ولی اکثراً پایتون هستن لطفاً صبر کنید به زبان های دیگه هم بپردازیم ! و اما سورس هایی که مال خودتون هستن رو بفرستید لطفاً
https://t.me/Sourrce_kade/4952
و چون این سورس خودمه پس شما انتقادش کنید😁 هر دلیل منطقی بیارید میپذیرم و ازتون ممنون هم میشم
🔥 https://t.me/Sourrce_kade/2295
❤️ https://t.me/Sourrce_kade/4819
با ری اکشنت بگو بعدی کدوم باشه 😉 خیلی هاتون سورس فرستادید ولی اکثراً پایتون هستن لطفاً صبر کنید به زبان های دیگه هم بپردازیم ! و اما سورس هایی که مال خودتون هستن رو بفرستید لطفاً
https://t.me/Sourrce_kade/4952
و چون این سورس خودمه پس شما انتقادش کنید
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥5❤4
توی لاین 15 اومدن یه پارامتر دادن به عنوان $datas :) داش لطفاً چیزی رو نمیدونی الکی نزن
اولا باید بصورت کلید و مقدار باشه آرایه ای که میدی چون قراره دیتا رو پست کنی به HTTP API
لاین 91 یه اشتباه رایج بین همتون هست اینکه lastname اپشنال هست ممکنه باشه ممکنه نباشه !
و اگر کاربر فامیلی نداشته باشه اینجا خطا میگرید که این پراپرتی وجود ندارد در آبجکت شما
این اشتباه در خط های 92 و 94 و جاهای متعددی تکرار شده روی نسخه 8+ پی اچ پی همه اینا خطا میدن دیگه نه وارنینگ
لاین 106 خیلی بامزه هست طرف اومده فایل سایز رو از بایت به کیلوبایت تبدیل کنه
مشکل اینه که ایشون حتی نمیتونن 1024 بایت یه کیلو بایت هست
لاین 134 قابل تحسین هست که میخاستن توکن ربات شما رو بدزده
لاین 328 و جاهای دیگه راحت میشه از باگ injection sql استفاده کرد
داش امیدوارم بدونی متغیر به چه درد میخوره ، آخه کی هزار بار درخواست مشابه میزنه به دیتابیس برای گرفتن یه چیز ؟؟
$file_name = mysqli_fetch_assoc(mysqli_query($connect,"SELECT*FROM data WHERE code = '$text'"))['file_name'];
$file_id = mysqli_fetch_assoc(mysqli_query($connect,"SELECT*FROM data WHERE code = '$text'"))['file_id'];
$title = mysqli_fetch_assoc(mysqli_query($connect,"SELECT*FROM data WHERE code = '$text'"))['title'];
$uploadDate = mysqli_fetch_assoc(mysqli_query($connect,"SELECT*FROM data WHERE code = '$text'"))['date'];
$yuklang = mysqli_fetch_assoc(mysqli_query($connect,"SELECT*FROM data WHERE code = '$text'"))['yuklang'];
از لاین 636 نگاه کنید میبینید که اره هنوز با بررسی یه شرط داخل یه حلقه اشناییت نداره !
برداشته تک تک درخواست زده و مقدارشو ریخته تو متغیر و چک کرده که پیام رفته یا نه !
داش اذیت نکن خودتو انصافاً
# line 636
if($ok==true){
}else{
فکر کنم دوستمون هنوز مبحث مربوط به بولین false رو نخونده همه کاراشو با true کرده
داداش میگم تو مطمئنی همون true هم یاد گرفتی ؟ من احساس میکنم کپی کردی
چون هنوز نمیدونی true != "true"
# line 723
if(is_numeric($text) == "true"){
اوه من یادمه از وقتی تلگرام اومد دیلیت مسیج داشته داش یکم داکیومنت تلگرامو بخون
نمیدونم چی تو فکرش بوده ولی این کدو زده
# line 692
bot('editMessageText',[
'chat_id'=>$cid2,
'message_id'=>$mid2,
'text'=>"",
'parse_mode'=>'html',
]);
قشنگ از خط 699 میشه فهمید کپی پیستر بوده نه کدنویس :)
$ping = $end_time - $start_time;یادش رفته متغیر $start_time هم کپی کنه تو سورس
همین که از elseif استفاده نکرده و خیلی جاها exit استفاده کرده
میشه فهمید که یه کد نویس این سورسو نزده والا شرمنده ولی کار یه ادیتور بوده :(
توی لاین های 41 و 42 و ... شما شاهد چیزای جدیدی هستید
# line 41 & 42
$array['inline_keyboard']["$i"][0]['text'] = "✅ ". $name;
$array['inline_keyboard']["$i"][0]['url'] = "https://t.me/$url";
باید بهتون بگم که اینجا نباید $i رو به رشته تبدیل میکردن چون اینطوری دیگه لیست ساخته نمیشه
و یک آرایه با کلید و مقدار ساخته میشه ( توی پایتون به اصطلاح گفته میشه دیکشنری )
Please open Telegram to view this post
VIEW IN TELEGRAM
2 10👍3❤1
برسی سورس سلف پایتون ( ریویو شکلات 🍫 )
👀 یه مشکلی که تو خیلی از کد های تازه کار ها یا حتی کسایی که سنیور ترن میبینم اینه که استراکچر پروژه اشون سالم نیست.
آیا رعایت استاندارد های PEP اجباریه؟ نه. آیا رعایت نکردنش کار جالبیه؟ بازم نه
یکی از مسائلی که مهمه بدونید اینه که پروژه پایتونی شما باید از چند بخش تشکیل بشه:
البته خیلی بهتره که از یه Project Manager مثل chocolate, Poetry استفاده کنید.
فرض کنیم شما حوصله استفاده از پراجکت منیجر نداشتید! آیا درسته که مثل لاین ۱۷ این حرکتو بزنید؟
قطعا نه! واسه مشکل dependency ها ۳ تا راه حل دارید.
1⃣ استفاده از venv
2⃣ ساخت کاستوم اینستالر
3⃣ استفاده از Makefile
مورد سوم و اول رو بیشتر پیشنهاد میکنم.
(اگه نیازه به اموزش Makefile بگید)
اینا بهتون کمک میکنن مطمئن شید که پروژه به نحو احسنت اجرا میشه.
😀 سورس سورس متوسطی ای هست. سعیم بیشتر بر این بود کسی که داره اینو میخونه یه چیزی یاد بگیره
🔣 نمره ای که من میدم ؟ 4⃣ از 0️⃣ 1⃣
آیا رعایت استاندارد های PEP اجباریه؟ نه. آیا رعایت نکردنش کار جالبیه؟ بازم نه
یکی از مسائلی که مهمه بدونید اینه که پروژه پایتونی شما باید از چند بخش تشکیل بشه:
🛠 اسکریپت اصلی
📦 دپندنسی های پروژه (requirements.txt)
🖼 فولدر فایل های ثابت (assets/static)
🔌 پلاگین و ماژول ها (modules/plugins)
البته خیلی بهتره که از یه Project Manager مثل chocolate, Poetry استفاده کنید.
فرض کنیم شما حوصله استفاده از پراجکت منیجر نداشتید! آیا درسته که مثل لاین ۱۷ این حرکتو بزنید؟
os.system('pip install --upgrade pip && pip install -U telethon && pip install psutil && pip ins ...
قطعا نه! واسه مشکل dependency ها ۳ تا راه حل دارید.
مورد سوم و اول رو بیشتر پیشنهاد میکنم.
(اگه نیازه به اموزش Makefile بگید)
اینا بهتون کمک میکنن مطمئن شید که پروژه به نحو احسنت اجرا میشه.
اینو یادتون باشه، دنیای کامپیوتر دنیای «همه چیز دان ها» نیست، بلکه دنیای «کنجکاو ها» ست. از خودتون خجالت نکشید. کد های خنده دار و مسخره بنویسید. یه سوال رو برای بار هزارم سرچ کنید. در کل هر اتفاقی که میوفته مسیر یادگیری رو متوقف نکنید. کامپیوتر هارو درک کنید تا بتونید باهاشون صحبت کنید. این تنها راه موفقیت تو این مسیره.
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥8❤5👍5👏1
سورس بعدی کدوم باشه ؟ 😁 کسانی که فرستادن و فراموش کردم ازشون عذر خواهی میکنم 🙏 و اگر امکانش هست سورس های متعلق به خودتون رو ارسال بکنید!
👇 یا اینکه کامنت بکنید ☹️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6😎2🤔1
سلام شکلاتم 🍫
😁 قراره این سورس رو برسی کنیم : https://t.me/Sourrce_kade/4976
اولا تو لاین ۹ و ۱۰ به جای :
بهتر بود از :
استفاده میکرد
دوما، واسه پترن regex ای که زده جالب نیست
هدفش اینه مسیجی که ران رو اولش داره بگیره و اینو زده
این اگه ران وسط تکست هم باشه میگیردش
درستش اینه :
از لحاظ PEP که ریده. بعد کد زدن از Black استفاده کنید لطفا
و لاین 226 :
جانم ؟ 😂😂😭
نمره ای که میدم2️⃣ از 0️⃣ 1️⃣
اولا تو لاین ۹ و ۱۰ به جای :
if os.path.isdir(path):
os.mkdir....
بهتر بود از :
os.makedirs(path, exists_ok=True)
استفاده میکرد
دوما، واسه پترن regex ای که زده جالب نیست
هدفش اینه مسیجی که ران رو اولش داره بگیره و اینو زده
filters.regex("run ")این اگه ران وسط تکست هم باشه میگیردش
درستش اینه :
filters.regex(r"^run\s")
از لحاظ PEP که ریده. بعد کد زدن از Black استفاده کنید لطفا
و لاین 226 :
asyncio.speed(0.5)
جانم ؟ 😂😂😭
نمره ای که میدم
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2 2🔥1
def apis():
with open('apis.txt' , 'r') as api:
apir = api.read()
return random.choice(apir.split('\n')).split()
این دوستمون اینجاشو خیلی بد سوتی داده
import random
apir = '''4f40ae9fbdfb5ebdbef07caaaae 18987
'''
for i in range(10):
print(random.choice(apir.split('\n')).split())
def accounts():
accs = set()
for i in os.listdir('accounts'):
if '.session' in i:
accs.add(i.split('.')[0])
return list(accs)
from glob import glob
accounts = glob('accounts/*.session')
توی خط 34 انصافاً داش به جوونیت رحم کن
chat = message.text.replace('/run ' , '').replace('run ', '')به به توی خط 169 و 183 و ... هم که ایندنت گذاری هاتو کاملا رعایت کردی مثل همون قبلی که گفتیم
و خب توی هندل کردن خطا ها خیلی ضعیف عمل کرده مثلاً توی خط 229 ایشون اومده همچنین کدی رو نوشته :
os.unlink('files/p.png')اگر فرض کنیم دو نفر همزمان به این استپ برسن و قرار باشه فلان چیز حذف بشه ! بار اول که حذف بشه بار دوم خطا میخورید که فایل وجود نداره چون همزمان داشتن این کارو میکردن و پروسه درکل طولانی هست پس ممکنه این اتفاق بیوفته دور از انتظار اصلا نیست !
Please open Telegram to view this post
VIEW IN TELEGRAM
✓ توی تابستون قراره خودم سورس بزارم
✓ و همچنین آموزش و نکات ریز هر زبان رو مورد بررسی قرار میدیم
✓ از همه مهم تر اینکه چالش هایی رو همراه با جوایز قرار میدیم
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1🔥1
در خط bot.py:473 از شرط زیر برای چک کردن API HASH استفاده کردن که هم اشتباه و هم ضعیف هست ! اولاً طول اون ثابت هست چون هش هست و 32 کاراکتر داره و دوما فقط از اعداد و حروف a تا f استفاده میشه در ساختارش که میشد این هم لحاظ کنن
if len(text) < 30:در بین خط bot.py:599 الی bot.py:604 متاسفانه بجای اینکه از Exception های از قبل تعریف شده استفاده کنن برای مدیریت بهتر اومد بصورت شرطی این رو بررسی کردن ، اما خب این مشکل نیست
if "PHONE_NUMBER_INVALID" in error_msg:
await event.respond(ERROR_MESSAGES["PHONE_NUMBER_INVALID"])
elif "PHONE_NUMBER_BANNED" in error_msg:
await event.respond(ERROR_MESSAGES["PHONE_NUMBER_BANNED"])
در خط bug_report.py:538 ایشون اومدن همچین خروجی رو دادن که ممکنه یک دیکشنری یا یک NoneType باشه ! بعد خروجی که برای تابع تعریف کردن فقط دیکشنری هست
async def _get_bug_details(self, bug_id: int) -> Dict:
return dict(zip(columns, row)) if row else None
احساس میکنم درگیری شدیدی با خودشون داشتن
# کد الکی و دارای اشتباه ، ممکنه فلود هر جور باشه متنش و انواع و اقسامی داره
wait_time = int(str(e).split(" ")[-2]) + 1
# کد درست که خود تلتون ثانیه و زمان فلود رو گزارش میکنه
wait_time = e.seconds
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3 1
یه سندرومی هم به اسم سندروم متغیر نامتغیر
مثلاً توی خط 401 الی 403 کد زیر تعریف شده ، داداشمون انقدر حرفه ای هست که Exception از هر نوعی باشه بزور ثانیه فلود ویت میخاد ازش استخراج بکنه لعنتی
except Exception as e2:
x1.error(f"Error sending FloodWait message: {e2}")
await asyncio.sleep(e2.seconds)
داش ببین کار خوبی میکنی که چنل میخای بسازی و روش بندازی یوزرنیم رو ... ولی خبر داری که ۲۰ دقیقه محدودیت میخوره ؟ و اگر طرف روی هر ۱ دقیقه یکبار چک کردن گذاشته باشه زمانبندی رو ... تو ۲۰ تا چنل ساختی توی همین ۲۰ دقیقه تا اینکه قفل بشه یوزرنیم
av1 = await c1(CreateChannelRequest(
title=f"کانال {ag1}",
about="کانال جدید",
broadcast=True
))
aw1 = av1.chats[0].id
await c1(UpdateUsernameRequest(
channel=aw1,
username=ag1[1:]
))
در خط 39 افکار قدیمی و پوسیده ای میبینیم
return bool(re.match(r'^[A-Za-z0-9_]{5,}$', e1))async def d2():
async with aiofiles.open(b1,'r') as f1:
return json.loads(await f1.read())
async def d3(g1):
async with aiofiles.open(b1,'w') as f1:
await f1.write(json.dumps(g1))
لطفاً به این موضوع دقت ویژه داشته باشید و تکلیفتون رو با خودتون روشن کنید ! یا همه چیزو بصورت async بنویسید یا اصلا سمتش نیاید
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4 2❤1
سلام و درود مجدد 😁
چند وقت پیش من یه فریمورک برای هندل کردن اکانت های فروت کرفت و نوشتن اسکریپت هاش توی زبان پی اچ پی👨💻 نوشتم
و خب داخل📱 گیت هابم اونو آپلود کردم و واقعاً چیز خفنی شده ! به روز ترین کد ها و کامل ترین implement هست !
📱 https://github.com/Tak-Pesar/FruitCraft
و همچنین چند مثال برای نوشتن اسکریپت نوشتم و امیدوارم به دردتون بخوره و حداقل خودتون استفاده کنید
⭐️ اگر به دردتون هم نخورد یه ستاره بزنید دلمون خوش بشه 😄 واقعاً کد نویسی تمیزی شده ! میگی نه ؟ ببینش
❤️ اگر سوالی و باگی هم بود گزارش بدید رفع میشه
چند وقت پیش من یه فریمورک برای هندل کردن اکانت های فروت کرفت و نوشتن اسکریپت هاش توی زبان پی اچ پی
و خب داخل
و همچنین چند مثال برای نوشتن اسکریپت نوشتم و امیدوارم به دردتون بخوره و حداقل خودتون استفاده کنید
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥1 1
