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

تبلیغات

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


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

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


public static string TranslateText(string input, string source, string target)
{
    string translation = string.Empty;
    try
    {
        // Download translation
        string url = string.Format("https://translate.googleapis.com/translate_a/single?client=gtx&sl={0}&tl={1}&dt=t&q={2}",
                                    source,
                                    target,
                                    input);
        string result = string.Empty;
        using (WebClient wc = new WebClient())
        {
            wc.Encoding = Encoding.UTF8;
            wc.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 " +
                                            "(KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");
            result = wc.DownloadString(url);
        }
        // Get translated text
        // Get phrase collection
        string text = result;
        int index = text.IndexOf(string.Format(",,\"{0}\"", "en"));
        if (index == -1)
        {
            // Translation of single word
            int startQuote = text.IndexOf('\"');
            if (startQuote != -1)
            {
                int endQuote = text.IndexOf('\"', startQuote + 1);
                if (endQuote != -1)
                {
                    translation = text.Substring(startQuote + 1, endQuote - startQuote - 1);
                }
            }
        }
        else
        {
            // Translation of phrase
            text = text.Substring(0, index);
            text = text.Replace("],[", ",");
            text = text.Replace("]", string.Empty);
            text = text.Replace("[", string.Empty);
            text = text.Replace("\",\"", "\"");
        }
        // Get translated phrases
        //string[] phrases = text.Split(new[] { '\"' }, StringSplitOptions.RemoveEmptyEntries);
        //for (int i = 0; (i < phrases.Count()); i += 2)
        //{
        //    string translatedPhrase = phrases[i];
        //    if (translatedPhrase.StartsWith(",,"))
        //    {
        //        i--;
        //        continue;
        //    }
        //    translation += translatedPhrase + "  ";
        //}
        // Fix up translation
        translation = translation.Trim();
        translation = translation.Replace(" ?", "?");
        translation = translation.Replace(" !", "!");
        translation = translation.Replace(" ,", ",");
        translation = translation.Replace(" .", ".");
        translation = translation.Replace(" ;", ";");
    }
    catch (Exception ex)
    {

    }
    // Return result
    return translation;
}

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




کلمات کلیدی :

