<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های محمد زرچی</title><link>https://virgool.ir/feed/@ZarchiMohammad</link><description>/home/project/python/</description><language>fa</language><pubDate>2026-11-11 06:31:25</pubDate><image><url>https://files.virgool.ir/upload/users/1348152/avatar/2IaOnN.jpeg</url><title>محمد زرچی</title><link>https://virgool.ir/@ZarchiMohammad</link></image><item><title>ساخت تلگرام غیررسمی با Telethon، قسمت ۳</title><link>https://virgool.ir/@ZarchiMohammad/ساخت-تلگرام-غیررسمی-با-telethon-قسمت-۳-yqjithso1tku</link><description>در قسمت قبل یادگرفتیم که چطور به تلگرامی که ساختیم لاگین بشیم، در این قسمت میخوایم یاد بگیریم که چطور پیام‌هایی که برامون میاد رو در محیط کنسول مشاهده کنیم.خب برای شروع ابتدا کدشو مینویسم و بعد به توضیحش میپردازم:from telethon.sync import TelegramClient, events&#xA;with TelegramClient(&#39;account&#39;, c.api_id, c.api_hash) as client:&#xA;خب در خط اول importهای لازم رو انجام دادیم و سپس از کلاس TelegramClient یک نمونه client ساختیم، حالا باید از متدهای از پیش تعریف شده این کلاس جهت دریافت پیام‌های ورودی استفاده کنیم.@client.on(events.NewMessage(pattern=&#39;سلام&#39;))پارامترهای ورودی به این شکل است که از کلاس events متد NewMessage رو بهش میدیم، دقت کن که این متد یک ورودی میخواد، همونطور که میبینی، اینجا پارامتر pattern به کلاس داده شده.اما این پارامتر برای چیست؟ اگر این کد رو همین جور که نوشتم اجرا کنی، هرپیام که &#34;سلام&#34; باشه، به کنسول هدایت میشه، دقت کن هر پیامی که فقط &#34;سلام&#34; باشه نه هرپیامی که حاوی سلام باشه، نکته‌ی حائز اهمیت که گفتنش مفیده، اینه که شما میتونید از الگوهای regex هم استفاده کنید مثل کد زیر:@client.on(events.NewMessage(pattern=&#39;(?i).*&#39;))در این مثال کلاینت ما تمام پیام‌هایی که بهش ارسال شده رو در خروجی نمایش میده البته هنوز کد ادامه هم داره (ツ) بریم سروقت ادامش!برای اینکه بتونیم پیام‌ها رو ببینیم باید event رو هندل کنیم و عملیات‌های لازم رو مانند کد زیر روش انجام بدیم:async def handler(event):&#xA;    try:&#xA;        msg = f&#34;ChatId: {event.peer_id.user_id} \n&#34;&#xA;        msg += f&#34;Text: {event.message.message}&#34;&#xA;        print(msg)&#xA;    except:&#xA;        print(&#34;Chat is not contact!&#34;)در این مثال من فقط تصمیم دارم پیام‌هایی که از افراد میاد رو بخونم(به اصطلاح contacts و non-contacts) و فقط به user_id و متن اونا نیاز دارم، دقت کنید که اینجا event نقش یک ساختمان داده در واقع یک list هستش و تمام اطلاعاتی که مربوط به فرستنده است داخلش قرار گرفته که در کل دارای چنین عناصریست:NewMessage.Event(&#xA;    original_update=UpdateShortMessage(&#xA;        id=245,&#xA;        user_id=441660894, &#xA;        message=&#39;Hello&#39;, &#xA;        pts=484, &#xA;        pts_count=1, &#xA;        date=datetime.datetime(2021, 11, 29, 11, 46, 36, tzinfo=datetime.timezone.utc), &#xA;        out=False, &#xA;        mentioned=False, &#xA;        media_unread=False, &#xA;        silent=False, &#xA;        fwd_from=None, &#xA;        via_bot_id=None, &#xA;        reply_to=None, &#xA;        entities=[], &#xA;        ttl_period=None&#xA;    ), &#xA;    pattern_match=&lt;re.Match object; span=(0, 5), match=&#39;Hello&#39;&gt;, &#xA;    message=Message(&#xA;        id=245, &#xA;        peer_id=PeerUser(&#xA;            user_id=441660894&#xA;        ), &#xA;        date=datetime.datetime(2021, 11, 29, 11, 46, 36, tzinfo=datetime.timezone.utc), &#xA;        message=&#39;Hello&#39;, &#xA;        out=False, &#xA;        mentioned=False, &#xA;        media_unread=False, &#xA;        silent=False, &#xA;        post=None, &#xA;        from_scheduled=None, &#xA;        legacy=None, &#xA;        edit_hide=None, &#xA;        pinned=None, &#xA;        from_id=PeerUser(&#xA;            user_id=441660894&#xA;        ), &#xA;        fwd_from=None, &#xA;        via_bot_id=None, &#xA;        reply_to=None, &#xA;        media=None, &#xA;        reply_markup=None, &#xA;        entities=[], &#xA;        views=None, &#xA;        forwards=None, &#xA;        replies=None, &#xA;        edit_date=None, &#xA;        post_author=None, &#xA;        grouped_id=None, &#xA;        restriction_reason=[], &#xA;        ttl_period=None&#xA;    )&#xA;)خب برنامه ما آمادست اما باید این برنامه متوقف نشه تا زمانی که خودمون بخوایم، پس برای اجرای خودکار و بدون توقف خط زیر رو به کدمون اضافه میکنیم:client.run_until_disconnected()حالا ما برنامه‌ای داریم که هرموقع کاربری پیام &#34;سلام&#34; یا هرپیامی رو برامون بفرسته، user_id و متن پیام رو بهمون نشون میده، نمای کلی کد (دریافت هرنوع پیامی):from telethon.sync import TelegramClient, events&#xA;&#xA;with TelegramClient(&#39;account&#39;, c.api_id, c.api_hash) as client:&#xA;    print(&#34;Start ..&#34;)&#xA;&#xA;    @client.on(events.NewMessage(pattern=&#39;(?i).*&#39;))&#xA;    async def handler(event):&#xA;        try:&#xA;             msg = &#34;\n&#34;&#xA;             msg += f&#34;ChatId: {event.peer_id.user_id} \n&#34;&#xA;             msg += f&#34;Text: {event.message.message}&#34;&#xA;             print(msg)&#xA;         except:&#xA;             print(&#34;Chat is not contact!&#34;)&#xA;&#xA;    client.run_until_disconnected()پیروز و شاد باشید، پایان قسمت ۳  (ツ)قسمت‌های قبل:قسمت ۱ - دریافت دسترسی از تلگرامقسمت ۲ - لاگین شدن به برنامه</description><category>محمد زرچی</category><author>محمد زرچی</author><pubDate>Mon, 29 Nov 2021 16:45:12 +0330</pubDate></item><item><title>ساخت تلگرام غیررسمی با Telethon، قسمت ۲</title><link>https://virgool.ir/@ZarchiMohammad/ساخت-تلگرام-غیررسمی-با-telethon-pq21xxkogcxn</link><description>در قسمت قبل یاد گرفتیم که چطور از تلگرام دسترسی بگیریم، حالا میخوایم از دسترسی که داریم استفاده کنیم و بتونیم به تلگرام با شماره خودمون لاگین بشیم و یک session فعال داخل حساب تلگراممون داشته باشیم.بدلیل اینکه ما با لایبری Telethon پایتون کار می‌کنیم، اولین قدم نصب این لایبری روی سیستم است که برای انجامش هم میتونیم از طریق کد زیر داخل cmd به راحتی این لایبری رو نصب کنیم:pip install Telethonبعد از نصب کامل این لایبری، میریم سروقت کدنویسی اولین فایل بنام UserLogin.py، خب برای شروع ابتدا باید پکیج‌های لازم رو import کنیم:import telethon&#xA;from telethon.sync import TelegramClientدر این فایل telethon را جهت مدیریت خطا جهت اتصال به حساب و TelegramClient را جهت اتصال به حساب و استفاده از متدهای کلاس import کردیم، در مرحله بعد باید طبق مثال زیر یک نمونه از کلاس TelegramClient بسازیم:client = TelegramClient(&#39;account&#39;, api_id, api_hash)همانطور که مشاهده می‌کنی، پارامترهای ضروری که برای ساخت یک نمونه نیازه به ترتیب نام‌نشست که در اینجا account نامگذاری شده، api_id و api_hash هست که به جز نام‌نشست دوپارامتر دیگر واضح است که و مقادیر دریافت شده از تلگرام رو قرار بده.اما نام‌نشست چیست؟ نامگذاری این پارامتر اختیاری است به عنوان مثال میتونی به‌جای account نام دیگه‌ای وارد کنی اما بریم سر این موضوع که این پارامتر دقیقا چه کاری رو انجام میده، در واقع با هر لاگین داخل حساب تلگرام یک فایل داخل دایرکتوری اجرای همین کد ایجاد میشه که با اجرای کدبالا این  فایل account.session هستش و تنظیمات مربوط به حساب داخلش ذخیرست، سعی کنید به هیچ وجه این فایل رو در اختیار کسی قرار ندید چون پیامدهای بعدش قابل پیش‌بینی نیست.بریم برای ادامه کار، خب الان باید به client متصل بشیم و شماره تلفن رو از کاربر بگیریم و درخواست کدتایید رو به سرور تلگرام بدیم تا برای اون شماره کدتایید ورود بفرسته.client.connect()&#xA;phone = input(&#34;Insert Your Phone: &#34;)&#xA;client.send_code_request(phone, force_sms=False)همانطور که ملاحظه میکنی به client متصل شدیم و شماره تلفن گرفتیم و درخواست کدرو به تلگرام ارسال کردیم تا اگر force_sms=True بود به کاربر کد را در قالب sms بفرسته و اگر force_sms=False بود کد رو به دیوایس‌های فعال تلگرامش بفرسته.مرحله بعد باید کدی که تلگرام برای کاربر فرستاده رو بگیریم و وارد حسابش بشیم، اما یک نکته وجود داره اونم برای کاربرایی که ورود دو مرحله‌ای رو برای حسابشون فعال کردن که اگر مدیریت خطا انجام ندیم و رمز ورود دو مرحله‌ای رو ازش نگیریم، کد ما کرش میکنه و نمیتونیم به حسابش وارد بشیم، خب برای اینکه بتونیم با موفقیت وارد حسابش بشیم طبق کد زیر پیش میریم:value = input(&#34;Insert Login Code: &#34;)&#xA;try:&#xA;    client.sign_in(phone, code=value)&#xA;except telethon.errors.SessionPasswordNeededError:&#xA;    password = input(&#34;Insert Your 2-Step Code: &#34;)&#xA;    client.sign_in(password=password)&#xA;print(&#34;Successfully Connect!&#34;)خب ما کد رو از کاربر گرفتیم و به تلگرام ارسال کردیم و در صورت داشتن ورود دومرحله‌ای، رمز رو از کاربر گرفتیم در نهایت اگر پیام Successfully Connect در خروجی چاپ شد یعنی تونستیم با موفقیت به اکانت متصل بشیم و طبق صحبت‌های بالا حالا ما فایل یک نشست‌فعال با نام account.session رو در دایرکتوری همین کد داریم، یک نکته جالب هم میتونید انجام بدید اینه که میتونی چندین حساب فعال داشته باشی فقط کافیه اسم نشست رو تغییر بدی همین، کدهای بالارو بصورت کامل میتونی اینجا ببینی:import telethon&#xA;from telethon.sync import TelegramClient&#xA;&#xA;client = TelegramClient(&#39;account&#39;, c.api_id, c.api_hash)&#xA;client.connect()&#xA;phone = input(&#34;Insert Your Phone: &#34;)&#xA;client.send_code_request(phone, force_sms=False)&#xA;value = input(&#34;Insert Login Code: &#34;)&#xA;try:&#xA;    client.sign_in(phone, code=value)&#xA;except telethon.errors.SessionPasswordNeededError:&#xA;    password = input(&#34;Insert Your 2-Step Code: &#34;)&#xA;    client.sign_in(password=password)&#xA;print(&#34;Successfully Connect!&#34;)خب اینم از متصل شدن به تلگرام، منتظر قسمت‌های بعدی باش، داستان جالب میشه :)قسمت‌های قبل:قسمت اول - دریافت دسترسی از تلگرام</description><category>محمد زرچی</category><author>محمد زرچی</author><pubDate>Wed, 24 Nov 2021 14:53:43 +0330</pubDate></item><item><title>ساخت تلگرام غیررسمی با Telethon، قسمت ۱</title><link>https://virgool.ir/@ZarchiMohammad/zarchitelethonpart01-o2ltpeypifzk</link><description>بیا تا بهت یاد بدم چطور میتونی به سادگی یک تلگرام غیررسمی با لایبری Telethon پایتون بسازی، اول از همه باید از تلگرام مجوز ساخت یک تلگرام رسمی رو دریافت کنی دقت کن قرار نیست ربات بسازیم میخوایم یک نسخه غیررسمی بسازیم که توانایی‌های جالبی داره.برای اینکه بتونی از تلگرام مجوز ساخت یک اپ جدید رو بگیری باید به سایت my.telegram.org/apps بری و بعد از وارد شدن صفحه‌ی زیر بهت نشون داده میشه:صفحه درخواست API تلگرامکه با تکمیل موارد گفته شده میتونی راحت یک دسترسی بگیری، که بعد از کلیک روی دکمه Create application صفحه‌ی زیر بهت نشون داده میشه که معنی و مفهومش اینه با موفقیت تونستی از تلگرام بله بگیری (ツ)صفحه تایید درخواست API تلگرامهمانطور که می‌بینی تلگرام کلیدهایی را بهت نمایش داده که این  کلیدها محرمانه و غیرقابل تغییرند، در واقع با استفاده از این کلیدها می‌تونی درخواست‌هاتو به سرور تلگرام ارسال کنی، پیشنهاد می‌کنم که این کلیدها مخصوصا App api_id و App api_hash را در جایی ذخیره کنی اما اگر اونا رو فراموش کردی نگران نباش با  مراجعه مجدد به این سایت می‌تونی دوباره این مقادیر را بدست بیاری، نکته حائز اهمیت که اینجا گفتنش خالی از لطف نیست مقدار فیلد Short name است،  این فیلدقابل تغییر و دقیقا همان متنیه که وقتی کاربران با نسخه که ساختی وارد تگرام میشن در قسمت session بهشون نمایش داده میشه.خب برای قسمت اول بسه، تو قسمت بعد بهت میگم چجوری باید بهش متصل شی و شروع کنی به انجام کارهای جالب کردن، فعلا ツ</description><category>محمد زرچی</category><author>محمد زرچی</author><pubDate>Mon, 22 Nov 2021 13:45:51 +0330</pubDate></item></channel></rss>