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

تبلیغات

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

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


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

از طریق Inline Keyboard شما میتوانید دکمه ها را در زیر مسیج ها ارسال کنید.

نکته مهم اینکه قبل از شروع باید ربات را آپدیت کنیم که در ویدیو، آموزش این کار را برای شما قرار داده ایم.




کلمات کلیدی :

نظر بدهید

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

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

    سلام

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

    چی شد پس؟؟

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

      دوست خوبم توی ویدیوها اشاره شد. ثبت در دیتابیس در بخش آموزش سی شارپ موجوده. از اون قسمت راحت میتونید رباتتونو به دیتابیس وصل کنید

  • Mohammad گفته
    25 جولای 17

    بسیار عالی استاد

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

      زنده باشید

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

    سلام
    واقعا ویدیوها خیلی عالی بودن
    فقط یه سوال به کیبوردها چطوری لینک یا عکس یا کیبوردهای دیگه اضافه کنیم
    مثلم وقتی botton1 رو میزنیم باز چند تعداد کلید دیگه بیاره یا بشه عکس براش اد کرد تا از دیتا بیس برداره

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

      ممنون از لطفتان دوست خوبم. زمانی که CallbackData را از یک دکمه میگیرد، میتوانید دوباره یک Message با یک Markup جدید به کاربرتان بفرستید. مثلا: یک کیبورد میفرستید به متن ‘انتخاب’ و CallBackData ‘choose’
      در صورتی که مقدار callbackdata برابر شد با choose یک کیبورد دیگر میفرستید با دو دکمه مثلا ‘دختر’ و ‘پسر’ و callbackهای boy و girll
      در صصورتی که boy برگردانده شد، SendImage میکنید. همانطور که برای فرستادن متن از SendText استفاده میکنیم، برای فرستادن تصویر میتوانیم از SendImage یا SendPircture استفاده کنیم.

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

        ممنون میشم اگه نمونه دستوریش رو برام بفرستین؟
        البته ببخشید دیر درخواست سوالمو گفتم

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

          دوست عزیزم سلام. ممنون از نمونه دستوری سورس کد هستش؟ سورس پروژه به علت آپدیت حجیم کتابخانه تلگرام آپلود نشده بود. اما تا جلسه سوم رو میتونید سورسشو دانلود کنید. کافیه به پست آموزش ساخت ربات – جلسه سوم سر بزنید دوست خوبم

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

    سلام
    ویدئو ها بسیار مفید بودند ، فقط خلا یک موضوع دیگر احساس میشود که در ویدئو خودتان اشاره کردید اما راه کاری ارائه ندادید ، اون هم این است که چطوری بفهمیم کجای کار هستیم و دیتایی که کاربر داره میفرسته مربوط به چی هست ؟ راه کاری که پیشنهاد میدین چی هست ؟
    خودم کمی فکر کردم به این نتیجه رسیدم که جدولی رو به عنوان لاگ یا مثلا تایملاین در نظر بگیریم و همه ی دستوراتی که از کاربر میاد بریزیم توی اون به همراه چت آی دی و از روی این جدول ، سپس هر وقت رشته ای دریافت کردیم با توجه به اینکه آخرین دستور در این جدول مربوط به چه چیزی بوده ، پردازش مربوطه را انجام میدهیم…
    لطفا هم راه کار خودتونو بگید هم نظرتون رو درباره راهکار بنده…(+و در صورت نیاز نکات تکمیلی)
    خیلی زیاد سپاسگذارم

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

      دوست خوبم سلام. از راهکارتان مشخص بود که یک برنامه نویس با تجربه هستید. بنده هم تا به امروز از همین روش استفاده کرده ام. به این شکل که یک جدول HIstory داشته ام که chatID و status کاربر را در آن نگه داشته ام. راه حل دیگری که میتوانید استفاده کنید (البته فقط وقتی که از inline keyboardها استفاده میکنید) استفاده از callback دیتا هست که در ویدیوها توضیح داده شده. اما نکته اینجاست که استفاده از جدول history کد را کمی کثیف میکند. برای جلوگیری از کثیف شدن کد، شاید بتوانید از یک جدول recursive استفاده کنید که در آن هر سوالی به سوال قبل و بعد خودش هم اشاره کند (این روش را هنوز به طور عملی آزمایش نکرده ام. به امید خدا در مبحث جدید قصد دارم از این روش استفاده کنم)
      در نهایت یک متد recursive خواهید داشت که با توجه به سوال فعلی (وضعیت را از جدول historyبخوانید) سوال بعدی را از جدول recursive استخراج میکند.
      نکته تکمیلی اینکه بنده در مورد این موضوع، همین امروز یک ایمیل به آقای مولر زدم و راهه حل ایشان را هم پرسیدم. به محض اینکه راه حل ایشان را دریافت کنم، بهشما هم اطلاع میدهم.
      ممنون که پیگیر سایت ما هستید.

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

    سلام
    من امروز شروع کردم با آموزش های شما یک بات تلگرام بنویسم، از روش Inline keyboard بیشتر لذت بردم اما جایی که سوال شده برام اینه که:
    وقتی شما با خود BotFather کار میکنید و کلیدهای Inline رو انتخاب میکنید دقیقا همونجا که هستید جواب رو براتون بر میگردونه و به ظاهر پیام جدیدی برای شما ارسال نمیشه و فقط پیام قبلی رو آپدیت میکنه.
    همینطور در BotFather لودینگی که نمایش داده میشه بعد از ظاهر شدن کلیدها و پاسخ جدید محو میشه در صورتی که با آموزش شما این اتفاق نمی افته.
    میشه لطفا راهنمایی کنید که دقیقا چه اتفاقی داره میافته و ما چه جوری میتونیم این حالت هارو کنترل کنیم ؟

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

    سلام مجدد :
    من از طریق کد زیر تونستم کاری که می خوام و انجام بدم .
    امید وارم برای شما هم مفید باشه .

    Bot.EditMessageTextAsync(e.CallbackQuery.Message.Chat.Id, e.CallbackQuery.Message.MessageId, “لطفا از منو زیر بخش مورد نظر خود را انتخاب نمایید :”, Telegram.Bot.Types.Enums.ParseMode.Default, false, MarkUp);
    Bot.AnswerCallbackQueryAsync(e.CallbackQuery.Id, null);

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

      دوست عزیزم. ممنون از اینکه راه حل را با دیگران به اشتراک گذاشتید. استفاده از edit message راه بسیار خوبس است که به فکر من نرسیده بود.
      با اجازه شما، من راه حلتان را کمی برای دوستان دیگری که ممکن است متوجه آن نشوند، توضیح میدهم:
      در راه حل جناب هور، ربات تلگرام به جای اینکه پاسخ یک پیام را با یک پیام جدید بدهد، پیام قبلی را ویرایش میکند.
      نکته مهمی که باید دقت داشته باشید این است که در صورتی که یک پیغام حاوی inline keyboard را ویرایش کنید و کیبوردی با همان callbackquery.data بفرستید، به یک باگ تلگرام بر میخورید. به این صورت که دکمه در حالت loading باقی میماند.
      برای حل این موضوع، جناب هور یک پیغام خالی هم فرستاده اند:
      Bot.AnswerCallbackQueryAsync(e.CallbackQuery.Id, null);
      نکته دیگر اینکه از AnswerCallbackQueryAsync میتوانید برای pop message دادن استفاده کنید.

      با تشکر از جناب هور به خاطر اشتراک این موضوع

  • میثم گفته
    25 جولای 17

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

    خب من میخوام یک رباتی بنویسم ، که اطلاعات یک فردی رو بگیره و تو پایگاه داده ذخیره کنه.
    به این صورت که : به عنوان مثال اول میپرسه شماره تماس و منتظر میشه که کاربر یه شماره تماس وارد کنه و تو پایگاه داده ذخیره میکنه ، وقتی که وارد کرد ، مینویسه نام و نام خانوادگی ، و منتظر میشه تا یک جواب بگیره و به همین ترتیب ادامه پیدا میکنه … من نمیتونم این منتظر موندنو بنویسم ، اگه میشه راهنمایی کنید ، ممنون

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

      ببینیددر واقع چیزی به اسم منتظر موندن وجود نداره. کاری که شما باید بکنید، به این صورته:
      هر باری که ربات شما به کاربر مسیج داد، توی دیتابیس، آخرین سوال رباتو هم ذخیره میکنید. به این ترتیب میدونید که در چه وضعیتی بودید دفعه آخر.
      به عنوان مثال وقتی ربات شما به کاربر پیغام میده که لطفا نام خود را وارد کنید، توی دیتابیس، آخرین استاتوس برای این chatID ذخیره میشه Name
      حالا وقتی یک مسیج از طرف کاربر بیاد، میدونید که در جواب آخرین استاتوس بوده. آخرین استاتوسو چک میکنید و میبینید که name هستش. پس چیزی که کاربر براتون فرستاده اسمشه.
      بعد شما فامیل رو میپرسید و آخرین استاتوس رو در دیتابیس به Family تغییر میدید و به همین ترتیب…

      • میثم گفته
        25 جولای 17

        درست شد ممنون

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

          زنده باشید

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

    سلام
    ورژن برنامه من ۲۰۱۲ هستش ولی وقتی میخام telegram bot api رو نصب کنم نمیشه این خطارو میده
    The schema version of ‘Telegram.Bot’ is incompatible with version 2.0.30625.9003 of NuGet. Please upgrade NuGet to the latest version from http://go.microsoft.com/fwlink/?LinkId=213942.
    رفتم nuget رو واسه ویژوال ۲۰۱۲ پیدا کردم و نصب کردم ولی بازم همون خطا رو میده
    لطفا راهنمایی کنید مرسی

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

      با سلام. دوست عزیزم متن خطای شما در این رابطه هستش که با ورژن فعلی ناگتی که دارید، نمیتونید کتابخانه تلگرامتونو نصب کنید. اول از همه امتحان کنید ببینید که آیا میتونید روی ویژوال استودیوتون آخرین ورژن ناگت رو نصب کنید؟ شما ورژن مربوط به ۲۰۱۲ رو نصب کردید. سعی کنید آخرینشو نصب کنید.

  • مرضیه گفته
    25 جولای 17

    سلام عالی وبسیار مفید
    سپاسگزارم

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

      زنده باشید. ممنون از شما که به سایت سر زدید

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

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

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

          لطف شماست دوست من. ممنون که به ما انژی میدید

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

    برای من بعد از اجرای کد روی خطی که گفته شده اگر “WWW” بود .
    توقف میکنه و System.NullReferenceException: ‘Object reference not set to an instance of an object.’
    این خطا رو اعلام میکنه.
    لطفا راهنمایی کنید.
    ممنون.

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

      دوست خوبم سلام. ممنون که پیگیر ویدیوی ما هستید.
      این مشکل احتمالا به این خاطر است که شما پیغامی غیر متنی به ربات ارسال کردید. راهش اینه که یک خط بالای خط www اضافه کنید به این شکل:
      if(string.isnulorempty(e.message.text)) return;
      در این خط ما بهربات میگیم که اگر متن پیام خالی بود، از اجرای بقیه کد، صرف نظر کنه.
      دقت کنید که من کد رو با حروف کوچک نوشتم. شما دقت کنید که به شکل درست در کدتون بنویسید.

  • عرفان گفته
    25 جولای 17

    سلام
    میخواستم ببینم آیا با استفاده از آموزش های شما میتونم ربات فروشگاهی بسازم ؟؟؟

    و اونو به درگاه بانکی وصل کنم ؟؟

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

      سلام دوست خوبم. در نوشتن ربات ها محدودیت خاصی ندارید اما متاسفانه در ایران در حال حاضر، به ربات ها ای نماد داده نمیشه.

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

    سلام آقای صبوئی
    من به یه مشکلی بر خوردم و میخواستم بدونم آخرین نسخه ای که شما از .net دارین چند هست چون شما راحت نصب میکنین نسخه جدید رو ولی من هر کاری میکنم بازم ارور میده و نصب نمیکنه من رفتم و نسخه برنامه نویسان ۴٫۵٫۲ رو گرفتم و نصب کردم و حتی انتخاب هم کردم اگه میشه یه راهنمایی بکنین

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

      سلام دوست عزیزم. اگر ممکنه یک مقدار بیشتر درباره مشکلتون توضیح میدید؟
      ۱٫ ورژن ویژوال
      ۲٫متن ارور
      ۳٫ کجا با ارور مواجه میشید

  • کوثر گفته
    25 جولای 17

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

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

      با سلام.
      ببینید روال کار بسیار ساده است. شما برای ارسال متن از دستور
      bot.SendText
      استفاده میکنید. تمامدستورات برای انواع دیگر هم در همین کتابخانه آقای مولر موجود هستند. مواردی مثل
      bot.SendAudio
      bot.SendImage
      bot.SendLocation
      و

  • کوثر گفته
    25 جولای 17

    اره سعی کردم ولی بعد وارد کردن چت آیدی وقتی میخوام فایل رو ارسال کنم نمییدونم باید چطوری فایل رو به ویژوال استادیو معرفی کنم.
    Path فایل رو ک زدم که ارور داد …
    Steam هم امتحان کردم فایده نداشت.

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

      از خود stream نمیتوانید مستقیما استفاده کنید. باید از این struct استفاده کنید:
      Telegram.Bot.Types.FileToSend f=new FileToSend(filename,streamContent);

  • thisissamadi گفته
    25 جولای 17

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

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

      ممنون دوست عزیز.
      بسیار ساده هستش:
      bot.sendImage
      bot.sendFile

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

        سلام ممنون همچی عالیه
        اگه میشه نحوهی ارسال فیلم و عکس و آموزش بدین هرکاری کردم نمیشه
        البته بگم رفرنسی ک میگین رو ادد میکنم مشکل داره
        شما در آموزشتون نشون دادین ک حجمش ۲۰۰ مگ هستش ولی من ادد کردم دیدم ۲۰۰ کیلوبایته
        راجب این مشکلمم هم توضیح بدین ممنون میشم

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

          دوست عزیزم سلام. من متوجه مشکل نشدم. لطفا بیشتر توضیح بدید

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

            سلام شما در آموزشتون نشون دادین که برا رفرنس آقای مولر آپدیت دادن و اون آپدیت حجمش زیاد بود تو فیلمی که شما نشون دادین ولی من همون آپدیت و انجام میدم حجمش فقط چند کیلو بایته

            و اینکه نحوه ی ارسال عکس و فیلمو در ربات بیشتر توضیح بدین
            چندبار امتحان کردم جواب نداد

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

    سلام استاد.خسته نباشید بنده طبق دستورات شما یک بات ساختم ولی هنگام استفاده از if (فقط)برای دیلیت کردن مسیج باگ میده System.NullReferenceException occurred
    HResult=0x80004003
    Message=Object reference not set to an instance of an object.
    Source=
    StackTrace:
    at _006BOT.Program.Bot_OnMessage(Object sender, MessageEventArgs e) in E:\d\006BOT\006BOT\Program.cs:line 36
    at Telegram.Bot.TelegramBotClient.OnUpdateReceived(UpdateEventArgs e)
    at Telegram.Bot.TelegramBotClient.d__47.MoveNext()
    لطفا راهنماییم کنید

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

    این خط کد بندس که با خطا روبه رو شده if (e.Message.Text.Contains (“www”))

    {
    bot.DeleteMessageAsync(e.Message.Chat.Id, e.Message.MessageId);
    bot.SendTextMessageAsync(e.Message.Chat.Id, “کاربر گرامی لطفا لینکی ارسال نکنید”);
    }

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

    ببخشید کپی پیست کردم بهم ریخته

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

      محمد مهدی عزیز، کد شما مشکلی ندارد. فقط یک مورد را فراموش کرده اید. کد شما برای مواقعی طراحی شده است که کاربر شما Text بفرستد. در صورتی که هر ورودی به جز Text داشته باشید، با خطا روبرو میشوید. برای کنترل این وضعیت در ابتدای کد این خط را اضافه کنید:

      
      if (e.Message.Text==null)  return;
      
  • کتایون گفته
    25 جولای 17

    سلام.
    لطف میکنید دانلود و ذخیره ی عکس ارسالی از کاربر رو هم آموزش بدید.

  • mr.zarei گفته
    25 جولای 17

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

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

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

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

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

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

      محمد عزیز یک راه فرعی و ساده تر به شما یاد میدهم. فایل MP3 را از طریق تلگرام و گوشی، به ربات بفرستید. وقتی فایل را دریافت کردید، FILEID را در دیتابیس ذخیره کنید. با این ID میتوانید توسط متد SendFileAsync به هر کاربری، این فایل را بفرستید

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

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

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

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

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

      مهندس سلام مجدد
      اگر مقدور بود براتون به بنده کمک کنید و بنده تا جایی که ممکنه راهنمایی بفرمایید
      ممنون

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

        حسین عزیز سلام. در چه موردی؟

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

          سلام جناب صبوئی عزیز،
          سپاس راه حلش رو پیدا کردم
          در مورد تبدیل استیکر به png و emoji که درخواست کرده بودم؛

  • هادی حیدری گفته
    25 جولای 17

    سلام استاد
    خسته نباشید
    برایه دیلیت کردن کاربر در گروه و برای اضافه کردن مخاطبین در گروه با استفاده از ربات چه کدی باید وارد کنیم؟

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

      هادی عزیز bot.DeleteMemberAsync اگر درست خاطرم باشه

  • هادی حیدری گفته
    25 جولای 17

    و برایه اضافه کردن ربات به مخاطبین خودمون باید چه کنیم؟

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

      هادی جان سلام. من خودم امکانی برای این موضوع ندیدم تا حالا. اما اطلاعاتم در این باره کمه.

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

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

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

      سلام اقای صبوری اقا عرفان راست می گن ممنون می شیم که این کار رو برامون انجام بدین

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

        دو نظر با یک آی پی! مچکرم دوست خوبم.

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

    bot.SendPhotoAsync(e.Message.Chat.Id, photo: “http://aatest.ir/wp-content/uploads/2017/12/ثق.gif”, caption: “hii”);
    سلام این کد رو برای ارسال عکی می نویسم ولی بازم خطا می گیره می گه که نمی تونی بهSENFTOFIFILE رشته ارسال کنی

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

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

      • عرفان گفته
        25 جولای 17

        ممنون می شه یه نمونه به من بگین

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

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

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

      سلام دوست عزیز. اگر آی دی اون پیام ها رو نگه داشته باشید تا مدتی محدود امکان پذیره

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

    با عرض سلام و احترام
    حضور استاد گرانقدر جناب مهندس صبوئی

    ضمن تشکر از زحمات شما و آموزشهای خوبتون، سؤالی از محضرتون داشتم:
    درمورد ساخت رُبات تلگرامی که بتونه کار ارسال فایل pdf رو انجام بده.

    راستش برای انجام این کار، در اینترنت جستجوهایی داشتم و به این کُدها رسیدم:
    WebRequest req = WebRequest.Create(“http://google.com”);
    req.Method = “GET”;

    using (var response = await req.GetResponseAsync())
    using (var stream = response.GetResponseStream())
    {
    await bot.SendDocumentAsync(e.Message.Chat.Id, new FileToSend(“file.html”, stream));
    }
    کار این قطعه کد، ارسال یک صفحۀ HTML هست و قصد دارم که اونرو طوری تغییر بدم تا بتونه از روی سیستم بطور local یک فایل pdf رو به ربات تلگرام ارسال کنه.

    ممنون میشم اگر در این زمینه راهنمایی بفرمائید.

  • sadegh گفته
    25 جولای 17

    من نمیتونم تلگرام بات لایبریری رو اپ دیت کنم میشه سورس برنامه رو بذارید ممنون میشم

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

      صادق عزیز چرا قادر به آپدیتش نیستید؟

  • sadegh گفته
    25 جولای 17

    استاد من نمیتونم تلگرام بات رو اضاف کنم اگه امکانش هست بذارید

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

    سلام سایتی رو میشناسید که به صورت رایگان سرویس تبدیل عکس به فرمت های مختلف رو بده و api داشته باشه؛ برای ارتباط با ربات نیاز دارم؛ برای تبدیل Webp به png

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

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

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

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

    ۱- چطوری میتونم حرکتی بزنم که وقتی ربات از یوزر میپرسه مثلا اسمت چیه وایسه تا یوزر اسمش رو ارسال کنه و بعد سوال بعدی رو بپرسه؟

    ۲- چطوری میتونم کاری کنم که وقتی پیامی از یه چنل خواصی مثلا با ایدی -۱۰۰۰۲۵۲۳۱۱ فوروارد شد ربات یه پیامی به یوزر بفرسته؟

    ممنون میشم راهنماییم کنید

    با تشکر از اموزش های خوبتون

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

      ۱٫ دوست عزیز نوع نگاه شما کمی اپلیکیشن محور هستش. در ربات، ما چیزی به اسم صبر کردن نداریم. هر وقت پیغامی رد و بدل شد، اونو میتونیم در جدول History نگه داریم و وقتی که مسیجی از اون کاربر رسید، با توجه به history قبلی، پاسخ بدیم بهش.
      ۲٫ e.message.chat.id کارتونو انجام نداد؟

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

        سوال ۲ رو درست کردم ولی ۱ رو باز هم مشکل دارم

        چطوری میتونم این کار رو اجام بدم؟

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

          وقتی پیغامی فوروارد میشه، مسیج اصلی هم ضمیمش هستش. روی On_Message یک BReak Point بگذارید و پراپرتی ها رو بررسی کنید.

  • hesam گفته
    25 جولای 17

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

  • ugd گفته
    25 جولای 17

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

    چطوری میشه عکسی که کاربر به ربات ارسال می کند را بگیریم و مثلا بعد در داخل یک bitmap ذخیره کنیم و مثلا بگیم که picturebox1 این عکس رو نمایش بده
    مثلا این کد رو نوشتم ارور میده:
    picturebox1.image=update.message.photo();//error

  • پوریا گفته
    25 جولای 17

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

  • ehsan گفته
    25 جولای 17

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

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

      سلام. نه متاسفانه دوست خوبم. به هر خال نیازه که تمام این جمله ها رو توی دیتابیس نگه دارید و با رسیدن مسیج، اونو چک کنید.

  • Mhdiknd گفته
    25 جولای 17

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

  • امین گفته
    25 جولای 17

    سلام ..
    ببخشید لطفا در مورد حذف پیام های فرواردی نیز یه وسیله ربات اموزش بزارید ….

  • امیر گفته
    25 جولای 17

    عالیییی هستید بخدا دمتون گرم

  • N2010 گفته
    25 جولای 17

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

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

      call back query
      درس هارو تا انتها ببینید، متوجه میشید

  • آرین گفته
    25 جولای 17

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

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

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

  • Reza گفته
    25 جولای 17

    سلام سورس برنامه موجود نیست و لینک سورس در قسمت ۳ هم خرابه
    اگر میشه قرار بدین با تشکر

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

      رضای عزیز متاسفانه بعضی از سورس ها از دست رفتنف پیگیری میکنم.

  • محمدحسین گفته
    25 جولای 17

    سلام
    من هر کاری میکنم تو قسمت Telegram.Bot.Type هیچ کدوم از گزینه های Keyboard یا Inline keyboard رو نمیاره، اگه میشه لطفا راهنماییم کنید

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

      Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton

  • رضایی گفته
    25 جولای 17

    سلام
    بنده میخواستم بدونم که چجوری میشه با دستورات ربات، پیام های که ربات قبلا واسه کاربر فرستاده رو پاک کرد، همچنین آیا امکان داره که ربات پیام هایی که کاربر واسش فرستاده رو پاک کنه یا نه؟
    خیلی ممنون میشم اگر جواب بدید

  • MOHAMMAD ALI گفته
    25 جولای 17

    سلام استاد عزیز خیلی ممنون انشاالله همیشه سلامت باشید
    Telegram.Bot
    وقتی این دستور میزنم میگه نیم اسپیس هست و به عنوان دستور نمیشناسه

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

      خوب درسته کاملا.

      • booyeh گفته
        25 جولای 17

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

  • booyeh گفته
    25 جولای 17

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

  • parsa گفته
    25 جولای 17

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

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

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

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

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

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

      برای مثال کدومشون؟

  • lord گفته
    25 جولای 17

    سوال من اینه اگه میشه آموزشی بزارید که شخص استارت میزنه شناسه کاربر یا همون ایدی شخص جست و جو کنه اگه دفعه اولش هست بگه ثبت نام کن اگه دفعه دومش هست بگه فلانی خوش آمدید که نیاز به دیتا بیس داره فکر کنم و سوال بعد اینکه مثلا از شخص نام کاربری بخواد اگه یه نام فرستاد فارسی باشه بهش بگه انگلیسی باشه و اگه تکراری بود بگه این نام تکراریه ممنون استاد

  • رضا گفته
    25 جولای 17

    سلام با تشکر از سایت خوبتون بنده پروژه دانشجوییم ساخت ربات تلگرامی برای مدیریت هست ولی همین پکیجی که از ناگت نصبش میکنیم telegram.bot آپدیتی داده که کیبورد رو نمیدونم چجوری میشه درست کرد
    در ضمن مثلا ما کیبوردی طراحی کردیم که چند تا دکمه داره
    میخواهیم بعد این که روی یکی از دکمه های کیبورد که زدیم اون کیبورده هاید بشه و کیبورد جدیدی که زیر شاخه اون دکمه ای که زدیم باشه رو بهمون نمایش بده

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