در این مقاله، گام به گام به بررسی نحوه ساخت ربات تلگرام با سی شارپ ، NET Framework. و کتابخانه Telegram.Bot خواهیم پرداخت. هدف این مقاله، ارائه راهنمایی جامع و عملی برای علاقهمندان به دنیای توسعه رباتهای تلگرام و آشنایی با امکانات گسترده این پلتفرم است.
مقدمه
امروزه در دنیای ارتباطات سریع و تعاملی، استفاده از ابزارهای نوین جهت بهبود روندهای ارتباطی و افزایش کارایی روزانه اهمیت ویژهای یافته است. تلگرام، به عنوان یکی از محبوبترین برنامههای پیامرسان، نه تنها امکان ارسال و دریافت پیام را فراهم میکند، بلکه با ارائه پشتیبانی از API و رباتها، بستری مناسب برای خودکارسازی وظایف و ارتقای تعاملات فراهم آورده است.
کتابخانه Telegram.Bot یک کتابخانه متنباز است که برای سادهسازی توسعه رباتهای تلگرام در برنامههایNET. طراحی شده است.
چگونه یک ربات تلگرام را راهاندازی کنیم؟
برای ساخت ربات تلگرام با سی شارپ، ابتدا باید برخی از ابزارها و مفاهیم اولیه را بشناسید و محیط توسعه را آماده کنید. در ادامه، مراحل گامبهگام برای راهاندازی ربات توضیح داده شده است.
ایجاد ربات در تلگرام
- ابتدا باید یک ربات تلگرام ایجاد کنیم. برای این کار مراحل زیر را انجام دهید:
- وارد تلگرام شوید و ربات BotFather را جستجو کنید.
- دستور newbot/ را ارسال کنید.
- نام و یوزرنیم ربات را انتخاب کنید.
- یک توکن API دریافت خواهید کرد که برای ارتباط با سرور تلگرام لازم است.
ایجاد ربات تلگرام در سی شارپ
برای شروع استفاده از Telegram.Bot، ابتدا باید کتابخانه را به پروژه #C خود اضافه کنید. این کار به راحتی از طریق NuGet، مدیر بستههای NET.، قابل انجام است.
ابتدا نرمافزار Visual Studio را اجرا کنید و یک پروژه جدید از نوع کنسول ایجاد کنید. اگر این نرمافزار را روی سیستم خود نصب نکردهاید، میتوانید راهنمای جامع نصب آن را در مقاله ما با عنوان نصب ویژوال استودیو برای #C مطالعه کنید.
سپس کتابخانه Telegram.Bot را از طریق NuGet نصب کنید.
سپس کتابخانه Telegram.Bot را از طریق NuGet نصب کنید.
برای این کار میتوانید از Package Manager Console استفاده کرده و دستور مربوطه را اجرا کنید. همچنین امکان نصب این کتابخانه از طریق Manage NuGet Packages در محیط ویژوال استودیو نیز وجود دارد.
Install-Package Telegram.Bot
چگونه از Telegram.Bot استفاده کنیم؟
ما تا این مرحله ربات خود را در تلگرام ایجاد کردیم. بعد از آماده سازی محیط توسعه سی شارپ، در ادامه برای استفاده از کتابخانه Telegram.Bot مراحل زیر را دنبال کنید:
راه اندازی ربات تلگرام
در پروژه C# خود، یک کلاس جدید به نام Program ایجاد کنید و ربات را با استفاده از توکن ارائهشده توسط @BotFather پیکربندی کنید.
using System; using System.Threading.Tasks; using Telegram.Bot; using Telegram.Bot.Args; class Program { private static readonly string Token = "YOUR_TELEGRAM_BOT_TOKEN_HERE"; private static TelegramBotClient botClient; static void Main(string[] args) { botClient = new TelegramBotClient(Token); var me = botClient.GetMeAsync().Result; Console.WriteLine($"Bot id: {me.Id}, Bot Name: {me.FirstName}"); botClient.OnMessage += Bot_OnMessage; botClient.StartReceiving(); Console.WriteLine("Press any key to exit"); Console.ReadKey(); botClient.StopReceiving(); } private static void Bot_OnMessage(object sender, MessageEventArgs e) { if (e.Message.Text != null) { Console.WriteLine($"Received a text message in chat {e.Message.Chat.Id}."); botClient.SendTextMessageAsync( chatId: e.Message.Chat, text: "You said:\n" + e.Message.Text ); } } }
در این مثال:
یک TelegramBotClient با استفاده از توکن ربات پیکربندی شده است.
این کلاینت به رویداد OnMessage مشترک شده تا پیامهای ورودی را پردازش کند.
در متد Bot_OnMessage، به پیامهای متنی پاسخ داده میشود و پاسخی به چت ارسال میگردد.
مدیریت پیام ها و دستورات در ربات تلگرام
حال ربات خود را ارتقا میدهیم تا بتواند دستورات پایهای مانند start/ و help/ را تشخیص داده و به آنها پاسخ دهد. این قابلیت به کاربران امکان میدهد تا با ارسال دستورات مشخص، اطلاعات موردنیاز را از ربات دریافت کنند.
private static void Bot_OnMessage(object sender, MessageEventArgs e) { if (e.Message.Text != null) { Console.WriteLine($"Received a text message in chat {e.Message.Chat.Id}."); switch (e.Message.Text.ToLower()) { case "/start": botClient.SendTextMessageAsync( chatId: e.Message.Chat, text: "Welcome to the bot! Type /help to see available commands." ); break; case "/help": botClient.SendTextMessageAsync( chatId: e.Message.Chat, text: "/start - Start the bot\n/help - Get help" ); break; default: botClient.SendTextMessageAsync( chatId: e.Message.Chat, text: "You said:\n" + e.Message.Text ); break; } } }
ارسال تصاویر و فایل ها در ربات تلگرام
ربات تلگرام علاوه بر ارسال متن، میتواند تصاویر و فایلها را نیز برای کاربران ارسال کند. حال، یک دستور جدید اضافه میکنیم که به کمک آن، ربات بتواند یک تصویر را ارسال کند.
private static void Bot_OnMessage(object sender, MessageEventArgs e) { if (e.Message.Text != null) { Console.WriteLine($"Received a text message in chat {e.Message.Chat.Id}."); switch (e.Message.Text.ToLower()) { case "/start": botClient.SendTextMessageAsync( chatId: e.Message.Chat, text: "Welcome to the bot! Type /help to see available commands." ); break; case "/help": botClient.SendTextMessageAsync( chatId: e.Message.Chat, text: "/start - Start the bot\n/help - Get help\n/photo - Get a photo" ); break; case "/photo": botClient.SendPhotoAsync( chatId: e.Message.Chat, photo: "https://example.com/photo.jpg", caption: "Here is your photo!" ); break; default: botClient.SendTextMessageAsync( chatId: e.Message.Chat, text: "You said:\n" + e.Message.Text ); break; } } }
استفاده از وب هوک در ربات تلگرام
Webhook یکی از روشهای دریافت بهروزرسانیها در ربات تلگرام است که جایگزین روش Polling میشود. در این روش، بهجای اینکه ربات بهصورت مداوم از سرور تلگرام درخواست دریافت پیامهای جدید را ارسال کند، تلگرام بهطور خودکار هر پیام جدید را به سرور شما ارسال میکند. این روش بهینهتر و سریعتر است، زیرا باعث کاهش مصرف منابع سرور و پهنای باند میشود.
مقایسه Polling و Webhook
۱. روش Polling: در روش Polling، ربات بهصورت مداوم و در فواصل زمانی مشخص، سرور تلگرام را بررسی میکند تا پیامهای جدید را دریافت کند. این روش برای پروژههای کوچک مناسب است، اما به دلیل ارسال درخواستهای مکرر، منابع سرور بیشتری مصرف میکند.
۲. روش Webhook: در روش Webhook، تلگرام هر پیام جدید را مستقیماً به آدرس تعیینشده روی سرور شما ارسال میکند. این روش کارآمدتر و سریعتر است و برای رباتهای حرفهای و پرکاربرد توصیه میشود.
تنظیم Webhook در ربات تلگرام
برای استفاده از Webhook، ابتدا باید یک آدرس HTTPS معتبر روی سرور خود تنظیم کنید تا پیامها و دادههای دریافتی را مدیریت کند. در C#، میتوانید Webhook را به شکل زیر تنظیم کنید:
اگر میخواهید به جای روش Polling از Webhook استفاده کنید، میتوانید آن را بهصورت زیر تنظیم کنید:
var webhookUrl = "https://yourdomain.com/api/update"; await Bot.SetWebhookAsync(webhookUrl);
در کد بالا:
- مقدار webhookUrl باید آدرس HTTPS سرور شما باشد که درخواستهای دریافتی از تلگرام را پردازش میکند.
- تابع SetWebhookAsync()، آدرس Webhook شما را به تلگرام معرفی میکند تا پیامهای جدید مستقیماً به آن ارسال شوند.
توجه داشته باشید که سرور شما باید قابلیت پردازش درخواستهای HTTPS را داشته باشد و بهدرستی برای دریافت بهروزرسانیهای ربات پیکربندی شده باشد.
پیشنیازهای استفاده از Webhook
اگر قصد دارید به جای روش Polling از Webhook برای دریافت پیامهای کاربران در ربات تلگرام استفاده کنید، باید برخی پیشنیازهای فنی را در نظر بگیرید. در ادامه این پیشنیازها و نحوه پیادهسازی Webhook را بررسی میکنیم.
داشتن سرور با HTTPS: وبهوک فقط روی دامنههایی با گواهینامه SSL (HTTPS) کار میکند. اگر از سرور محلی (localhost) استفاده میکنید، باید از ابزارهایی مانند ngrok برای ایجاد تونل HTTPS استفاده کنید.
پیکربندی سرور برای پردازش درخواستها: باید یک API یا Endpoint در سرور خود ایجاد کنید که دادههای دریافتی از تلگرام را پردازش کند. برای مثال، در ASP.NET Core میتوانید یک Controller برای دریافت دادهها بسازید:
[HttpPost] [Route("api/update")] public async Task<IActionResult> Update([FromBody] Update update) { if (update == null) return BadRequest(); // پردازش پیام دریافتی var message = update.Message; if (message != null) { await Bot.SendTextMessageAsync(message.Chat.Id, "پیام شما دریافت شد!"); } return Ok(); }
فعالسازی و تست Webhook: پس از تنظیم Webhook، میتوانید با ارسال پیام به ربات، بررسی کنید که آیا درخواستها به درستی به سرور شما ارسال میشوند یا نه.
همچنین میتوانید از دستور زیر برای بررسی وضعیت Webhook استفاده کنید:
var info = await Bot.GetWebhookInfoAsync(); Console.WriteLine(info.Url);
اجرای پروژه و تست ربات تلگرام
پس از پیادهسازی و نوشتن کدهای مربوط به ربات تلگرام، اکنون زمان اجرای پروژه و تست آن رسیده است. برای این کار مراحل زیر را دنبال کنید:
بیلد (Build) و اجرای پروژه
ابتدا پروژه را در Visual Studio یا هر محیط توسعهای که استفاده میکنید، Build و اجرا کنید. اگر از NET Core. یا NET 6. استفاده میکنید، میتوانید از ترمینال یا خط فرمان برای اجرای برنامه استفاده کنید:
dotnet run
پس از اجرای برنامه، بسته به اینکه از Polling یا Webhook استفاده میکنید، ربات شما آماده دریافت پیامها خواهد بود.
ارسال پیام به ربات و تست عملکرد
- در تلگرام، نام کاربری ربات خود را جستجو کنید.
- یک پیام (مثلاً /start) به ربات ارسال کنید.
- بررسی کنید که آیا ربات به درستی به پیام شما پاسخ میدهد یا خیر.
اگر ربات شما به پیامها پاسخ نمیدهد:
- بررسی کنید که توکن «Token» ربات را به درستی تنظیم کرده باشید.
- مطمئن شوید که اتصال اینترنت شما برقرار است.
- در صورتی که از Webhook استفاده میکنید، آدرس سرور را بررسی کنید.
- در حالت Polling، از اجرای مداوم حلقه دریافت پیام اطمینان حاصل کنید.
افزودن قابلیتهای بیشتر به ربات
پس از اطمینان از عملکرد اولیه ربات، میتوانید ویژگیهای پیشرفتهتری مانند ارسال تصاویر، دریافت دستورات خاص و تعامل با پایگاه داده را به آن اضافه کنید تا تعامل بهتری با کاربران داشته باشد.
جمع بندی
در این مقاله، نحوه ساخت ربات تلگرام با سی شارپ را گامبهگام آموزش دادیم. ابتدا یک ربات تلگرام ایجاد کردیم، سپس با استفاده از کتابخانه Telegram.Bot ربات را پیادهسازی کردیم. در نهایت، قابلیتهای اولیه دریافت پیام و ارسال پاسخ را بررسی کردیم. این آموزش پایهای بود و میتوان امکانات پیشرفتهتری مانند اتصال به پایگاه داده، مدیریت کاربران و اجرای دستورات سفارشی را نیز پیادهسازی کرد. با کمی تمرین و افزودن ویژگیهای بیشتر، میتوان رباتهای هوشمند و کاربردیتری برای نیازهای مختلف طراحی کرد.
در نتیجه، ساخت ربات تلگرام با سی شارپ و کتابخانه Telegram.Bot ابزاری قدرتمند برای خودکارسازی وظایف و بهبود تعاملات در دنیای ارتباطات امروزی به شمار میرود. با بهرهگیری از انعطافپذیری زبان #C و قابلیتهای بیپایان پلتفرم تلگرام، توسعهدهندگان میتوانند رباتهایی بسازند که نه تنها ارتباطات را تسهیل میکنند بلکه وظایف روزانه را به صورت خودکار و هوشمندانه انجام میدهند.
این روند توسعه نه تنها موجب افزایش کارایی و بهرهوری میشود بلکه فرصتهای جدیدی برای خلاقیت و نوآوری در طراحی تجربه کاربری فراهم میآورد. با پیشرفتهای روزافزون در فناوریهای مرتبط با هوش مصنوعی و یادگیری ماشین، آینده رباتهای تلگرام میتواند شامل ویژگیهای پیشرفتهتر و تعاملات پیچیدهتر باشد که در نهایت به بهبود کیفیت ارتباطات و خدمات ارائه شده منجر خواهد شد.
آموزش خیلی خوب و ساده بود. ممنون