<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های alireza</title>
        <link>https://virgool.io/feed/@alirezax5</link>
        <description>تلگرام : alireza_x5_bot اینستاگرام : alirezax5</description>
        <language>fa</language>
        <pubDate>2026-04-15 04:37:25</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/62638/avatar/avatar.png?height=120&amp;width=120</url>
            <title>alireza</title>
            <link>https://virgool.io/@alirezax5</link>
        </image>

                    <item>
                <title>دارک مود برای وبسایت با استفاده از css و js</title>
                <link>https://virgool.io/@alirezax5/dark-mode-h7bfm92t6dbt</link>
                <description>یکی از قابلیت هایی که میتونیم به کاربرامون در استفاده از سایتمون بدیم , تغییر رنگ سایت به دارک و لایته که امروزه اکثر سایت ها از این فیچر استفاده می کنند.اما این فیچر رو چطور پیاده سازی کنیم ؟در این پست میخوام به چندین روش موجود بهتون توضیح بدم چطور این قابلیت رو به سایتتون اضافه کنید و قطعا این پست طولانی خواهد شد پس اگه حوصله داری در ادامه این پست همراه من باش!1 - روش اول استفاده از متاتگبا استفاده از متاتگ زیر :&lt;meta name=&amp;quotcolor-scheme&amp;quot content=&amp;quotdark light&amp;quot /&gt;این روش خیلی روش ساده و سریع ای هستش اما مشکلاتی داره! مثلا ما میخوایم یک آیکن در حالت لایت به یک رنگ خاص باشه اما در دارک رنگش فرق کنه ! با استفاده از این متاتگ نمیتونیم همچین چیزی رو پیاده کنیم.2 - روش دوم استفاده از مدیا کوئریروش بعدی با استفاده از کد های css میایم حالت دارک مود رو اضافه می کنیم:@media (prefers-color-scheme: dark) {
} 
@media (prefers-color-scheme: light) { }این روش نقص های روش اول رو حل میکنه و براساس مرورگر کاربر هم تنظیم میشه ! خیلی خوبه , اما !در این روش اگه بخوایم حق انتخاب به کاربر بدیم مجبور میشیم کد های بیشتری رو بنویسیم.3 - روش سوم استفاده از جاوا اسکریپتاین روش بنظر من بهترین روش موجوده و میتونیم هم حق انتخاب به کاربر بدیم هم براساس مرورگر کاربر رنگ وبسایتمون رو تعیین کنیم.داخل این پست کامل میریم این شیوه رو پیاده سازی میکنیم اما ممکنه کد هایی که نوشتم زیاد تمیز نباشه .نمونه صفحه ای که با استفاده از این روش پیاده کردم :https://alirezax5.github.io/darkmode/خب بریم سراغ کد هادر html همچین کد داریم :&lt;body&gt;
&lt;div class=&amp;quotmain&amp;quot&gt;
    &lt;span&gt;&lt;/span&gt;
    &lt;p&gt;Dark Mode&lt;/p&gt;
    &lt;button id=&amp;quottoggle&amp;quot&gt;toggle&lt;/button&gt;
&lt;/div&gt;
&lt;/body&gt;و در css هم کد های ما ایناس :&lt;style&gt;
    body {
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        height: 100vh;
    }

    span:before {
        font-size: 4rem;
        content: &#039;\1F5A4&#039;;
    }

    .main {
        width: 500px;
        text-align: center;
    }
    body.dark {            background-color: #121212;        }
    .dark span:before {
        font-size: 4rem;
        content: &#039;\1F90D&#039;;
    }

    .dark p {
        color: #fff;
    }
&lt;/style&gt;کاری که میخوایم کنیم اینه که براساس انتخاب کاربر یا حالتی که در مرورگرش انتخاب کرده کلاس dark رو به body خودمون اضافه کنیم و با استفاده از کلاس dark در سی اس اس میایم رنگ های دلخواهمون رو در صورتی که حالت دارک فعال بود به آیتم هامون میدیم.در جاوا اسکریپت اولین قدم میایم تعریف میکنیم :
  let btn = document.getElementById(&amp;quottoggle&amp;quot);
بعد میایم یک لیستینر کلیک برای دکمون تعریف می کنیم :btn.addEventListener(&#039;click&#039;, function () {
    document.body.classList.toggle(&amp;quotdark&amp;quot);
})در کد بالا وقتی کاربر روی دکمه کلیک کنه کلاس dark در body ما toggle میشه , یعنی اگه وجود داشت پاکش میکنه اگه نداشت اضافه میکنه.تا الان کد های ما شد :&lt;html lang=&amp;quoten&amp;quot&gt;
&lt;head&gt;
  &lt;meta charset=&amp;quotUTF-8&amp;quot&gt;
  &lt;title&gt;Dark mode&lt;/title&gt;
  &lt;style&gt;
    body {
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      height: 100vh;
    }

    span:before {
      font-size: 4rem;
      content: &#039;\1F5A4&#039;;
    }

    .main {
      width: 500px;
      text-align: center;
    }
    body.dark {
      background-color: #121212;
    }

    .dark span:before {
      font-size: 4rem;
      content: &#039;\1F90D&#039;;
    }

    .dark p {
      color: #fff;
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div class=&amp;quotmain&amp;quot&gt;
  &lt;span&gt;&lt;/span&gt;
  &lt;p&gt;Dark Mode&lt;/p&gt;
  &lt;button id=&amp;quottoggle&amp;quot&gt;toggle&lt;/button&gt;
&lt;/div&gt;
&lt;/body&gt;

  let btn = document.getElementById(&amp;quottoggle&amp;quot);
  btn.addEventListener(&#039;click&#039;, function () {
    document.body.classList.toggle(&amp;quotdark&amp;quot);
  })

&lt;/html&gt;الان ما اومدیم یک صفحه ساختیم که با کلیک کاربر رنگ تغییر میکنه , اما با رفرش برمیگرده  به حالت اول , برای حل این مشکل ما باید انتخاب کاربر رو در یک جا ذخیره کنیم و اون انتخاب رو هندل کنیم.3-1 - ذخیره انتخاب کاربر در localStorageپس میام در بالاترین خط جاوا اسکریپت متغییر زیر رو تعریف میکنم :let colorMode;بعد میایم دو فانکشن برای فراخوانی و ذخیره اطلاعات در localStorage تعریف میکنم :function saveStorage(item, value) {
    localStorage.setItem(item, value)
}

