سلامونه خوستوالو!
نن ورځ به تاسو یوه مقاله وګورئ چې تاسو ته به وښیې چې څنګه په .NET کور کې د C# په کارولو سره بوټ رامینځته کړئ او دا څنګه په ریموټ سرور کې پرمخ وړئ.
مقاله به یو شالید ، د چمتووالي مرحله ، د منطق لیکلو او لرې پرتو سرور ته د بوټ لیږد ولري.
زه امید لرم چې دا مقاله به د ډیری پیل کونکو سره مرسته وکړي.
له تاریخ څخه دمخه
دا ټول د مني په یوه بې خوبه شپه کې پیل شوي چې ما د ډیسکارډ سرور کې تیر کړل. له هغه وخته چې زه پدې وروستیو کې له هغه سره یوځای شوم، ما د هغه پورته او ښکته مطالعه پیل کړه. د متن چینل په موندلو سره "خالي"، زه علاقه لرم، هغه یې پرانستله، او د هغو وړاندیزونو په منځ کې وموم چې زما سره علاقه نه لري، دا دي:
پروګرامر (د بوټ جوړونکی)
اړتیاوې:
- د پروګرام کولو ژبو پوهه؛
- د ځان زده کړې وړتیا.
:
- د نورو خلکو کوډ د پوهیدو وړتیا؛
- د DISCORD فعالیت پوهه.
دندې:
- د بوټو پراختیا
- د بوټ ملاتړ او ساتنه.
ستاسو ګټه:
- د هغه پروژې ملاتړ او نفوذ کولو فرصت چې تاسو یې خوښوئ؛
- په ټیم کې د کار کولو تجربه ترلاسه کول؛
- د موجوده مهارتونو ښودلو او ښه کولو فرصت.
دا سمدلاسه ما سره علاقه درلوده. هو، دوی د دې کار لپاره پیسې نه دي ورکړې، مګر دوی له تاسو څخه د کوم مسؤلیت غوښتنه نه ده کړې، او دا به په پورټ فولیو کې بې ځایه نه وي. له همدې امله ، ما د سرور مدیر ته لیکلي ، او هغه له ما څخه وغوښتل چې یو بوټ ولیکم چې د ټانکونو نړۍ کې د لوبغاړي احصایې وښیې.
د چمتوالي پړاو
ډیسکروډ
مخکې لدې چې موږ خپل بوټ لیکل پیل کړو ، موږ اړتیا لرو دا د ډیسکارډ لپاره رامینځته کړو. تاسو اړتیا لرئ:
- د Discord حساب ته ننوتل
مخونه - د "اپلیکیشن" ټب کې، د "نوي غوښتنلیک" تڼۍ کلیک وکړئ او د بوټ نوم ورکړئ
- خپل بوټ ته ننوتل او د "ترتیباتو" لیست کې د "بوټ" ټب موندلو سره د بوټ نښه ترلاسه کړئ
- نښه په کوم ځای کې وساتئ
وارګنګ
همچنان ، تاسو اړتیا لرئ په وارګیمینګ کې یو غوښتنلیک رامینځته کړئ ترڅو د وارګیمینګ API ته لاسرسی ومومئ. دلته هم، هر څه ساده دي:
- خپل وارګیمینګ حساب ته ننوتل
د دې لینک له لارې - موږ "زما غوښتنلیکونه" ته ځو او د "نوی غوښتنلیک اضافه کړئ" تڼۍ کلیک وکړئ، د غوښتنلیک نوم ورکړئ او د هغې ډول وټاکئ.
- د غوښتنلیک ID خوندي کول
ساوتري
د انتخاب آزادي لا دمخه شتون لري. یو څوک بصری سټوډیو کاروي ، څوک رایډر ، څوک عموما ځواکمن وي ، او په ویم کې کوډ لیکي (په هرصورت ، ریښتیني برنامې یوازې کیبورډ کاروي ، سمه ده؟). په هرصورت، د دې لپاره چې د Discord API پلي نشي، تاسو کولی شئ غیر رسمي C# کتابتون "DSharpPlus" وکاروئ. تاسو کولی شئ دا یا د NuGet څخه نصب کړئ، یا د ذخیره کولو څخه پخپله د سرچینو په جوړولو سره.
د هغو کسانو لپاره چې نه پوهیږي یا یې هیر کړي چې څنګه د NuGet څخه غوښتنلیکونه نصب کړي.د بصری سټوډیو لپاره لارښوونې
- د پروژې ټب ته لاړ شئ - د NuGet کڅوړې اداره کړئ؛
- په بیاکتنه کلیک وکړئ او د لټون ساحه کې "DSharpPlus" دننه کړئ؛
- چوکاټ وټاکئ او نصب کړئ؛
- خونديتوب!
د چمتووالي مرحله پای ته رسیدلې ، تاسو کولی شئ د بوټ لیکلو ته لاړشئ.
د منطق لیکل
موږ به د غوښتنلیک ټول منطق په پام کې ونیسو ، زه به یوازې وښیم چې څنګه د بوټ لخوا د پیغامونو مداخلې سره کار کول ، او څنګه د وارګیمینګ API سره کار کول.
د Discord bot سره کار کول د جامد async Task MainTask(string[] args) له لارې ترسره کیږي؛
د دې فنکشن د زنګ وهلو لپاره، په اصلي کې تاسو باید راجستر کړئ
MainTask(args).ConfigureAwait(false).GetAwaiter().GetResult();
بیا، تاسو اړتیا لرئ خپل بوټ پیل کړئ:
discord = new DiscordClient(new DiscordConfiguration
{
Token = token,
TokenType = TokenType.Bot,
UseInternalLogHandler = true,
LogLevel = LogLevel.Debug
});
چیرې چې نښه ستاسو د بوټ نښه ده.
بیا ، د لامبډا له لارې ، موږ اړین حکمونه لیکو چې بوټ باید اجرا کړي:
discord.MessageCreated += async e =>
{
string message = e.Message.Content;
if (message.StartsWith("&"))
{
await e.Message.RespondAsync(“Hello, ” + e.Author.Username);
}
};
چیرته چې e.Author.Username د کارونکي مستعار نوم ترلاسه کوي.
پدې توګه ، کله چې تاسو کوم پیغام واستوئ چې له & سره پیل کیږي ، بوټ به تاسو ته ښه راغلاست ووایی.
د دې فنکشن په پای کې، تاسو باید ولیکئ await discord.ConnectAsync(); او د Task.Delay(-1) په انتظار
دا به تاسو ته اجازه درکړي پرته له دې چې اصلي تار پورته کړي په شالید کې کمانډونه اجرا کړئ.
اوس موږ اړتیا لرو د Wargaming API سره معامله وکړو. دلته هرڅه ساده دي - د CURL غوښتنې ولیکئ، د JSON تار په بڼه ځواب ترلاسه کړئ، له هغه ځایه اړین معلومات راوباسئ او په دوی کې لاسوهنې ترسره کړئ.
د WargamingAPI سره د کار کولو یوه بیلګه
public Player FindPlayer(string searchNickname)
{
//https://api.worldoftanks.ru/wot/account/list/?application_id=y0ur_a@@_id_h3r3search=nickname
urlRequest = resourceMan.GetString("url_find_player") + appID + "&search=" + searchNickname;
Player player = null;
string resultResponse = GetResponse(urlRequest);
dynamic parsed = JsonConvert.DeserializeObject(resultResponse);
string status = parsed.status;
if (status == "ok")
{
int count = parsed.meta.count;
if (count > 0)
{
player = new Player
{
Nickname = parsed.data[0].nickname,
Id = parsed.data[0].account_id
};
}
else
{
throw new PlayerNotFound("Игрок не найден");
}
}
else
{
string error = parsed.error.message;
if (error == "NOT_ENOUGH_SEARCH_LENGTH")
{
throw new PlayerNotFound("Минимум три символа требуется");
}
else if (error == "INVALID_SEARCH")
{
throw new PlayerNotFound("Неверный поиск");
}
else if (error == "SEARCH_NOT_SPECIFIED")
{
throw new PlayerNotFound("Пустой никнейм");
}
else
{
throw new Exception("Something went wrong.");
}
}
return player;
}
پاملرنه! دا په کلکه سپارښتنه نه کیږي چې ټول ټوکنونه او د غوښتنلیک IDs په روښانه متن کې ذخیره کړئ! لږترلږه، ډیسکارډ دا ډول ټیکونه منع کوي کله چې دوی د نړۍ شبکې ته ننوځي، او په اعظمي توګه، بوټ د برید کونکو لخوا کارول پیل کوي.
VPS - سرور ته ځای په ځای کړئ
یوځل چې تاسو د بوټ سره سرته ورسیږئ ، نو دا باید په سرور کې کوربه شي چې په دوامداره توګه 24/7 پرمخ ځي. دا د دې حقیقت له امله دی چې کله ستاسو غوښتنلیک روان وي، بوټ هم روان وي. هرڅومره ژر چې تاسو غوښتنلیک بند کړئ ، ستاسو بوټ هم ویده کیږي.
ډیری VPS سرورونه پدې نړۍ کې شتون لري ، دواړه په وینډوز او لینکس کې ، په هرصورت ، په ډیری قضیو کې ، په لینکس کې کوربه کول خورا ارزانه دي.
په ډیسکارډ سرور کې ، ما ته مشوره ورکړل شوه vscale.io ، او ما سمدلاسه په اوبنټو کې یو مجازی سرور رامینځته کړ او بوټ یې اپلوډ کړ. زه به تشریح نه کړم چې دا سایټ څنګه کار کوي، مګر مستقیم به د بوټو ترتیباتو ته لاړ شم.
لومړی، تاسو اړتیا لرئ اړین سافټویر نصب کړئ چې زموږ بوټ به په .NET کور کې لیکل شوی وي.
بیا ، تاسو اړتیا لرئ بوټ د Git خدمت ته اپلوډ کړئ ، لکه GitHub او ورته ورته ، او دا د VPS سرور ته کلون کړئ ، یا خپل بوټ په نورو لارو ډاونلوډ کړئ. مهرباني وکړئ په یاد ولرئ چې تاسو به یوازې کنسول ولرئ، نه GUI. هیڅکله.
وروسته له دې چې تاسو خپل بوټ ډاونلوډ کړئ ، تاسو اړتیا لرئ دا چل کړئ. د دې لپاره، تاسو اړتیا لرئ:
- ټول انحصار بحال کړئ: dotnet بیا رغونه
- د غوښتنلیک جوړول: dotnet build name_project.sln -c ریلیز
- جوړ شوي DLL ته لاړ شئ؛
- dotnet name_of_file.dll
مبارک شه! ستاسو بوټ روان دی. په هرصورت، بوټ، له بده مرغه، کنسول نیسي، او د VPS سرور څخه وتل اسانه ندي. همچنان ، د سرور بیا پیل کولو په صورت کې ، تاسو باید بوټ په نوي ډول پیل کړئ. د وضعیت څخه د وتلو څو لارې شتون لري. دا ټول د سرور په پیل کې د لانچ سره تړاو لري:
- /etc/init.d ته د چلولو سکریپټ اضافه کړئ
- یو خدمت جوړ کړئ چې په پیل کې به پرمخ ځي.
زه د دوی په اړه په تفصیل سره د اوسیدو نقطه نه ګورم ، هرڅه په انټرنیټ کې په کافي توضیحاتو کې بیان شوي.
موندنو
زه خوښ یم چې ما دا دنده په غاړه واخیسته. دا زما لومړی د بوټ پرمختیا تجربه وه، او زه خوښ یم چې ما په C # کې نوې پوهه ترلاسه کړه، او د لینکس سره کار کول.
د Discord سرور سره لینک.
ستاسو د پاملرنې مننه!
سرچینه: www.habr.com