Build apps - SDK (software development kit) for .Net Core 3.1
این ابزار برای پیکربندی و اجرای کد های سی شارپ در بستر .Net Core مورد استفاده قرار می گیرهبرای بررسی نصب بودن این ابزار توسعه برنامه، دستور زیر را در در کامند لاین (Command Line) ویندوز اجرا کنید.
اگه برنامه نصب شده باشه در جواب ورژن نصب شده رو می بینید.
برای سی شارپ می شه از visual studio هم استفاده کرد.
برای شروع وارد برنامه vscode (visual studio code) بشید.
از نوار بالا بر روی File کلیک کنید و بعد Open Folder رو انتخاب کنید.
پوشه ای جدید به نام hello_cs ایجاد کرده و انتخاب کنید، و بعد بر روی Select folder کلیک کنید.
بعد از باز شدن پوشه hello_cs در ادیتور، از نوار بالا یک ترمینال جدید ایجاد می کنیم.
Terminal -> New Terminal
در ترمینال باز شده دستور زیر را اجرا کنید:
منتظر بمانید تا فرایند کامل شود.
بعد از تکمیل فرایند، احتمالا سه فایل ایجاد شده در پوشه را مشاهده خواهید کرد.
تمامی فایل ها و پوشه های ایجاد شده برای برنامه ما ضروری می باشند، اما در حال حاضر ما تنها با فایل Program.cs کار خواهیم داشت.
فایل Program.cs را داخل ادیتور باز کرده و کدهای داخل آنرا مشاهده کنید:
using System;
namespace hello_cs
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
کد بالا ساده ترین کدی است که می توان در سی شارپ در نسخه فعلی نوشت.
شروع اجرای کد از داخل تابع Main میباشد:
Console.WriteLine("Hello World!");
این بخش از کد با استفاده از کلاس استاتیک Console و تابع WriteLine، متن Hello World! را در کنسول چاپ می کند.
برای اجرای برنامه دستور زیر را در کنسول اجرا کنید.
و مشاهده خواهید کرد که Hello World در ترمینال چاپ شده است.
در کد بالا می توانید عبارت بین "" را تغییر داده و مشاهده کنید که خروجی برنامه نیز تغییر می کند.
همچنین می توانید این خط از کد را چندین بار تکرار کنید.
به عنوان مثال میتوانید کد زیر را نوشته و اجرا کنید:
using System;
namespace hello_cs
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
Console.WriteLine("This is my first app");
Console.WriteLine("Hoooraaa!!!");
}
}
}
همانطور که در کد مشاهده می کنید، تمامی خطوط کد در داخل بلوک تابع Main که با { شروع و به } ختم شده است.، قرار دارند.
همچنین هر خط جدا از کد به ; ختم شده است.
در پروژه قبل و داخل ادیتور یک ترمینال ایجاد کنید.
برای نصب کتابخانه، دستور زیر را در ترمینال اجرا کنید:
بعد از پایان نصب، برای اطمینان از نصب شدن کتابخانه، فایل hello_cs.csproj را باز کنید.
کد های زیر را انتهای فایل مشاهده خواهید کرد:
<ItemGroup>
<PackageReference Include="ModernTelegramBot" Version="1.1.1" />
</ItemGroup>
این به معنای اضافه شدن ورژن 1.1.1 از این کتابخانه به پروژه شما می باشد.
برای ساختن اکانت ربات تلگرام و دریافت توکن، ابتدا به ربات تلگرام @BotFather مراجعه کنید.
پس از مراجعه به ربات و استارت کردن آن، ابتدا دستور /newbot را برای ساختن ربات جدید ارسال کیند.
پس از ارسال دستور بالا، ربات از شما می خواهد که نامی برای ربات خود انتخاب کرده و ارسال کنید (این نام را می توانید در آینده تغییر دهید).
پس از وارد کردن نام، ربات از شما می خواهد که یک نام کاربری برای ربات خود انتخاب و ارسال کنید.
توجه داشته باشید نام کاربری ربات قابل تغییر نمی باشد.پس از وارد کردن نام کاربری معتبر، ربات توکن ربات جدید شما را در پیامی مانند زیر ارسال خواهد کرد.
Done! Congratulations on your new bot. You will find it at t.me/trainings_tsww_website_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.
Use this token to access the HTTP API:
123456789:AAG-hgsdjkfsiudfyuieasgfiuaqoiis
Keep your token secure and store it safely, it can be used by anyone to control your bot.
For a description of the Bot API, see this page: https://core.telegram.org/bots/api
در این پیام، توکن ربات شما 123456789:AAG-hgsdjkfsiudfyuieasgfiuaqoiis می باشد.
توجه داشته باشید که این توکن را با کسی به اشتراک نگذارید.
در این مرحله، جسم ربات را ساختیم. برای بخشیدن روح به ربات بایستی به سمت کدی که نوشته ایم بر گردیم.
برای ادامه به کدی که قبلا نوشته بودیم بر می گردیم.
اگر همراه آموزش پیش رفته باشید، هم اکنون کتابخانه لازم برای ارتباط با ربات را نیز به پروژه اضافه کرده اید.
در حال حاضر فایل Program.cs در پروژه شما باید بصورت زیر باشد.
using System;
namespace hello_cs
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
برای شروع، تمامی کد های داخل فایل Program.cs را با کد های زیر جایگزین کنید:
using System;
using Telegram.Bot;
namespace hello_cs
{
class Program
{
static void Main(string[] args)
{
var bot = new TelegramBotClient("API_TOKEN");
Console.WriteLine($"Hello i'm {bot.BotInfo.FirstName}, my username is {bot.BotInfo.Username}");
}
}
}
using Telegram.Bot;
در این بخش به برنامه گقتیم که یکی از کلاس های داخل فضای نام (namespace)، Telegram.Bot را نیاز داریم.
در این بخش می توان فرض کرد فضای نام همان پوشه هاست، بعنوان مثال: پوشه Bot از پوشه Telegram. البته در واقعیت همیشه اینگونه نیست.
var bot = new TelegramBotClient("API_TOKEN");
در این بخش یک نمونه از روی کلاس TelegramBotClient، که از فضای نام Telegram.Bot استخراج شده، ساخته و توکنی که از ربات BotFather دریافت کرده ایم را به آن پاس می دهیم.
بناراین در این بخش باید توکن ربات خود را با عبارت API_TOKEN در کد بالا جایگزین کنید. چیزی مشابه با کد زیر:
var bot = new TelegramBotClient("123456789:AAG-hgsdjkfsiudfyuieasgfiuaqoiis");
Console.WriteLine($"Hello i'm {bot.BotInfo.FirstName}, my username is {bot.BotInfo.Username}");
در اخر با استفاده از ویژگی BotInfo از نمونه ساخته شده (bot)، نام و نام کاربری که برای ربات انتخاب کرده بودید را در کنسول نمایش می دهیم.
جهت اجرای کدی که نوشتیم دستور زیر را در کنسول وارد کنید.
و خروجی ای مشابه زیر را مشاهده خواهید کرد:
تا این مرحله شما با موفقیت مشخصات ربات خود را به کمک برنامه دریافت کردید.
کتابخانه فعلی که برای ارتباط با تلگرام استفاده کرده ایم، راهی ساده تر نسبت به کتابخانه مرجع برای دریافت پیام ها و سایر آپدیت های ارسالی به ربات را فراهم کرده است.
برای دریافت آپدیت ها از هندلر استفاده می کنیم که درباره پیام ها MessageHandler می باشد.
وظیفه اصلی هندلر، فیلتر کردن آپدیت های ورودی به ربات بر اساس خواسته ما و سپس فرستادن آنها به یک تابع برای انجام فرایند مورد نظر است.
این به معنای آن است که که تمامی آپدیت های عبور کرده از فیلتر، تابعی که تایین کرده ایم را صدا زده و عملایتی که تعیین شده را انجام می دهند.
به این توابع، توابع کالبک (CallBack) گفته می شود.
پس همانطور که گقته شد، برای ساختن هندلر اول نیاز به تابع کالبک داریم
تابعی بصورت زیر را تعریف می کنیم:
اول مطمعن شوید تمامی فضای نام های زیر را در بالای کد خود فرا خوانده اید.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Telegram.Bot;
using Telegram.Bot.Types;
using Telegram.Filters;
using Telegram.Handlers;
تابع زیر را در پایین تابع Main تعریف کنید.
private static async Task CallBack(TelegramBotClient bot, Message message, Dictionary<string, dynamic> data)
{
await message.ReplyText($"You said: " + message.Text);
}
نمای تابع بالا را بیاد داشته باشید، تقریبا تمامی توابع کالبک مورد نیاز در این کتابخانه به همین صورت ولی با بدنه متفاوت می باشند.
شی message، همان پیام ورودی به ربات است، که با استفاده از تابع ReplyText() در جواب پیام همان متن پیام ورودی را ارسال کرده ایم.
حال که تابع کالبک ما آماده است نوبت ساختن فیلتر مورد نظر برای هندلر است.
در این بخش می خواهیم تنها پیام هایی که در پی وی ربات فرستاده شده به تابع کالبک فرستاده شوند. بنابراین فیلتر ما براحتی و بصورت زیر خواهد بود.
var my_filter = Filter.Private;
همانطور که می دانید Private، به معنای چت خصوصی یا پی وی ربات می باشد.
هم اکنون هندلر خود را ساخته و تابع کالبک و فیلتر را به آن پاس می دهیم.
var my_handler = new MessageHandler(CallBack, my_filter);
سپس هندلری که ساختیم را بصورت زیر به ربات اضافه می کنیم.
bot.AddHandler(my_handler);
خب هندلر ساخته و به ربات اضافه شد. حالا وقت آن است که به آپدیت های ورودی به ربات گوش دهیم.
برای شروع دریافت آپدیت ها از تابع زیر استفاده می کنیم.
await bot.Dispatcher();
در نهایت تمامی کد شما باید بصورت ریز باشد.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Telegram.Bot;
using Telegram.Bot.Types;
using Telegram.Filters;
using Telegram.Handlers;
namespace hello_cs
{
class Program
{
static async Task Main(string[] args)
{
var bot = new TelegramBotClient("API_TOKEN");
var my_filter = Filter.Private;
var my_handler = new MessageHandler(CallBack, my_filter);
bot.AddHandler(my_handler);
Console.WriteLine($"Hello i'm {bot.BotInfo.FirstName}, my username is {bot.BotInfo.Username}");
await bot.Dispatcher();
}
private static async Task CallBack(TelegramBotClient bot, Message message, Dictionary<string, dynamic> data)
{
await message.ReplyText($"You said: " + message.Text);
}
}
}
توجه داشته باشید، در کد بالا بایستی توکن ربات خود را جایگزین عبارت API_TOKEN بکنید.
توجه داشته باشید که تعریف تابع Main تغییر کرده است.
// Old
static void Main(string[] args)
// New
static async Task Main(string[] args)
مراحل کد نویسی در این مرحله تمام شد. برای اجرای کد خود دستور زیر را در کنسول اجرا کنید:
خروجی ای مانند زیر مشاهده خواهید کرد:
بگزارید برنامه در حال اجرا بماند.
حالا به ربات خود مراجعه کرده و پیامی را در پی وی ربات بفرستید.
اگر همه چیز را درست انجام داده باشید، ربات جواب شما را خواهد داد.
برای متوقت کردن ربات هنگامی که در کنسول هستید، کلید های ctrl + C را بفشارید.
در ادامه نحوه نوشتن کد بالا را باکمی جزئیات بیشتر ولی روشی راحت تر و سریع تر مشاهده می کنید.
همانطور که مشاهده می کنید، حجم کد بالا کمتر بود و علاوه بر آن قابلیت های دیگری که استفاده از آن را راحت تر می کند نیز دارد.
اول از همه سی شارپ رو حداقل در حد مبتدی یاد بگیرید.
در سایت W3School می توانید آموزش های مناسبی را مشاهده کنید.
همچنین درباره کتابخانه ارتباط با تلگرام نیز بیشتر بخوانید.