انجمن برنامه نویسان البرز

تبلیغات

ساخت ربات تلگرام در سی شارپ – بخش اول

ساخت ربات تلگرام در سی شارپ – بخش اول


شما میتوانید به سادگی از طریق سی شارپ، اقدام به ساخت یک ربات تلگرام کنید. ربات های تلگرام، اکانت های کاربری ای هستند که توسط نرم افزارها کنترل میشوند. این ربات ها قادر هستند دستورات کاربران را تجزیه و تحلیل کنند و بر اساس آنها عملیاتی را انجام بدهند. در رابطه با ربات های تلگرام، باورهای غلطی در بین مردم وجود دارد. باید این نکته را بدانید که:

ربات ها ابدا قادر به هک کردن گوشی و اطلاعات شخصی شما نیستند و هیچ گونه دسترسی ای به گالری و چت های شما ندارند

بسیار خوب. بهتر است به سراغ آموزش ساخت ربات تلگرام در سی شارپ برویم. این آموزش از دو بخش تشکیل میشود:

۱- قسمت مربوط به ربات در نرم افزار تلگرام

۲- قسمت مربوط به مغز ربات در سی شارپ

تمام ربات ها یک ساز و کار مشابه دارند. به اینترتیب که وقتی یک کاربر، پیامی به یک ربات مینویسد، آن پیام در سرور تلگرام ذخیره میشود. برنامه سی شارپ این پیغام های ذخیره شده را میخواند و بر اساس متن آنها تصمیم گیری میکند. پس اگر مغز یک ربات تلگرام را در یک جمله خلاصه کنیم، یک برنامه است که بر اساس تعدادی ورودی، خروجی مناسب میدهد.

و اما چطور باید پیغام های ذخیره شده در سرور تلگرام را بخوانیم؟ تلگرام برای این کار تعدادی وب سرویس مبتنی بر پروتکل rest در اختیار کاربران قرار داده است که میتوانید از آن استفاده کنید. اما ما در آموزش هایمان از یک کتابخانه کمکی استفاده خواهیم کرد که در جلسه بعدی این آموزش، آنرا معرفی میکنیم. در این جلسه شما را با قسمت تلگرامی ربات آشنا خواهیم کرد.

برای شروع ساخت ربات خودتان، ویدیوی زیر را تماشا کنید:




کلمات کلیدی :

نظر بدهید

