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

تبلیغات

ساخت ربات inline تلگرام در سی شارپ – درس پنجم

ساخت ربات inline تلگرام در سی شارپ – درس پنجم


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

اصلا ربات inline یعنی چه؟

ما معمولا به ربات ها مسیج میدهیم و آنها جواب ما را میدهند. اما یک ربات inline کمی متفاوت است. به این صورت که: ما آنرا در گروه add میکنیم و کاربران ما میتوانند از طریق چت گروه، با آن صحبت کنند.

فایده ربات های inline این است که گروه شما را از طریق اضافه کردن قابلیت های جدید، تقویت میکنند.

در واقع چه ربات به صورت inline باشد چه به صورت معمولی به کار گرفته شود، ساز و کار آن یکسان است.

در ویدیوی زیر، نحوه ساخت این نوع ربات تلگرام را یاد بگیرید:




کلمات کلیدی :

نظر بدهید

52 دیدگاه برای “ساخت ربات inline تلگرام در سی شارپ – درس پنجم

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

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

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

    public static void KeyBoardConstructor(long chatid, params string[] keys)
    {
    int i = 0;

    foreach (string k in keys)
    {

    KeyboardButton[] button = new KeyboardButton[keys.Length];

    button[i] = new KeyboardButton(k);

    KeyboardButton[] row1 = { button[i] };
    Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup repochy = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(row1);
    bot.SendTextMessageAsync(chatid, “please select”, Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, repochy);

    Console.WriteLine(“buttons are:{0}”, button[i]);
    i++;

    }

    }

    • علیرضا صبوئی گفته
      14 آگوست 17

      دوست خوبم سلام. کد زیر احتمالا به دردتان میخورد:

      public static Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup ButtonCreator(List lst)
      {
      //تعداد سطرهای دو دکمه ای را حساب میکند
      int rowsCount = lst.Count / 2;

      //اگر تعداد دکمه ها فرد بود، یک سطر دیگر هم اضافه میکند
      if (lst.Count % 2 > 0)
      rowsCount++;

      //ماتریسی با تعداد سطرهای مشخص و ستون های نامشخص می اندازد
      Telegram.Bot.Types.InlineKeyboardButtons.InlineKeyboardButton[][] buttons = new Telegram.Bot.Types.InlineKeyboardButtons.InlineKeyboardButton[rowsCount][];

      //شماره عنصر مورد نظر در لیست
      int index = 0;

      //به ازای تمام سطرهای ماتریس
      for (int i = 0; i < rowsCount; i++) { if (i==rowsCount-1 && lst.Count % 2 > 0) //اگر سطر آخر بودیم و فقط یک دکمه باقی مانده بود، سطر را یک دکمه میسازیم
      {
      //در سطر آی جا برای یک دکمه میسازد
      buttons[i] = new Telegram.Bot.Types.InlineKeyboardButtons.InlineKeyboardButton[1];
      }
      else
      {
      //در سطر آی جا برای ۲ دکمه میسازد
      buttons[i] = new Telegram.Bot.Types.InlineKeyboardButtons.InlineKeyboardButton[2];
      }
      //برای هر سطری دوبار یعنی به اندازه تعداد ستون ها
      for (int j = 0; j < 2; j++) { buttons[i][j] = lst[index]; index++; //اگر سطر آخر بودیم و فقط یک دکمه داشتیم، حلقه را میشکند تا دوبار اجرا نشود if (i==rowsCount-1 && lst.Count % 2 > 0)
      break;
      }
      }
      Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup result = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(buttons);
      return result;
      }

  • احمد ایرانپور گفته
    14 آگوست 17

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

    • علیرضا صبوئی گفته
      14 آگوست 17

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

      • احمد ایرانپور گفته
        14 آگوست 17

        سپاس از شما

  • احمد ایرانپور گفته
    14 آگوست 17

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

    • علیرضا صبوئی گفته
      14 آگوست 17

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

      • احمد ایرانپور گفته
        14 آگوست 17

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

        • علیرضا صبوئی گفته
          14 آگوست 17

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

          • احمد ایرانپور گفته
            14 آگوست 17

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

  • ایرانپور گفته
    14 آگوست 17

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

    SqlCeConnection myconnection = new SqlCeConnection();
    myconnection.ConnectionString = @”Data Source=C:\Users\Novin-Gostar\Documents\Visual Studio 2015\Projects\11شهریور-تست ربات\neu test.sdf”;
    SqlCeCommand mycommand = new SqlCeCommand();
    mycommand.Connection = myconnection;
    mycommand.CommandText = “inser to [neu] (USERNAME,PASSWORD) values(@username,@password)”;
    mycommand.Parameters.AddWithValue(“@username”, e.Message.Text);
    mycommand.Parameters.AddWithValue(“@password”, e.Message.Text);
    myconnection.Open();
    mycommand.ExecuteNonQueryAsync();
    myconnection.Close();
    bot.SendTextMessageAsync(e.Message.Chat.Id, ” DATA INSERTED SUCCSESSFULLY “, Telegram.Bot.Types.Enums.ParseMode.Markdown, false, false, 0, null);

    • علیرضا صبوئی گفته
      14 آگوست 17

      آقای ایرانپور عزیز در متن کوئریتون کلمه insert دچار اشتباه تایپی شده
      inser to=> insert into
      به جز این مورد، بقیه کدتون کاملا دقیقه

      • ایرانپور گفته
        14 آگوست 17

        ممنونم از وقتی که میزارید و راهنماییهاتون
        .نمیدونم چرا چیزی ثبت نمیشه

        • علیرضا صبوئی گفته
          14 آگوست 17

          همچنان درست نشده؟

          • ایرانپور گفته
            14 آگوست 17

            ممنونم از راهنماییتون
            بله درست شد . در ضمن بابت پست آپلود بر روی هاست بسیار ممنونم

          • علیرضا صبوئی گفته
            14 آگوست 17

            زنده باشید

  • هادی وکیلی گفته
    14 آگوست 17

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

  • هادی وکیلی گفته
    14 آگوست 17

    باسلام. بنده میخاستم ببینم اگر ویدیوی چگونگی قرار دادن روبوت در هاست رو میذارید آیا لازم هست که هاستمون رو روش asp نصب کنیم؟ مثلا من یک هاست دارم که سایت php داخلش هست ولی میخام روباتم رو با سی شارپ کد نویسی کنم. چه راه حلی در نظر دارید.

    • علیرضا صبوئی گفته
      14 آگوست 17

      آقای وکیلی عزیز. پست آپلود بر روی هاست، امروز در سایت قرار میگیرد.
      برای وصل کردن ربات تلگرامتان به سایت PHP یک راه حل دارید هرچند زیاد پیشنهاد نمیشود.
      میتوانید ربات را بر روی یک هاست ASP قرار بدهید و در سایت PHP از آن به شکل یک WebService استفاده کنید. هرچند این روش را پیشنهاد نمیکنم

  • amir گفته
    14 آگوست 17

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

    • علیرضا صبوئی گفته
      14 آگوست 17

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

  • عاطفه گفته
    14 آگوست 17

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

    • علیرضا صبوئی گفته
      14 آگوست 17

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

      • عاطفه گفته
        14 آگوست 17

        تشکر از پاسختون، ببخشید دوتا سوال دیگه، ۱-تایم میتونیم تعریف کنیم برا ربات؟ مثلا پیام هایی که یک ساعت خاص به گروه ارسال شدند (بعد از ادمین شدن ربات)رو پاک کنه؟
        ۲- تنظیمات ربات با توجه به تعداد ممبر میتونه انجام شه؟ یعنی ما تو کد نوشتن به تعداد ممبر دسترسی داریم که طبق اون برا ربات وظیفه خاصی تعریف کنیم؟

        • علیرضا صبوئی گفته
          14 آگوست 17

          ۱٫ در مورد اول بله. خیلی هم ساده هستش. وقتی یک پیغام دریافت کردید، زمان فعلی کامپیوترو بگیرید و اگه توی بازه مورد نظرتون نبود پاکش کنید.
          ۲٫ در مورد دوم هم بله. ربات دستوراتی داره برای گرفتن تعداد اعضا. که میتونید ازون استفاده کنید.

          • عاطفه گفته
            14 آگوست 17

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

          • علیرضا صبوئی گفته
            14 آگوست 17

            زنده باشید

  • حسن مهری گفته
    14 آگوست 17

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

    • علیرضا صبوئی گفته
      14 آگوست 17

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

      • حسن مهری گفته
        14 آگوست 17

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

        • علیرضا صبوئی گفته
          14 آگوست 17

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

  • rzh9009 گفته
    14 آگوست 17

    این هام الاین هستن ؟
    http://uupload.ir/files/yf8x_photo_2017-11-21_08-58-55.jpg

  • rzh9009 گفته
    14 آگوست 17

    چطور برای ربات این منو ها بسازم

    • علیرضا صبوئی گفته
      14 آگوست 17

      دوست عزیز بله. به این منوها هم inline گفته میشه

  • javad.mzf گفته
    14 آگوست 17

    ممنون بابت آموزشهای عالی

    • علیرضا صبوئی گفته
      14 آگوست 17

      زنده باشید. ممنونم از لطف شما

  • vahid گفته
    14 آگوست 17

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

    • علیرضا صبوئی گفته
      14 آگوست 17

      خوب مشکل دقیقا کجاس؟

  • محمد حسن تاجیک گفته
    14 آگوست 17

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

    • علیرضا صبوئی گفته
      14 آگوست 17

      دوست عزیز این مشکلو دوستان دیگه، از جمله خود من هم داشتیم. احتمالا باگ این کتابخانه هستش و به زودی فیکس میشه

  • منا گفته
    14 آگوست 17

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

  • پوریا نوروزی گفته
    14 آگوست 17

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

    ببینید من یه ربات اینلاین نوشتم که تحت کنسول خیلی راحت باز میشه و کار میکنه همه چیز درست .
    اما وقتی آپلودش میکنم از طریق وب هوک به مشکل میخورم ، مورد اینه که inlineQueryUpdate رو نمیشناسه و type پیامی که از طریق اینلاین ربات میگیره میشه unkownUpdate در صورتی که اگر messageText بدم بش موردی نداره و میشناستش و جواب میده ، اما تو حالت اینلاین مورد داره !

    • علیرضا صبوئی گفته
      14 آگوست 17

      متاسفانه من متوجه نشدم اصلا

  • مظاهر گفته
    14 آگوست 17

    درود بر شما

    چطور میتونم title در inline به صورت html بنویسم و به عنوان آیکن اضافه کنم.

    • علیرضا صبوئی گفته
      14 آگوست 17

      یک راه ساده ترش استفاده از Emoji های تلگرام هستش. به صورت کد کاراکتری هستن.

  • سپیده گفته
    14 آگوست 17

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

  • محمدحسن گفته
    14 آگوست 17

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

    یه سوال داشتم میخواستم ببینم چجوری یه آمار گیر برای ربات درست کنم که مشخص بشه ربات من تو چندتا گروه عضو هست و چندتا کاربر داره ؟

  • مهدی نجارزاده گفته
    14 آگوست 17

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

  • مهران گل محمدی گفته
    14 آگوست 17

    سلام ، خسته نباشید
    بنده تو مدیریت دکمه ها یکم مشکل دارم
    یعنی ۴ تا دکمه دارم
    میخوام هرکدوم که کلیک شد بره از دیتابیس یه سری اطلاعات رو بخونه و به کاربر نشون بده ( جستجو کردن )
    ولی هرکاری میکنم برمیگرده به اول نمیره تو شرط