function getStorage(item) {
    return localStorage.getItem(item)
}یک فانکشن هم برای toggle کردن رنگ تعریف میکنیم:function toggleColor(color) {
    return color === &#039;dark&#039; ? &#039;light&#039; : &#039;dark&#039;
}یک فانکشن هم برای بررسی رنگ localStorage از :function checkLocalStorageColorMode() {
    let mode = getStorage(&#039;colorMode&#039;);
    return mode == null ? colorMode = &#039;light&#039; : colorMode = mode;
}در کد بالا بررسی میکنه اگه مقدار null بود بع متغییر colorMode مقدار light بده در غیر این صورت رنگی که کاربر انتخاب کرده در آخر هم اونو return میکنه.در ادامه یک فانکشن برای تعریف کلاس برای body اضافه می کنیم :function setBodyClass() {
    colorMode === &#039;dark&#039; ? document.body.classList.add(&amp;quotdark&amp;quot) : document.body.classList.remove(&amp;quotdark&amp;quot)
}در کد بالا اگر متغیر colorMode دارک بود کلاس dark رو اضافه میکنیم در غیر این صورت اون رو حذف میکنیمدر ادامه مطلب بهتون توضیح میدم چرا از toggle استفاده نکردیم.در ادامه لیستینر کلیک رو به کد زیر ویرایش میکنیم :btn.addEventListener(&#039;click&#039;, function () {
    let cToggle = toggleColor(colorMode);
    saveStorage(&#039;colorMode&#039;, cToggle)
    colorMode = cToggle
    document.body.classList.toggle(&amp;quotdark&amp;quot);
})در آخر هم فانکشن زیر رو اضافه می کنیم :function initThemeColorMode() {
    checkLocalStorageColorMode()
    setBodyClass()
}و اون رو فراخوانی می کنیم :initThemeColorMode()وقتی صفحه اجرا بشه ما باید پردازش های اولیه رو با استفاده از فانکشن initThemeColorMode انجام بدیم برای همین اون رو فراخوانی میکنیمکار این فانکشن اینه که بررسی میکنه رنگ فعلی تم باید دارک باشه یا که خیر و بعدش میاد بررسی میکنه باید کلاس dark به body اضافه بشه یا که خیرما در setBodyClass از toggle استفاده نکردیم چونکه در حالت اولیه body کلاسی نداره و ما اگه از toggle  استفاده کنیم کلاس dark رو به اون اضافه می کرددر حال حاضر کد ما به شکل زیره :
    let colorMode;
    let btn = document.getElementById(&amp;quottoggle&amp;quot);
    btn.addEventListener(&#039;click&#039;, function () {
        let cToggle = toggleColor(colorMode);
        saveStorage(&#039;colorMode&#039;, cToggle)
        colorMode = cToggle
        document.body.classList.toggle(&amp;quotdark&amp;quot);
    })

    function saveStorage(item, value) {
        localStorage.setItem(item, value)
    }

    function getStorage(item) {
        return localStorage.getItem(item)
    }

    function checkLocalStorageColorMode() {
        let mode = getStorage(&#039;colorMode&#039;);
        return mode == null ? colorMode = &#039;light&#039; : colorMode = mode;
    }

    function initThemeColorMode() {
        checkLocalStorageColorMode()
        setBodyClass()
    }

    function toggleColor(color) {
        return color === &#039;dark&#039; ? &#039;light&#039; : &#039;dark&#039;
    }

    function setBodyClass() {
        colorMode === &#039;dark&#039; ? document.body.classList.add(&amp;quotdark&amp;quot) : document.body.classList.remove(&amp;quotdark&amp;quot)
    }

    initThemeColorMode()
الان اگه صفحه رو اجرا کنید و رنگ تم رو عوض کنید و رفرش کنید میبینید رنگ صفحه همون رنگیه که آخرین بار بود.3-2 - تنظیم دارک مود براساس مرورگر کاربردر مرحله اخر ما میخوایم کاری کنیم دارک مود صفحه براساس مرورگر کاربر تنظیم بشه.پس ابتدا از طریق inpect به Application برید و روی local storage بزنید و storage صفحه رو خالی کنید (اگه دارید همزمان با مطلب کدارو تست میکنید داخل همون صفحه اینکارو کنید و storage ویرگول رو اشتباهی پاک نکنید!)در ادامه کارمون متغییر زیر رو تعریف میکنیم :let systemColorModeبعد فانکشن checkLocalStorageColorMode رو به کد زیر تغییر میدیم :function checkLocalStorageColorMode() {
    let mode = getStorage(&#039;colorMode&#039;);
    return mode == null ? colorMode = systemColorMode : colorMode = mode;
}در فانکشن جدید ما میگیم اگر کاربر رنگ انتخاب نکرده بود بیاد و از رنگ مرورگر که درون متغیر systemColorMode میریزیم استفاده بکنه .در ادامه فانکشن زیر رو تعریف میکنیم:function checkSystemColorMode() {
    return systemColorMode = window.matchMedia &amp;&amp; window.matchMedia(&#039;(prefers-color-scheme: dark)&#039;).matches ? &#039;dark&#039; : &#039;light&#039;
}در کد بالا میایم بررسی میکنیم مرورگر کاربر روی دارک مود قرار داره یا که خیر.در ادامه فانکشن initThemeColorMode رو به کد زیر تغییر میدیم :function initThemeColorMode() {
    checkSystemColorMode();
    checkLocalStorageColorMode()
    setBodyClass()
}الان اگه وارد صفحه بشید رنگ رو براساس مرورگر کاربر تنظیم میکنه مگراینکه روی دکمه کلیک کنید که رنگ عوض بشه.در حال حاضر کد ما به شکل زیره :
    let colorMode, systemColorMode;
    let btn = document.getElementById(&amp;quottoggle&amp;quot);
    btn.addEventListener(&#039;click&#039;, function () {
        let cToggle = toggleColor(colorMode);
        saveStorage(&#039;colorMode&#039;, cToggle)
        colorMode = cToggle
        document.body.classList.toggle(&amp;quotdark&amp;quot);
    })
    function checkSystemColorMode() {
        return systemColorMode = window.matchMedia &amp;&amp; window.matchMedia(&#039;(prefers-color-scheme: dark)&#039;).matches ? &#039;dark&#039; : &#039;light&#039;
    }

    function saveStorage(item, value) {
        localStorage.setItem(item, value)
    }

    function getStorage(item) {
        return localStorage.getItem(item)
    }

    function checkLocalStorageColorMode() {
        let mode = getStorage(&#039;colorMode&#039;);
        return mode === null ? colorMode = systemColorMode : colorMode = mode;
    }

    function initThemeColorMode() {
        checkSystemColorMode();
        checkLocalStorageColorMode()
        setBodyClass()
    }

    function toggleColor(color) {
        return color === &#039;dark&#039; ? &#039;light&#039; : &#039;dark&#039;
    }

    function setBodyClass() {
        colorMode === &#039;dark&#039; ? document.body.classList.add(&amp;quotdark&amp;quot) : document.body.classList.remove(&amp;quotdark&amp;quot)
    }

    initThemeColorMode()
3-3 - تعریف رویداد تغییر رنگ مرورگرالان ما باید کاری انجام بدیم در صورتی که کاربر رنگ انتخاب نکرده باشه , رنگ صفحه با تغییر رنگ مرورگر عوض بشه.پس ما اول فانکشن زیر رو مینویسم :function changeColor() {
    if (getStorage(&#039;colorMode&#039;) == null) {
        colorMode = checkSystemColorMode()
        setBodyClass()
    }
}در کد بالا اول بررسی میکنیم کاربر رنگی انتخاب کرده یا خیر(چون تغییر رنگ باید وقتی باشه کاربر انتخابی نکرده باشه)بعد رنگ مرورگر رو با فانکشن checkSystemColorMode میگیرم و با setBodyClass اون رو هندل میکنیم.اما برای اجرا این فانکشن باید کد زیر رو بنویسیم :window.matchMedia(&#039;(prefers-color-scheme: dark)&#039;).addEventListener(&#039;change&#039;, event =&gt; {
    changeColor()
});و تمام! کد ما الان به شکل زیره :
    let colorMode, systemColorMode;
    let btn = document.getElementById(&amp;quottoggle&amp;quot);
    btn.addEventListener(&#039;click&#039;, function () {
        let cToggle = toggleColor(colorMode);
        saveStorage(&#039;colorMode&#039;, cToggle)
        colorMode = cToggle
        document.body.classList.toggle(&amp;quotdark&amp;quot);
    })

    function checkSystemColorMode() {
        return systemColorMode = window.matchMedia &amp;&amp; window.matchMedia(&#039;(prefers-color-scheme: dark)&#039;).matches ? &#039;dark&#039; : &#039;light&#039;
    }

    function saveStorage(item, value) {
        localStorage.setItem(item, value)
    }

    function getStorage(item) {
        return localStorage.getItem(item)
    }

    function checkLocalStorageColorMode() {
        let mode = getStorage(&#039;colorMode&#039;);
        return mode === null ? colorMode = systemColorMode : colorMode = mode;
    }

    function initThemeColorMode() {
        checkSystemColorMode();
        checkLocalStorageColorMode()
        setBodyClass()
    }

    function toggleColor(color) {
        return color === &#039;dark&#039; ? &#039;light&#039; : &#039;dark&#039;
    }

    function changeColor() {
        if (getStorage(&#039;colorMode&#039;) == null) {
            colorMode = checkSystemColorMode()
            setBodyClass()
        }
    }

    function setBodyClass() {
        colorMode === &#039;dark&#039; ? document.body.classList.add(&amp;quotdark&amp;quot) : document.body.classList.remove(&amp;quotdark&amp;quot)
    }
    window.matchMedia(&#039;(prefers-color-scheme: dark)&#039;).addEventListener(&#039;change&#039;, event =&gt; {
        changeColor()
    });
    initThemeColorMode()
امیدوارم از این پست استفاده مفیدی ببرید و ببخشید اگه طولانی شدبرای مشاهده کد کامل میتونید به گیتهابم مراجعه کنید :https://github.com/alirezax5/darkmodeاگه سوالی داشتید حتما کامنت کنید.</description>
                <category>alireza</category>
                <author>alireza</author>
                <pubDate>Tue, 20 Sep 2022 16:32:44 +0430</pubDate>
            </item>
                    <item>
                <title>اجرای next.js در cpanel</title>
                <link>https://virgool.io/wptips/%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-nextjs-%D8%AF%D8%B1-cpanel-g7t4slciatle</link>
                <description>یکی از دردسر هایی که کشیدم نحوه ران نکست روی هاست بودچون کل پروژه هام روی هاسته نمی صرفید برم سرور مجازی بگیرم , در آخر هم با کلی جستجو راه حل مشکلمو پیدا کردم و گفتم آموزشش رو در اختیارتون بزارم که به مشکل من گرفتار نشید و وقتتون رو برای پیدا کردن راه حل هدر ندید.آموزش در آپارات آپلود کردم و این هم لینکش:آموزش اجرای next.js روی cpanel (aparat.com)لینک منبع : how to deploy nextJs app in cpanel · Discussion #12234 · vercel/next.js (github.com)</description>
                <category>alireza</category>
                <author>alireza</author>
                <pubDate>Wed, 06 Jan 2021 16:04:38 +0330</pubDate>
            </item>
                    <item>
                <title>حل مشکل CORS policy در electron.js</title>
                <link>https://virgool.io/@alirezax5/%D8%AD%D9%84-%D9%85%D8%B4%DA%A9%D9%84-cors-policy-%D8%AF%D8%B1-electronjs-qo0ir4liqm5z</link>
                <description>با سلام خدمت دوستان گرامیاز دیشب تا قبل نوشتن این مقاله با خطای زیر مواجه شدم :چون درخواست رو دارم با ادرس localhost ارسال می کنم , درخواست من بلوک میشه!اگه شما هم مانند من به این خطا خوردید کافیه آپشن زیر رو موقع ساختن پنجره به برنامتون اضافه کنید :webPreferences: { webSecurity: false }با استفاده از webSecurity این خطا مشکلش حل میشه فقط دقت کنید موقع خروجی گرفتن حتما true اش کنید که مشکلی از لحاظ امنیتی پیش نیاد(البته نمیدونم پیش میاد یا نه!)منبع :sharepoint 2010 - Using electron to access cross-origin-resources - Stack Overflow</description>
                <category>alireza</category>
                <author>alireza</author>
                <pubDate>Thu, 26 Nov 2020 13:10:00 +0330</pubDate>
            </item>
                    <item>
                <title>تجربه چند ماه استفاده من از تحریم شکن, شکن</title>
                <link>https://virgool.io/@alirezax5/%D8%AA%D8%AC%D8%B1%D8%A8%D9%87-%DA%86%D9%86%D8%AF-%D9%85%D8%A7%D9%87-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D9%85%D9%86-%D8%A7%D8%B2-%D8%AA%D8%AD%D8%B1%DB%8C%D9%85-%D8%B4%DA%A9%D9%86-%D8%B4%DA%A9%D9%86-dmtp0rmcnp7b</link>
                <description>همانطور که هممون میدونیم و در جریانیم ما در ایران یا فیلتریم یا تحریم !برای دور زدن این دو مورد اعصاب خورد کن از کلی نرم افزار استفاده می کنیم , که جدا از امکان نا امن بودن برنامه ها , برخی از آنها حجم اضافی هم مصرف می کنند!در این میان برای دور زدن تحریم ها متخصصین کشورمون راه های زیادی رو برای ما پدید اووردن که یکی از این ها سرویس تحریم شکن,شکن هستش که توسط بنیان توسعه یافتهکار شکن به این شکله که با تنظیم یک dns سرور روی دستگاه شما , سایت هایی که فیلترنیستن و مارو تحریم کردن رو دور میزنه !برای کسانی مثل توسعه دهندگان این سرویس میتونه گره گشای مشکلشون باشه !طی این چندماهی که dns شکن رو روی مودمم تنظیم کردم بدون مشکل, و با سرعت خوب و همچنین با پینگ خوب میتونم بازی , دانلود و... کنم !با استفاده از این سرویس خیلی راحت به بازی های تحریم شده و سایت هایی مثل گوگل آنالیز میتونم مراجعه کنم و مطمعن باشید امتحان این سرویس ضرری نداره !چطور از شکن استفاده کنم؟ برای تنظیم dns شکن به لینک زیر برید و براساس دستگاهتون dns رو تنظیم کنیدhttps://shecan.ir/tutorials/اگه دستگاه شما ویندوزه میتونید از نرم افزار dns jumper استفاده کنید :https://soft98.ir/internet/16406-dns-jumper.htmlآموزشش که خودم ظبط کردم :https://www.aparat.com/v/ncr8hفایل تنظیمات dns jumper به همراه dns شکن :https://alirezax5.ir/files/DnsJumper.iniفایل بالارو جایگزین DnsJumper.ini در مسیر برنامه کنیداما اگه اندروید یا ios دارید و به وسیله وای فای به اینترنت وصل میشید وارد تنظیمات وای فای بشید و روی اسم مودمتون بگیرید بعد هم روی ویرایش بزنیداز بخش پیشرفته روی تنظیمات ip بزنید و اون رو روی ایستا یا static بزارید در ادامه در باکس های dns1 و dns2 ادرس های شکن رو وارد کنید.اگه سوالی داشتید توی بخش نظرات بپرسید</description>
                <category>alireza</category>
                <author>alireza</author>
                <pubDate>Mon, 20 Jul 2020 15:55:29 +0430</pubDate>
            </item>
                    <item>
                <title>کار با mime type ها در php</title>
                <link>https://virgool.io/@alirezax5/%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-mime-type-%D9%87%D8%A7-%D8%AF%D8%B1-php-qng3kirqe2xe</link>
                <description>برای یکی از اسکریپت هایی که در آینده قراره آماده کنم یک سورس کوچیک نوشتم برای کار با mime type و پسوند فایل ها.البته نمونه مانند سورس این بگردید هست ,کار این سورس تبدیل mime type به پسوند و برعکس, دریافت پسوند و mime type براساس محتوای فایل , اعتبارسنجی فایل های مجاز می باشد.آدرس گیتهاب سورس :https://github.com/alirezax5/mime-type/نمونه و آموزش نصب درون گیتهاب موجوده و دوستان لطفا نظرات و پیشنهادتونو برای توسعه سورس کامنت کنید.نکته : در حال حاضر پسوند های کمی رو (60 تا) در سورس قرار دادم بزودی تعدادشونو زیاد می کنمتوضیحی برای متد ها :دریافت mime type یک پسوند :MimeType::getMimeFromExtension(string $extension)نمونه :MimeType::getMimeFromExtension(&#039;json&#039;)دریافت پسوند یک mime type :MimeType::getExtensionFromMimeType(string $Mime_Type)نمونه :MimeType::getExtensionFromMimeType(&#039;application/json&#039;)دریافت mime type براساس اسم فایل:MimeType::getMimeFromFileName(string $filename)نمونه :MimeType::getMimeFromFileName(&#039;test.json&#039;)دریافت پسوند فایل براساس اسم فایل :MimeType::getExtensionFromFileName(string $filename)دریافت mime type براساس محتوای فایل:دقت کنید ورودی باید مسیر فایل رو قرار بدیدMimeType::getExtensionFromContent(string $path )نمونه :MimeType::getExtensionFromContent(__DIR__.&#039;a.json&#039;)دریافت پسوند براساس محتوای فایل :MimeType::getMimeFromContent(string $path )نمونه :MimeType::getMimeFromContent(__DIR__.&#039;a.json&#039;)ثبت یک پسوند مجاز :MimeType::setAllowExtension(..$ex);نمونه :MimeType::setAllowExtension(&#039;json&#039;,&#039;php&#039;.....);ثبت یک mime type مجازMimeType::setAllowMime(...$mime_type)نمونه :MimeType::setAllowMime(&#039;image/png&#039;,&#039;image/jpeg&#039;)اعتبارسنجی مجاز بودن فایل براساس پسوند های مجازMimeType::isAllowExtension(string $filename)اعتبار سنجی مجاز بودن فایل براساس mime type های مجازMimeType::isAllowMime(string $filename)اعتبار سنجی مجاز بودن فایل با دو متد قبلی :این حالت اگه یکی از دو حالت قبل true باشه نتیجه true میشهMimeType::isAllowed(string $filename)</description>
                <category>alireza</category>
                <author>alireza</author>
                <pubDate>Fri, 22 May 2020 21:30:19 +0430</pubDate>
            </item>
                    <item>
                <title>استریم در اینستاگرام</title>
                <link>https://virgool.io/@alirezax5/%D8%A7%D8%B3%D8%AA%D8%B1%DB%8C%D9%85-%D8%AF%D8%B1-%D8%A7%DB%8C%D9%86%D8%B3%D8%AA%D8%A7%DA%AF%D8%B1%D8%A7%D9%85-h1vxaifgmuwg</link>
                <description>قطعا اگر پلیر گیم باشید یا پخش زنده و یا اینکه استریم سایر پلیر هارو دیده اید ؟شاید شما هم دوست داشته باشید مانند استریم در آپارات و سایر سرویس ها ، در پیج خود استریم بزارید ؟ در لینک زیر آموزش استریم در اینستاگرام رو گذاشتم :https://www.aparat.com/v/tm2qnدر این آموزش از yellow duck استفاده شده که اگر php بلد  باشید  میتونید برای دریافت key لایو اینستاگرام با ایجاد تغییرات یک صفحه جدا از برنامه بسازید</description>
                <category>alireza</category>
                <author>alireza</author>
                <pubDate>Fri, 22 May 2020 18:35:58 +0430</pubDate>
            </item>
                    <item>
                <title>افزودن قابلیت پشتیبانی از وردپرس در phpstorm</title>
                <link>https://virgool.io/wptips/%D8%A7%D9%81%D8%B2%D9%88%D8%AF%D9%86-%D9%82%D8%A7%D8%A8%D9%84%DB%8C%D8%AA-%D9%BE%D8%B4%D8%AA%DB%8C%D8%A8%D8%A7%D9%86%DB%8C-%D8%A7%D8%B2-%D9%88%D8%B1%D8%AF%D9%BE%D8%B1%D8%B3-%D8%AF%D8%B1-phpstorm-qsrh5ltfjbyu</link>
                <description>قطعا یکی محبوب ترین cms های موجود در جهان وردپرس می باشد و کمتر کسی موجود هست که تاحالا اسمشو نشنیده باشه .یکی از دغدغه های توسعه دهندگانی که با وردپرس کار می کنند , انتخاب یک برنامه برای توسعه سریع تر قالب و یا افزونه برای وردپرسه , که در حال حاضر کلی برنامه برای کد زدن هست که یکی از اون ها phpstorm می باشد.اما چیکار کنیم که مانند تابع های php , تابع های وردپرس هم بشناسه ؟ - نصب افزونه ی وردپرس برای phpstormبا نصب این افزونه وردپرس به طور کامل پشتیبانی نمیشه و برای بعضی از عملیات ها این افزونه خوبه , اما چیکار کنیم که وردپرس صد در صد یا حداقل به طور کامل پشتیبانی بشه ؟طبق توضیحات درون سایت ها از جمله phpstorm برای اینکه وردپرس رو برای phpstorm  کانفیگ کنیم, باید مسیر وردپرس و به خصوص wp-includes و wp-admin رو به برنامه بشناسونیماما به چه شکل ؟افزودن مسیر وردپرس به برنامهمانند تصویر روی  file بزنیدبعد از اون هم روی settings کلیک کنیددر ادامه روی language &amp; frameworks و بعد php بزنیددر ادامه روی + بزنید و مسیر وردپرس رو انتخاب کنیدمانند من که فقط wp-includes و wp-admin رو اضافه کردمبعد از افزودن مسیر روی  ok بزنید و صبر کنید فایل ها اسکن بشن بعد از کدنویسی خودتون لذت ببرید.اما اما یک ایراد که شاید متوجه نشید ! ما با این کارمون باعث میشیم فایل های js و.. هم اسکن بشن مایی که بیشترین توجه مون به فایل های php ءبرای درک بهتر روی external libraries بزنید و پوشه ای که افزوده اید رو باز کنیدبا مشاهده این پوشه میبینیم که کلی فایل افزوده شده که شاید به کار ما نیاد و باعث بشه زمان اسکن و لود برنامه افزایش بیابد !راه حل چیه ؟ راه حل اینه که در سایت ها دنبال هلپرفانکشن ( اگه درست گفته باشم )های وردپرس بگردید و اون ها رو به برنامه اضافه کنید که بنده چیزی پیدا نکردم, اگه شما چیزی رو سراغ دارید حتما کامنت کنیدراه بعدی اینه که خودمون یک هلپرفانکشن بنویسیم و به برنامه اضافه کنیم.امیدوارم تونسته باشم کمکی بهتون کرده باشم و امیدوارم موفق باشیداگه خودم وقت کردم یک هلپر فانکشن مینویسم ولی کو وقت و حوصله (:نظری  یا پیشنهادی داشتید کامنت کنید</description>
                <category>alireza</category>
                <author>alireza</author>
                <pubDate>Mon, 04 May 2020 13:01:51 +0430</pubDate>
            </item>
                    <item>
                <title>تجربه من از  ناپدید شدن فایل های هارد اکسترنال و پوشه های found.000</title>
                <link>https://virgool.io/@alirezax5/%D8%AA%D8%AC%D8%B1%D8%A8%D9%87-%D9%85%D9%86-%D8%A7%D8%B2-%D9%86%D8%A7%D9%BE%D8%AF%DB%8C%D8%AF-%D8%B4%D8%AF%D9%86-%D9%81%D8%A7%DB%8C%D9%84-%D9%87%D8%A7%DB%8C-%D9%87%D8%A7%D8%B1%D8%AF-%D8%A7%DA%A9%D8%B3%D8%AA%D8%B1%D9%86%D8%A7%D9%84-%D9%88-%D9%BE%D9%88%D8%B4%D9%87-%D9%87%D8%A7%DB%8C-found000-zctkm0hfebiv</link>
                <description>سلام خدمت دوستاننمیدونم تاحالا پیش اومده فایل های شما یهو ناپدید بشه یا که نه ، ولی اتفاقی که برای من پیش اومد باعث خورد شدن اعصاب خواهد شد !  فرض کنید پوشه ای که بیش از 200 گیگ حجم داره یکهو ناپدید بشه ! مطمعنن شماهم مثل من اعصابتون خورد میشه !با کمی چرخ توی گوگل به چند نرم افزار برخوردم که چشم منو به پوشه های found.000 باز کرد ! حالا این پوشه چیه و چرا ایجاد شده من اطلاعی ندارم ، یکم که جلوتر رفتم فایل هامو توی found.005‌ پیدا کردم و خوش حال شدم ! با استفاده از نرم افزار بازیابی اطلاعات فایل هامو برگردوند ، ولی اعصاب خورد تر میشه که ببینید باید چند ساعت صبر کنید ! و سرعت برگردوندن مثل سرعت حلزونه.پس بیشتر جستجو کردم و به نرم افزار XYplorer بر خوردم که به راحتی پوشه های مورد نظرمو باز میکرد و با سرعت بیشتر داده هارو انتقال میداد امیدوارم که اگه به این مشکل خوردید این نرم افزار بتونه کمکتون کنه.و یک نکته : برنامه رو در حالت Run as administrator باز کنیدو نکته دوم  : اگه فایلاتون ناپدید شد فضای هارد یا مموری رو چک‌کنید ببینید کم نشده باشه ، اگه کم شده باشه احتمالا به کلی پاک شده.موفق باشید</description>
                <category>alireza</category>
                <author>alireza</author>
                <pubDate>Tue, 17 Mar 2020 18:14:54 +0330</pubDate>
            </item>
                    <item>
                <title>مستندات ربات تلگرام : نوع User</title>
                <link>https://virgool.io/TelegramApi/%D9%85%D8%B3%D8%AA%D9%86%D8%AF%D8%A7%D8%AA-%D8%B1%D8%A8%D8%A7%D8%AA-%D8%AA%D9%84%DA%AF%D8%B1%D8%A7%D9%85-%D9%86%D9%88%D8%B9-user-piljdthwknca</link>
                <description>درچند پست درمورد چندین متد تلگرام مطلب نوشتیم , الان نوبت نوع هاس, داده هایی که برای ما از سمت تلگرام ارسال میشن.شاید بگید بحث متد ها , همه متد هارو کامل توضیح ندادم , دلیلش اینه که بنده دارم طبق مستندات تلگرام پیش میرم و بعد از متد های مربوط به وبهوک درمورد نوع (Types) ها مطلب نوشته , البته ممکنه عنوانی مناسب نباشه و اگه عنوانی مناسب در نظر دارید لطفا بگیدخب بگذریم , نوع User دقیقا چیو به ما نمایش میده ؟اگه یک ذره انگلیسی بلد باشید میدونید User به معنی کاربره پس در نتیجه اطلاعاتی رو که برگشت میده درمورد کاربریه که یک درخواست رو به ربات ارسال کرده.در متن زیر پارامتر های مهمشو نام برده و توضیح دادم :id:این پارامتر از نوع عدد صحیح (Integer) می باشد که بدون شک در هر آپدیت حضور داره و ایدی منحصر به فرد هر کاربره و یکسان هم نیست.is_bot :تعیین میکنه که کاربر ربات یا نه (متاسفانه فقط در ورود و خروج میشه بررسیش کرد در حالت عادی ربات ها همو نمیشناسند) و نوع این این پارامتر بولینه (Boolean) یعنی یا True در بر میگیره یا Falsefirst_name: اسم کوچک کاربر رو نمایش میدهlast_name:اسم بزرگ(فامیلی) کاربر رو نمایش میدهusername:نام کاربری کاربر در صورت ست بودنlanguage_code:کد زبان کاربر رو نمایش میده (برای فارسی Fa نمایش میده)can_join_groups:بررسی میکنه کاربر میتونه عضو گروه بشه یا نه(اگه اشتباه نکنم فقط برای رباته)can_read_all_group_messages: بررسی میکنه کاربر میتونه به پیام های گروه دسترسی داشته باشه یا نه(مخصوص ربات)supports_inline_queries:بررسی میکنه ببینه کاربر میتونه از حالت اینلاین استفاده کنه یا خیراما نوع User کجا دریافت میشه ؟ این نوع زیر مجموعه نوع هایی مانند Message می باشد که در خروجی وجود داره و User اغلب در پارامتر from  نوع Message میشه مشاهده کردش.برای درک بهتر تصاویر زیر رو نگاه کنید :اگه خوندن Json رو بلد باشید متوجه میشید که from زیر مجموعه Message  هستش, پارامتر های From همون نوع User ما هستش.به نمونه دوم هم دقت کنید :اگه به عکس دقت کنید new_chat_participant و new_chat_member و new_chat_members هم پارامتر های User رو داره پس در نتیجه User فقط در From به کار نمیره.اما به طور کلی User زیر مجموعه کدوم پارامتر ها هستش؟ برای یافتن این جواب باید به آدرس https://core.telegram.org/bots/api#update برید و روی Type تک تک پارامتر های Update کلیک کنید و  ببینید پارامتر های موجود در نوع کلیک کرده چه نوع هستند.برای مثال در عکس زیر پارامتر های Message  رو مشاهده می کنید:همانطور که در عکس می بینید دو نوع User و Chat به چشم میخورن اما در پایین تر نوع های بیشتری هم هستند که برای مشاهده یک سر به مستندات خود تلگرام بزنید.امیدوارم از این مطلب بهره برده باشید.پست های مرتبط :آموزش ساخت ربات تلگراممستندات ربات تلگرام : وبهوک و دریافت بروزرسانیمستندات ربات تلگرام : متد getUpdatesمستندات ربات تلگرام : متد های setWebhook ,deleteWebhook,getWebhookInfoمستندات ربات تلگرام : پارامتر های آپدیت</description>
                <category>alireza</category>
                <author>alireza</author>
                <pubDate>Sun, 02 Feb 2020 11:41:07 +0330</pubDate>
            </item>
                    <item>
                <title>مستندات ربات تلگرام : پارامتر های آپدیت</title>
                <link>https://virgool.io/TelegramApi/%D9%85%D8%B3%D8%AA%D9%86%D8%AF%D8%A7%D8%AA-%D8%B1%D8%A8%D8%A7%D8%AA-%D8%AA%D9%84%DA%AF%D8%B1%D8%A7%D9%85-%D9%BE%D8%A7%D8%B1%D8%A7%D9%85%D8%AA%D8%B1-%D9%87%D8%A7%DB%8C-%D8%A2%D9%BE%D8%AF%DB%8C%D8%AA-tmunh1xsbipw</link>
                <description>در هر آپدیت (  Update ) یک سری پارامتر هایی برای ما ارسال میشن که لیست پارامتر هارو میتونید در https://core.telegram.org/bots/api#update مشاهده کنید.این پارامتر ها , پارامتر های دیگری رو در زیر مجموعه دارند.برای مثال در پارامتر message  طبق توضیحاتی که در https://core.telegram.org/bots/api#message داده شده دارای چندین پارامتر دیگری هست که باز هم برخی از پارامتر های اون تشکیل شده از اجزای برخی نوع های دیگه هستنبرای مثال پارامتر From موجود در message  تشکیل شده از نوع User می باشد.یعنی اینکه اجزای پارامتر From موجود در message از اجزای User تشکیل شده است. (User در خروجی نمایش داده نمیشه و فقط اجزایش در پارامترهای دیگه نمایش داده میشه)بالاترین مجموعه در خروجی ما  مجموعه Update هستش که میتونید در لینک https://core.telegram.org/bots/api#update زیرمجموعه هاشو ببینید.با کلیک برروی Type هر پارامتر مجموعه Update, میتونید زیرمجموعه های مربوطه رو ببینید.میدونم الان مغزتون سوت میزنه و گیج شدید پس به عکس زیر توجه کنید:کل اجزای موجود در عکس زیر مجموعه ی بالاترین مجموعه ما هستن یعنی Update به زبان ساده هر آپدیتی برای ما ارسال میشه میتونه شامل پارامتر های در تصویر باشه و نکته ی دیگه اینکه همه ی پارامتر های در تصویر در هر آپدیت ارسال نمیشن و بسته به نوع پیام کاربر این پارامتر ها برای ما ارسال میشن.برای نمونه من یک پیام به ربات ارسال کردم و ساختار آپدیت دریافتی به شکل زیر هستش : همانطور که میبینید ما دو پارامتر در مجموعه Update داریم که  دو مجموعه ی update_id و message هستن که در این میان باید  بدونید که update_id در هر آپدیت وجود داره.بعداز این به message  دقت کنید , در message مجموعه هایی وجود داره که شاملmessage_id و from و chat و date و text هستش.باز هم اگه دقت کنید from و chat هم زیرمجموعه دارند.این مجموعه تو مجموعه ها رو میتونید در مستند های تلگرام نگاه کنید اما بنده در پست های آینده درمورد پارامتر های موجود در هر آپدیت مطلب خواهم نوشت.اگه نظری سوالی دارید لطفا در بخش کامنت ها مطرح کنید و امیدوارم به بهترین شکل توضیح داده باشم که لپ مطلب رو متوجه شده باشید.آموزش ساخت ربات تلگراممستندات ربات تلگرام : وبهوک و دریافت بروزرسانیمستندات ربات تلگرام : متد getUpdatesمستندات ربات تلگرام : متد های setWebhook ,deleteWebhook,getWebhookInfoمستندات ربات تلگرام : نوع User</description>
                <category>alireza</category>
                <author>alireza</author>
                <pubDate>Sun, 02 Feb 2020 11:36:31 +0330</pubDate>
            </item>
                    <item>
                <title>مستندات ربات تلگرام : متد های setWebhook ,deleteWebhook,getWebhookInfo</title>
                <link>https://virgool.io/TelegramApi/%D9%85%D8%B3%D8%AA%D9%86%D8%AF%D8%A7%D8%AA-%D8%B1%D8%A8%D8%A7%D8%AA-%D8%AA%D9%84%DA%AF%D8%B1%D8%A7%D9%85-%D9%85%D8%AA%D8%AF-%D9%87%D8%A7%DB%8C-setwebhook-deletewebhookgetwebhookinfo-v9nqv38tzxdl</link>
                <description>در پست مستندات ربات تلگرام : وبهوک و دریافت بروزرسانی درمورد دو نوع حالت دریافت آپدیت نوشتیم.اما در روش وبهوک چطور میتونیم به تلگرام بفهمونیم آپدیت هارو به کدوم آدرس ارسال کنه ؟تلگرام علم غیب نداره که در روش وبهوک باید به کدوم آدرس آپدیت هارو ارسال کنه, در این زمان ما باید آدرسی رو به تلگرام ارسال کنیم که به اصطلاح بهش میگیم ست وبهوک(setWebhook) کردن.برای ست کردن وبهوکمون باید از متد setWebhook استفاده کنیم.روش کلی نحوه ارسال درخواست رو در آخر پست مستندات ربات تلگرام : وبهوک و دریافت بروزرسانی توضیح داده ام و اگر نمیدونید چطور درخواستی رو ارسال کنید این پست رو بخونید.متد  setWebhook یک پارامتر اجباری و 3 پارامتر غیر اجباری داره که مهم هاشو در زیر نام می برم :url:این پارامتر برای ارسال آدرس سورس ربات استفاده میشه و حتما هم باید دارای گواهی ssl یا به زبان ساده پروتکل https برای این آدرس فعال باشه.allowed_updates :این پارامتر هم قبلا در مستندات ربات تلگرام : وبهوک و دریافت بروزرسانی باهاش آشنا شده اید , کارکرد این پارامتر مانند پارامتر متد getUpdates می باشد.متد بعدی که میخوام درموردش توضیح بدم متد deleteWebhook می باشد.کار این متد اینه که وبهوک فعلی رو حذف می کنه , وبهوکی رو که با متد setWebhook ست کرده اید رو حذف و نحوه دریافت آپدیت هارو به متد getUpdates  سوئیچ میکنه.متد بعدی متد getWebhookInfo ء کار این متد اینه که اطلاعات وبهوک جاری رو در صورت ست بودن نمایش میده , خروجی این متد شامل ,max_connections,allowed_updates,url,pending_update_count,last_error_date,last_error_message می باشد که مهم ترین هاشو در متن زیر توضیح میدم :pending_update_count:یکی از مهم ترین خروجی این متد , این پارامتر می باشد که وقتی تلگرام نتونه ارتباط درستی رو با آدرس سورس پیدا کنه درخواست هارو ذخیره میکنه تا بعدا دوباره ارسال کنه, تعداد موجود در این پارامتر تعداد درخواست های فریز شدست یعنی همون درخواست هایی رو که در زمان وقوع مشکل ذخیره کرده تا بعدا بفرسته.last_error_date:این خروجی زمان آخرین خطا در ارتباط با ربات رو نمایش میدهlast_error_message:این خروجی آخرین پیام خطا در ارتباط با ربات رو نمایش میدهallowed_updates:اینم که احتمالا آشنایی دارید , در ست وبهوک اگه مقداری تنظیم کرده باشید اون مقدار رو برمیگردونه.امیدوارم این مطلب هم برای شما مفید بوده باشه.پست های مرتبط :آموزش ساخت ربات تلگراممستندات ربات تلگرام : وبهوک و دریافت بروزرسانیمستندات ربات تلگرام : متد getUpdates</description>
                <category>alireza</category>
                <author>alireza</author>
                <pubDate>Fri, 31 Jan 2020 12:14:12 +0330</pubDate>
            </item>
                    <item>
                <title>مستندات ربات تلگرام : متد getUpdates</title>
                <link>https://virgool.io/TelegramApi/telegramapi-3-oijbaqlabea1</link>
                <description>همانطور که در پست های قبل گفته شد, این متد برای دریافت آپدیت های ربات استفاده میشه.با هربار ارسال درخواست با متد getUpdates به تلگرام شما یک آرایه دریافت می کنید.این آرایه شامل تمامی بروز رسانی های دریافت شده ربات می باشد مانند اطلاعات فایل ها,اطلاعات چتی که این آپدیت ارسال شده و... که مهم ترین بخش این آرایه update_id می باشد که در ادامه درمورد اهمیت این پارامتر اطلاعات بیشتری کسب  خواهید کرد.همانطور که اگه به مستند های تلگرام سر زده باشید , این متد 4 پارامتر اختیاری داره ( به ستون Required دقت کنید , Optional به معنی اختیاری می باشد) که در زیر ما به توضیح اونها می پردازیم :offset:مقداری که این پارامتر میگیره (در ستون Type تعیین شده) یک عدد صحیح هستش , اگر داده ای به این پارامتر ارسال کنید, آپدیت هارو از داده ی ارسالی به بعد دریافت خواهید کرد.اما ما باید چه دادی برای این پارامتر ارسال کنیم؟ طبق توضیحات خود تلگرام شما باید update_id آپدیتی که میخواهید آپدیت های بعد از آن نمایش داده بشه رو ارسال کنید.یعنی اگه آپدیت ایدی ما 1 تا 456 باشه  ما ایدی 100 رو ارسال کنیم خروجی از آپدیت 100 تا 456 خواهد بود و آپدیت های قبلی منسوخ خواهد شد.limit:به طور ساده با ارسال یک عدد صحیح به این پارامتر تعیین می کنیم چه تعداد خروجی برای ما نمایش بده و عددی که میگیره حتما باید بین 1 تا 100 باشه , به طور پیشفرض این عدد روی 100 می باشد.برای مثال اگه من عدد 20 رو ارسال کنم خروجی من 20 تا آپدیت می باشد.timeout:مدت زمانی است که منتظر درخواست میمونهallowed_updates:با استفاده از این پارامتر تعیین می کنید که چه آپدیت هایی را دریافت کنید.برای ارسال اطلاعات به این پارامتر میتونید به دو شکل آرایه و استرینگ اطلاعات رو پاس بدید ولی دقت کنید اطلاعات شما باید به صورت json باشهمنظور ما از چه اپدیت هایی پارامتر های Update دریافتی می باشد  که شامل message , edited_message و.. می شود که ما تعیین می کنیم کدوم از اینهارا میخواهیم دریافت کنیم.ما به طور پیشفرض تمامی آپدیت هارو دریافت می کنیم.امیدوارم از این مطلب بهره برده باشید اگه سوالی داشتید توی کامنت ها یا از این لینک در تلگرام سوالتونو مطرح کنید.موفق باشید.پست های مرتبط :آموزش ساخت ربات تلگرام مستندات ربات تلگرام : وبهوک و دریافت بروزرسانیمستندات ربات تلگرام : متد های setWebhook ,deleteWebhook,getWebhookInfo</description>
                <category>alireza</category>
                <author>alireza</author>
                <pubDate>Wed, 29 Jan 2020 10:39:03 +0330</pubDate>
            </item>
                    <item>
                <title>مستندات ربات تلگرام : وبهوک و دریافت بروزرسانی</title>
                <link>https://virgool.io/TelegramApi/telegramapi-2-wfzcj4qruwan</link>
                <description>نکته : برای خواندن قسمت قبل ( آموزش ساخت ربات تلگرام ) روی نوشته کلیک کنید.اگه تازه کار باشید و پست قبلی بنده رو خونده باشید حتما براتون سوال پیش اومده , خب ربات رو ساختیم , چرا کار نمی کنه ؟ دلیلش اینه که شما فقط یک ربات خام رو ساختید.برای اینکه بتونید داده هارو پردازش و دستوراتی رو ارسال و دریافت کنید یا باید برنامه نویسی کنید یا از سرویس های ربات ساز استفاده کنید.از اونجایی که مطلب ما درمورد برنامه نویسی هستش پس درمورد ربات ساز توضیحی نمی دیم.برای اینکه کاربر از ربات ما جوابی دریافت کنه , نیاز داریم داده ارسالی توسط کاربر رو دریافت کنیم.تلگرام دو راه رو برای دریافت آپدیت(بخونید داده) برای ما پیشنهاد کرده. یکی getUpdates هست و یکی وبهوک (Webhook) حالا چه فرقی باهم دارن ؟در getUpdates شما باید هربار یک درخواست ارسال کنید تا آپدیت هارو دریافت کنید و خروجی اون یک آرایه به صورت json می باشد مانند تصویر :(پارامترهای تصویر رو در آخر توضیح میدم)در تصویر بالا من از قبل چند متن برای ربات ارسال کردم و با استفاده از یک درخواست پیام هارو دریافت کردم. همانطور که می بینید result در تصویر بالا 5 آرایه داره که پیام های ربات هستند و من یکی از پیام هارو برای شما به نمایش گذاشتم.اما وبهوک چیه ؟ در روش وبهوک , ما یک آدرس رو برای تلگرام ارسال می کنیم که آپدیت هارو به اون بفرسته.هروقت کاربری متن و سایر پیام هارا به ربات ارسال میکنه دیگه نیاز نیست ما هربار یک درخواست به تلگرام ارسال کنیم.تلگرام خودش برطبق آدرسی که ما تعیین کردیم آپدیت هارو میفرسته.چه داده هایی برای ما ارسال میشه ؟این داده ها(پارامترها) در وبهوک و getupdate یکیه و به صورت json برای ما ارسال خواهد شد.برای مشاهده پارامتر هایی که برای ما ارسال میشن به لینک https://core.telegram.org/bots/api#update سر بزنید.در ادامه برخی از فیلدهایی که دریافت می کنیم رو براتون توضیح دادم.update_id:این پارامتر یک شناسه غیرتکراری و عدد صحیح برای هر آپدیت هستش message:این پارامتر اطلاعات پیام مانند متن,ایدی کاربر و.. نمایش میدهedited_message:موقعی که یک پیام ویرایش بشه این پارامتر ارسال میشه.channel_post:موقعی که یک پیام در کانال ارسال بشه این پارامتر ارسال میشه.edited_channel_post:موقعی که یک پیام در کانال ویرایش بشه این پارامتر ارسال میشهinline_query:موقعی که درخواست به صورت اینلاین ارسال بشه این پارامتر برای شما فرستاده خواهد شد.callback_query:موقعی که روی دکمه شیشه ای ضربه ای زده بشه این پارامتر برای شما ارسال خواهد شد.poll:هروقت پیامی نظرسنجی باشه این پارامتر برای شما ارسال میشهpoll_answer:پاسخ های نظرسنجی هستش.نحوه کار با متد های تلگرام برای ارسال درخواست به تلگرام مانند توضیحی که خود تلگرام داده : https://core.telegram.org/bots/api#making-requests ساختار کلی درخواست به شکل :https://api.telegram.org/bot&lt;token&gt;/METHOD_NAMEهستش که به جای &lt;token&gt; توکن خودمان و به جای METHOD_NAME نام متد رو قرار میدیم.برای مشاهده متد های تلگرام به آدرس https://core.telegram.org/bots/api#available-methods سر بزنید.یکی از نمونه متدی که در این مطلب بااون آشنا  شدید متد getupdate هستش که شکل درخواست این متد مانند شکل زیر هست :https://api.telegram.org/bot&lt;token&gt;/getupdateهرمتد هم شامل پارامتر هایی هست که یا اجباری هستند یا اختیاری یعنی اینکه اگر اجباری بود باید اون پارامتر رو ارسال کنید.در پست های بعدی درمورد هر متد توضیح خواهم داد.پست های مرتبط : آموزش ساخت ربات تلگرام مستندات ربات تلگرام : متد getUpdatesمستندات ربات تلگرام : متد های setWebhook ,deleteWebhook,getWebhookInfo</description>
                <category>alireza</category>
                <author>alireza</author>
                <pubDate>Mon, 27 Jan 2020 14:13:38 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش ساخت ربات تلگرام</title>
                <link>https://virgool.io/TelegramApi/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B3%D8%A7%D8%AE%D8%AA-%D8%B1%D8%A8%D8%A7%D8%AA-%D8%AA%D9%84%DA%AF%D8%B1%D8%A7%D9%85-qbchtae0osrx</link>
                <description>با سلام خدمت دوستان , میدونم این نمونه پست زیاد وجود داره اما بنده بر طبق انتشارات میخوام پیش برم پس در اولین قدم باید به مخاطب یاد بدم چطور یک ربات بسازه.برای ساخت ربات ابتدا به @botfather برید .بعد از استارت کردن ربات دستور /newbot رو ارسال کنیدبعد از دیدن متن در عکس بالا یک متن برای عنوان رباتتون ارسال کنید.بعد از ارسال متن عنوان ربات , نوبت ارسال یک متن برای نام کاربری رباته.دقت کنید آخر متن شما باید کلمه bot نوشته شده باشه و اینکه حتما متن شما به صورت انگلیسی باشهاگه مراحل رو درست انجام داده باشید یک متن مانند متن بالا برای شما ارسال خواهد شد.در این متن توکنی برای کار با ربات برای شما ارسال میشه که باید مواظب باشید توکن شما به دست کسی نیوفته.برخی از دستورات بات فادر :/mybots :برای دریافت لیست ربات ها و مدیریت آن ها استفاده میشه./mygames:لیست بازی ها و مدیریت آنها استفاده میشه/token :برای دریافت توکن یک ربات استفاده میشه/revoke :برای ساخت توکن جدید یک ربات استفاده میشه/setname :برای قرار دادن نام جدید استفاده میشه/setdescription:برای قراردادن توضیحات ربات استفاده میشه/setabouttext:برای قراردادن توضیحات در پروفایل ربات استفاده میشه/setuserpic:برای قرار دادن عکس پروفایل استفاده میشه/setinline :برای فعال کردن حالت اینلاین استفاده میشه , اگه به ربات هایی مانند like دقت کرده باشید موقع ارسال نظرسنجی در یک چت اول ایدی اون ربات تایپ میشه بعد یک متن که ربات شروع به جستجو میکنه , با فعال کردن حالت اینلاین شما میتونید از این حالت استفاده کنید./setinlinegeo :اگه درست درمورد این دستور خونده باشم هنگام ارسال درخواست اینلاین میتونید لوکیشن یا مکان کاربر را درخواست کنید/setinlinefeedback:با فعال کردن فیدبک میتونید هنگام ارسال یک نتیجه در حالت اینلاین اون نتیجه رو مشاهده کنید./setcommands:برای ساخت دستور استفاده میشه/setjoingroups:با ارسال این دستور انتخاب می کنید که کاربران می توانند ربات رو به گروه اضافه کنند یا خیر/setdomain:برای ست کردن یک آدرس اینترنتی به ربات استفاده میشه, این دستور برای ساخت ورود از طریق تلگرام کاربرد داره./setprivacy:با ارسال این دستور انتخاب می کنید ربات میتونه پیام های گروه رو بخونه یا خیر/deletebotاین دستور برای حذف یک ربات استفاده میشه.امیدوارم از این مطلب بهره برده باشید , اگه سوالی داشتید کامنت کنید یا اگه خواستید از طریق تلگرام پیام بدید روی این (متن) کلیک کنیددر پست های بعدی درمورد مستندات تلگرام توضیحاتی رو براتون می نویسمپست های مرتبط :مستندات ربات تلگرام : وبهوک و دریافت بروزرسانیمستندات ربات تلگرام : متد getUpdatesمستندات ربات تلگرام : متد های setWebhook ,deleteWebhook,getWebhookInfo</description>
                <category>alireza</category>
                <author>alireza</author>
                <pubDate>Mon, 27 Jan 2020 10:43:08 +0330</pubDate>
            </item>
            </channel>
</rss>