50 دیدگاه برای “ساخت ربات تلگرام در سی شارپ – بخش اول

  • مجید انتظاریان گفته
    4 جولای 17

    باسلام
    ممنون از اموزشتون ولی من وقتی میخوام api رو اضافه کنم به پروژه خطای زیر رو دریافت میکنم:

    Attempting to resolve dependency ‘Microsoft.AspNet.WebApi.Client (≥ ۵٫۲٫۳)’.
    Specified argument was out of the range of valid values.
    Parameter name: supportedFrameworks

    لطفا راهنمایی کنین
    ممنون

    • علیرضا صبوئی گفته
      4 جولای 17

      دوست خوبم از چه ورژنی از ویژوال استودیو استفاده میکنید؟

      • ناشناس گفته
        4 جولای 17

        ورژن ۲۰۱۲

  • سید مرتضی گفته
    4 جولای 17

    قسمت ۴ چه زمانی منتشر میشه؟؟؟

  • عباس گفته
    4 جولای 17

    سلام وققتون بخیر
    ممنون بابت ویدئو بسیار جامع و کامل تون
    سوال از خدمتتون داشتم
    هنگام نصب Telegram.Bot بوسیله ناگت با این پیغام دریافت می کنم
    Installing ‘Telegram.Bot 13.2.1’.
    Successfully installed ‘Telegram.Bot 13.2.1’.
    Adding ‘Telegram.Bot 13.2.1’ to test123.
    Uninstalling ‘Telegram.Bot 13.2.1’.
    Successfully uninstalled ‘Telegram.Bot 13.2.1’.
    Install failed. Rolling back…
    Could not install package ‘Telegram.Bot 13.2.1’. You are trying to install this package into a project that targets ‘.NETFramework,Version=v4.5’, but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.
    چیکار کنم
    من از ۲۰۱۲ استفاده میکنم
    با تشکر

    • علیرضا صبوئی گفته
      4 جولای 17

      سلام دوست عزیز. با توجه به ورژنی که شما استفاده میکنید، ورژن فریم وورک شما کمی قدیمی تره. سعی کنید به جای نسخه ۱۳٫۲٫۱ که در حال نصبش هستید، نسخه های پایین ترشو از منوی نصبش انتخاب کنید و ببینید که نصب میشه یا خیر

  • بابک گفته
    4 جولای 17

    سلام
    قبل از هر چیز بابت این ویدئوهای بسیار سودمندتون متشکرم. اگر امکانش هست یه سوالی داشتم در این خصوص که فرض بفرمایید من سوالی از کاربر میکنم و باید منتظر پاسخ اون باشم تا روی اون پاسخ عملیاتی انجام بدم این انتظار چطوری باید کد نویسی بشه. مثلا یک ماشین حساب رو در نظر بگیرید . متشکرم

    • علیرضا صبوئی گفته
      4 جولای 17

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

  • محمد رضا گفته
    4 جولای 17

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

    • علیرضا صبوئی گفته
      4 جولای 17

      سلام دوست خوبم. ببینید کتابخانه آقای مولر در قسمت Types یکسری کلاس دارد که یکی از آنها مربوط به نوع تصویر است. بعد از اینکه از کلاس مربوط به این نوع یک نمونه ساختید و stream تصویر را در آن قرار دادید، bot.sendImage کنید.

  • علیرضا رمضانی گفته
    4 جولای 17

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

    • علیرضا صبوئی گفته
      4 جولای 17

      دوست عزیز احتمالا به این علت هستش که دستورات این کتابخانه Async هستند. یعنی به طور غیر همزمان اجرا میشوند. برای اینکه بتوانید آنها را همزمان کنید باید بعد ازهر ارسال، منتظر بمانید تا ارسال کامل شود. از دستور await قبل از هر ارسال استفاده کنید
      await bot.sendtext…

  • مجتبی گفته
    4 جولای 17

    سلام
    من رباتی بصورت اینلاین باتن کارکردم، در بخشی از برنامه نیاز هست که دکمه “بعدی” و “قبلی” برای مشاهده اطلاعات زده بشه، تکرار ایم موضوع باعث میشه که خطای ۴۲۹ را برگردانده و کاربر مورد نظر را چند دقیقه معلق نگه دارد.
    لطفا راهنمایی کنید که چه باید کنم برای حل شدن این موضوع.

    • علیرضا صبوئی گفته
      4 جولای 17

      مجتبی عزیز من نمیدانم که منطق کد شما به چه شکلی است.

  • مححمد گفته
    4 جولای 17

    سلام. ممنون از آموزشهای خوبتون
    با این api میشه رباتی ساخت که برای یک کانال متن ارسال کنه؟
    ممنون میشم راهنمایی نمایید

    • علیرضا صبوئی گفته
      4 جولای 17

      بله دوست عزیز. امکانپذیره. ربات باید در کانال ادمین باشه و با متد SendTextMessageAsync میتونید کار کنید. در این کتابخونه در قسمت Types یک کلاس هست به اسم ChatID
      یک نمونه از اون بسازید و username کانال رو بهش بدید و این ChatID رو در متد SendTextMessageAsync استفاده کنید.

      • محمد گفته
        4 جولای 17

        ممنون . درست شد

  • مجتبی گفته
    4 جولای 17

    راهی برای Clear History کردن صفحه ای که رابط کاربر و ربات هست وجود داره؟
    یعنی تمامی پیامهایی که کاربر ارسال کرده و پیامهایی که ربات به کاربر فرستاده است، یکجا حذف بشه.

    • علیرضا صبوئی گفته
      4 جولای 17

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

  • محمد گفته
    4 جولای 17

    با سلام.
    پس از کلیک کردن دکمه توسط کاربر چگونه می توان کیبورد را هاید یا دیسیبل نمود؟
    تشکر

    • علیرضا صبوئی گفته
      4 جولای 17

      یک راه ساده میتواند bot.EditMessage باشد. همینطور بعد از کلیک شدن کیبورد، میتوانید یک مسیج با یک کیبورد خالی بفرستید

  • مجتبی گفته
    4 جولای 17

    سلام
    من با c# win app برنامه نوشتم و گاهابه پیام زیر بر میخورم :
    The underlying connection was closed: A connection that was expected to be kept alive was closed by the server.
    باید چه کنم؟

    • علیرضا صبوئی گفته
      4 جولای 17

      دوست عزیز استنباطم اینه که دیتابیس شما بر روی یک سرور وجود داره. درسته؟

      • مجتبی گفته
        4 جولای 17

        محل دیتابیس و اپلیکیشن از هم جداست

      • مجتبی گفته
        4 جولای 17

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

        • علیرضا صبوئی گفته
          4 جولای 17

          به احتمال خیلی زیاد از تنظیمات سرورتونه که connection استندبای شده رو میبنده

  • مسعود گفته
    4 جولای 17

    سلام ممنون از آموزش های عالی تون میشه با ربات یکی از پست های داخل کانال را فوروارد کرد بدون اینکه اسم کانال بالای پست باشه؟
    و اینکه میشه کپشن طولانی و پایینش عکسی باشه بدون این که آدرس عکس در متن باشه؟
    و دیگری چطور میشه با ربات زیر عکس کپشن کوتاه الصاق کرد؟

    • علیرضا صبوئی گفته
      4 جولای 17

      مسعود جان اولیش خیر
      دومیشو متوجه نشدم
      سومیش bot.sendPicture یا sendImage بود که یه آرگومان ورودیش، کپشنه

  • Mahdi گفته
    4 جولای 17

    من میخوام با گوشی telegram bot api رو دانلود کنم بعد رو کامپیوتر نصب کنم راهنماییم کنید که چکار کنم

    • علیرضا صبوئی گفته
      4 جولای 17

      من متوجه منظورتون نشدم متاسفانه

  • saber گفته
    4 جولای 17

    با سلام:
    آقای صبوئی چطور میشه از inlineKeyboardButton مثل keyBoardButton ها شئ ساخت .مثلا با حلقه های for تعداد دلخواهی رو بدون دستی تعریف کردن inlineKeyboardButton ساخت؟

    • علیرضا صبوئی گفته
      4 جولای 17

      روشش دقیییقا یکسانه

  • عیسی کریمی گفته
    4 جولای 17

    با سلام
    اگه ما چندین ربات داشته باشیم و بخواهیم برای همشون یک کلاس بنویسیم (ربات ها به صورت داینامیک اضافه میشن) اون موقع چیکار باید کرد که نیاز به کلاس های جداگانه نداشته باشیم
    ممنون از آموزش های خوبتون

    • علیرضا صبوئی گفته
      4 جولای 17

      باید یک جنریک لیست از ربات ها بسازید

  • الهه گفته
    4 جولای 17

    سلام من کتابخانه آفای مولر رو پیدا نمیکنم میشه منو راهنمایی کنید؟؟ ورژن ویژوال استادیو من ۲۰۱۵ است

  • طاها دوستی فام گفته
    4 جولای 17

    سلام کسی می دونه چطور می تونم پیامی رو که کاربر میده حذف کنم؟
    خواهش می کنم کمکم کنید
    تلگرام : @Thv_Programmer

  • golkari گفته
    4 جولای 17

    سلام.. وقتتون بخیر رباتی که نوشته بودم و کار می کرد و اکی بود،اما حالا دیگه کار نمیکنه.. مرسی.. راهنمایی بفرمایید لطفا.. و این رباتی هم که آموزش دادین کار نمی کنه..

    • علیرضا صبوئی گفته
      4 جولای 17

      سلام. روزتون به خیر. چون از زمان آموزش تا امروز، کدهای کتابخانه مولر تغییر کرده. هر جاییش که به ارور خورده، کد رو بررسی کنید.

  • اسی گفته
    4 جولای 17

    سلام ممنون از شما من بخوام یک ربات ضدلینک بسازم باید چیکار کنم

    • علیرضا صبوئی گفته
      4 جولای 17

      دوست عزیز تمام آموزش های رباترو ببینید. به جواب میرسید

  • reymah گفته
    4 جولای 17

    سلام. من از ورژن ۲۰۱۳ استفاده میکنم، و برای نصب همه کتابخانه های nuget این ارور رو میگیرم:
    Installing ‘Telegram.Bot 13.2.1’.
    Successfully installed ‘Telegram.Bot 13.2.1’.
    Adding ‘Telegram.Bot 13.2.1’ to test123.
    Uninstalling ‘Telegram.Bot 13.2.1’.
    Successfully uninstalled ‘Telegram.Bot 13.2.1’.
    Install failed. Rolling back…
    Could not install package ‘Telegram.Bot 13.2.1’. You are trying to install this package into a project that targets ‘.NETFramework,Version=v4.5’, but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package autho

    توی یکی از کامنت هاتون گفته بودید اگر ورژن پایین تر کتابخانه ای که نصب میکنم رو استفاده میکنم درست میشه ولی متاسفانه نشد!
    به نظرتون اگر از vs 2017 استفاده کنم مشکلم حل میشه؟

    • علیرضا صبوئی گفته
      4 جولای 17

      احتمال داره مشکل از ویژوال شما باشه. وقتی که میخواین پکیجو نصب کنید، ۲ مورد رو چک کنید:
      ۱٫ ورژن دات نت فریم وورک مورد نیاز کتابخونه چنده
      ۲٫ ورژن دات نت پروژه شما چنده

  • رقیه گفته
    4 جولای 17

    سلام خسته نباشید
    هنگام نصب Telegram.Bot بوسیله ناگت با این پیغام دریافت می کنم :
    Attempting to resolve dependency ‘Newtonsoft.Json (≥ ۱۱٫۰٫۲)’.
    ‘Newtonsoft.Json’ already has a dependency defined for ‘Microsoft.CSharp’.
    مشکل از چی هست؟

    • علیرضا صبوئی گفته
      4 جولای 17

      رقیه عزیز باید پکسج Microsoft.Csharp رو هم نصب کنید

  • M.M گفته
    4 جولای 17

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

  • میلاد گفته
    4 جولای 17

    سلام من بابت این ویدیو خیلی متشکرم ممنون که وقت میذارین ولی یه سوال دارم برای ساختن ربات باید تلگرام روی سیستم نصب شده باشد تا بتوانیم مغز ربات طراحی کنیم یا لزومی ندارد ربات با گوشی بسازیم و مغز ربات داخل سیستم طراحی کنیم متشکر که جواب بدین

  • علی گفته
    4 جولای 17

    سلام

  • matin گفته
    4 جولای 17

    سلام خدمت مدرس عزیز
    من همه ی کد ها رو قدم به قدم نوشتم اما توی محیط کنسول هیچ پیامی دریافت نمیکنم (قسمت دوم)
    ممنون میشم کمکم کنید

  • حسین گفته
    4 جولای 17

    چجوری برم جلسه ی بعدی؟

$(document).ready(function(){ $('#owl_carousel_1').owlCarousel({ rtl:true, loop:true, margin:30, autoplay:true, autoplayTimeout:4000, autoplayHoverPause:true, navText: ['',''], nav:true, responsive:{ 0:{ items:1 }, 600:{ items:3 }, 1000:{ items:1 } } }) $('#owl_carousel_2').owlCarousel({ rtl:true, loop:true, margin:30, autoplay:true, autoplayTimeout:2000, autoplayHoverPause:true, responsive:{ 0:{ items:1 }, 600:{ items:3 }, 1000:{ items:4 } } }) hljs.initHighlightingOnLoad(); e.preventDefault(); $('html,body').animate({ scrollTop:$('.post_comments').offset().top}, 'slow'); });