نظر بدهید

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

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

    دوست عزیز لطفا مبحث کار با inline Query ها رو هم آموزش بدید. باتشکر

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

      حتما. ممنون از یادآوری شما

  • mjr گفته
    4 آگوست 17

    استاد ممنون خیلی عالی بود
    ایشاءالله همین طوری آموزش های خوب بزارید
    خدا قوت

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

      زنده باشید. ممنون از شما

  • حسین گفته
    4 آگوست 17

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

      • حسین گفته
        4 آگوست 17

        ممنونم عالیه

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

          زنده باشید. به روی چشم

          • حسین گفته
            4 آگوست 17

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

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

            با کمال میل. حتما چکش میکنم.

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

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

          • حسین گفته
            4 آگوست 17

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

  • غراوی گفته
    4 آگوست 17

    با سلام
    آموزش عالی است برنامه نویسی ربات با php
    ندارید؟

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

      سلام دوست عزیزیم. با عرض معذرت، آموزش های برنامه نویسی ما در حال حاضر محدود به دات نت هستند

  • حسین گفته
    4 آگوست 17

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

  • siahpoosha گفته
    4 آگوست 17

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

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

      دوست خوبم در مورد سوال اول شما، چند کار ممکنه. اگر میخواین که برنامه کاملا ایزوله از ربات باشه، در سطح exe منظورم هستش. تنها راهتون اینه که دیتابیس های مشابهی رو watch کنید که پیشنهاد نمیکنمش. راه حل دوم خیلی ساده تره. ربات خودتونو در یک پروژه جداگانه بسازید و متدهای مورد نظر رو در یک کلاس بنویسید و اون پروژه را در پروژه های دیگرتون Add Refrence کنید. یا اینکه ربات رو در یک پروژه Class LIbrary بسازید و خروجی اونو که یک فایل DLL هستش، در سایر برنامه هاتون Add Refrence کنید.
      در مورد سوال دوم. ببینید هر گروهی برای خودش یک CHatID داره که از طریق اون میتونید در اونجا مسیج بفرستید. دقیقا همونطور که به کاربران عادی مسیج میفرستید.

  • حسین گفته
    4 آگوست 17

    ان شاالله بتونم زحمات شمارم جبران کنم

  • فرزاد گفته
    4 آگوست 17

    با سلام و تشکر فراوان بابت این آموزش‌های ویدیویی بسیار خوبی که میذارید.
    من کلاً برنامه نوسی بلد نبودم و گرافیست هستم. اما با این آموزش های شما به این رشته علاقه‌مند شدم.
    با توجه به اینکه فوق العاده مبتدی هستم، با اجازه یه سری راهنمایی میخواستم ازتون.
    یک اینکه برای ترجمه‌ی دو طرفه باید چطوری کد رو تغییر داد؟ برای مثال کاربر اگر فارسی تایپ کرد، ترجمه انگلیسی ارسال بشه، و اگر انگلیسی فرستاد، ترجمه فارسی ارسال بشه. (این یه مورد، که خیلی هم لازم دارم)
    و مورد دیگه اینکه، توی متن کدهای گوگل که گذاشتید، یه بخش فایل صوتی کلمه هم هستش (اسپیچ) که اون هم جالب میشه اگه بشه همراه با ترجمه از فارسی به انگلیسی، صدای ترجمه هم برای کاربر برای تقویت نوع تلفظ ارسال بشه.
    خیلی خیلی ازتون ممنون

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

      دوست خوبم سلام. خوشحالم که به برنامه نویسی علاقه مند شدید.
      خدمت شما عرض کنم که برای دو زبانه کردن ربات،باید اول دکمه هایی بسازید که کاربر از طریق اون، وضعیتو انتخاب کنه. مثلا فارسی به انگلیسی و یا انگلیسی به فارسی. سپس این وضعیتو در دیتابیس با آی دی شخص، ثبت کنید (یا ثبت نکنید. در این صورت کاربر هر بار وضعیت را مجدد انتخاب میکند)
      در دستوراتی که برای ربات در ویدیو استفاده کرده شده، یک خط از کد هست که زبان مبدا و مقصد را مشخص میکند. “fa-ir” و “en-us” البته اگر متن کد را درست به خاطر داشته باشم.
      کافی است زبان های مبدا و مقصد را با هم عوض کنید.

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

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

    • فرزاد گفته
      4 آگوست 17

      محمد جان من خودم مبتدی هستم ولی رفتم خیلی گشتم و آزمون و خطای بسیاری انجام دادم
      ولی بالاخره به نتیجه رسیدم
      برای ربات تعریف کردم که اگه یوزر پیامی رو که میفرسته توش کاراکترهای فارسی بود، اون پس برو و از فارسی به انگلیسی ترجمه کن
      و در صورتی که توی پیام یوزر کاراکترهای انگلیسی بود پس برو و از انگلیسی به فارسی ترجمه کن
      با if و else if همه اینا رو میشه تعیین کرد حالا دیگه نمیدونم کارم درست بوده یا نه ولی جواب داد و ربات کار کرد با این روش
      به هرحال اساتید باید بیان و توضیحات تکمیلی رو برات بنویسن عزیز

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

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

  • zahra گفته
    4 آگوست 17

    سلام
    ممنون بابت آموزش خوبتون.
    لطفا نحوه دو زبانه کردن این روبات رو میشه آموزش بدین؟
    یعنی با استفاده از دوتا دکمه “فارسی به انگلیسی” و ” انگلیسی به فارسی”

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

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

  • وحید گفته
    4 آگوست 17

    آقا صبوئی خسته نباشین ، من آموزش ساخت ربات رو دیدم خیلی عالی بود . یه سوالی داشتم میخواستم ببینم که مثلا ما کیبورد رو طراحی کردیم ( inlinekeyboard lمنظورم نیستا ) کیبورد معمولی که به این صورته :

    Telegram.Bot.Types.KeyboardButton[][] keyboard = { row1,row2 };

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

    (( یه سری بات هستن کیبورد هاشون خیلی سایز کوچیک تری داره .

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

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

  • امیر گفته
    4 آگوست 17

    استاد صبوئی شما توضیح ندادین ،

    ۲تا سوال :
    اول اینکه چطور اون باگی درست کنیم ؟ که مثلا استارت زدیم اونو ، خود استارت ترجمه نکنه میشه یه الگورتیم ساده بدین، بنویسم ؟

    سوال دوم اینکه اندازه سایز کیبورد چطور تغییر بدیم خیلی بزرگه ( کبیورد ساده منظورمه ها نه inline )

  • حسن گفته
    4 آگوست 17

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

    XmlDocument widge = new XmlDocument();
    widge.Load(“https://www.google.com/ig/api?weather=Brisbane/dET7zIp38kGFSFJeOpWUZS3-“);
    var weathlist = widge.GetElementsByTagName(“current_conditions”);
    foreach (XmlNode node in weathlist)
    {

    City.Text = (“Brisbane”);
    CurCond.Text = (node.SelectSingleNode(“condition”).Attributes[“data”].Value);
    Wimage.ImageUrl = (“http://www.google.com/” + node.SelectSingleNode(“icon”).Attributes[“data”].Value);
    Temp.Text = (node.SelectSingleNode(“temp_c”).Attributes[“data”].Value + “°C”);
    }
    }

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

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

  • مسعود گفته
    4 آگوست 17

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

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

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

  • صابر گفته
    4 آگوست 17

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

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

      صابر جان. سرچ انگلیسی در گوگل

  • MOHAMMAD ALI گفته
    4 آگوست 17

    سلام خسته نباشید استاد
    میتونم برای رباتی که با زبان lua نوشتم با سی شارپ لایسنس بزارم؟ که هرکس خاست سورس رو روی هاست اپلود کنه لایسنس رو در سورس قرار بده
    ربات api منظورمه

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

      محمد عزیز من متوجه منظورتون نشدم

  • mohamad گفته
    4 آگوست 17

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

  • عاصم گفته
    4 آگوست 17

    سلام
    تشکر از سایت خوبتون بابت همه آموزش های خوبش.
    در قسمت ربات ترجمان اگر خواسته باشیم کدی اضاف کنیم مثلا: “ترجمه کلمه فلان”.
    ربات دقیقاً کلمه بعد از ترجمه کلمه رو ترجمه کنه
    به هر لغتی واکنش نشان نده.

  • ParsaAlonso گفته
    4 آگوست 17

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

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

      پارسا جان از فیلترشکن استفاده کنید