VPS సర్వర్‌కి విస్తరణతో .NET కోర్‌లో డిస్కార్డ్ బాట్‌ను సృష్టిస్తోంది

VPS సర్వర్‌కి విస్తరణతో .NET కోర్‌లో డిస్కార్డ్ బాట్‌ను సృష్టిస్తోంది

హలో ఖబ్రోవైట్స్!

ఈ రోజు మీరు .NET కోర్‌లో C# ఉపయోగించి బాట్‌ను ఎలా సృష్టించాలో మరియు రిమోట్ సర్వర్‌లో దీన్ని ఎలా అమలు చేయాలో చూపించే కథనాన్ని చూస్తారు.

కథనం నేపథ్యం, ​​సన్నాహక దశ, లాజిక్ రాయడం మరియు బాట్‌ను రిమోట్ సర్వర్‌కు బదిలీ చేయడం వంటివి కలిగి ఉంటుంది.

ఈ వ్యాసం చాలా మంది ప్రారంభకులకు సహాయపడుతుందని నేను ఆశిస్తున్నాను.

పూర్వచరిత్ర

నేను డిస్కార్డ్ సర్వర్‌లో గడిపిన ఒక నిద్రలేని శరదృతువు రాత్రిలో ఇదంతా ప్రారంభమైంది. నేను ఇటీవల అతనితో చేరినప్పటి నుండి, నేను అతనిని పైకి క్రిందికి అధ్యయనం చేయడం ప్రారంభించాను. "ఖాళీలు" అనే టెక్స్ట్ ఛానెల్‌ని కనుగొన్న తర్వాత, నాకు ఆసక్తి కలిగింది, దాన్ని తెరిచింది మరియు నాకు ఆసక్తి లేని ఆఫర్‌లలో ఇవి ఉన్నాయి:

"ప్రోగ్రామర్ (బోట్ డెవలపర్)
అవసరాలు:

  • ప్రోగ్రామింగ్ భాషల పరిజ్ఞానం;
  • స్వీయ-నేర్చుకునే సామర్థ్యం.

శుభాకాంక్షలు:

  • ఇతరుల కోడ్‌ను అర్థం చేసుకునే సామర్థ్యం;
  • డిస్కార్డ్ కార్యాచరణ యొక్క జ్ఞానం.

లక్ష్యాలను:

  • బోట్ అభివృద్ధి;
  • బాట్ యొక్క మద్దతు మరియు నిర్వహణ.

మీ ప్రయోజనం:

  • మీకు నచ్చిన ప్రాజెక్ట్‌కు మద్దతు ఇవ్వడానికి మరియు ప్రభావితం చేయడానికి అవకాశం;
  • బృందంలో పనిచేసిన అనుభవాన్ని పొందడం;
  • ఇప్పటికే ఉన్న నైపుణ్యాలను ప్రదర్శించడానికి మరియు మెరుగుపరచడానికి అవకాశం.


ఇది వెంటనే నాకు ఆసక్తిని కలిగించింది. అవును, వారు ఈ పని కోసం చెల్లించలేదు, కానీ వారు మీ నుండి ఎటువంటి బాధ్యతలను డిమాండ్ చేయలేదు మరియు ఇది పోర్ట్‌ఫోలియోలో నిరుపయోగంగా ఉండదు. అందువల్ల, నేను సర్వర్ అడ్మిన్‌కి వ్రాశాను మరియు వరల్డ్ ఆఫ్ ట్యాంక్స్‌లో ప్లేయర్ యొక్క గణాంకాలను చూపించే బాట్‌ను వ్రాయమని అతను నన్ను అడిగాడు.

ప్రిపరేటరీ స్టేజ్

VPS సర్వర్‌కి విస్తరణతో .NET కోర్‌లో డిస్కార్డ్ బాట్‌ను సృష్టిస్తోంది
విస్మరించండి
మేము మా బాట్‌ను వ్రాయడం ప్రారంభించే ముందు, మేము దానిని డిస్కార్డ్ కోసం సృష్టించాలి. నీకు అవసరం:

  1. డిస్కార్డ్ ఖాతాకు లాగిన్ చేయండి లింక్
  2. "అప్లికేషన్స్" ట్యాబ్‌లో, "కొత్త అప్లికేషన్" బటన్‌పై క్లిక్ చేసి, బాట్‌కు పేరు పెట్టండి
  3. మీ బోట్‌కి లాగిన్ చేసి, "సెట్టింగ్‌లు" జాబితాలో "బాట్" ట్యాబ్‌ను కనుగొనడం ద్వారా బోట్ టోకెన్‌ను పొందండి
  4. టోకెన్‌ని ఎక్కడైనా సేవ్ చేయండి

యుద్ధ క్రీడలు

అలాగే, Wargaming APIకి యాక్సెస్ పొందడానికి మీరు Wargamingలో అప్లికేషన్‌ను సృష్టించాలి. ఇక్కడ కూడా, ప్రతిదీ చాలా సులభం:

  1. మీ Wargaming ఖాతాకు లాగిన్ చేయండి ఈ లింక్ ద్వారా
  2. మేము "నా అప్లికేషన్స్"కి వెళ్లి, "కొత్త అప్లికేషన్‌ను జోడించు" బటన్‌పై క్లిక్ చేసి, అప్లికేషన్ పేరును ఇచ్చి దాని రకాన్ని ఎంచుకుంటాము
  3. అప్లికేషన్ IDని సేవ్ చేస్తోంది

సాఫ్ట్వేర్

ఎంపిక చేసుకునే స్వేచ్ఛ ఇప్పటికే ఉంది. ఎవరో విజువల్ స్టూడియోని ఉపయోగిస్తున్నారు, ఎవరైనా రైడర్, ఎవరైనా సాధారణంగా శక్తివంతంగా ఉంటారు మరియు Vimలో కోడ్‌ను వ్రాస్తారు (అన్నింటికంటే, నిజమైన ప్రోగ్రామర్లు కీబోర్డ్‌ను మాత్రమే ఉపయోగిస్తారు, సరియైనదా?). అయితే, డిస్కార్డ్ APIని అమలు చేయకుండా ఉండటానికి, మీరు అనధికారిక C# లైబ్రరీ “DSharpPlus”ని ఉపయోగించవచ్చు. మీరు దీన్ని NuGet నుండి ఇన్‌స్టాల్ చేయవచ్చు లేదా రిపోజిటరీ నుండి మూలాధారాలను మీరే నిర్మించడం ద్వారా ఇన్‌స్టాల్ చేయవచ్చు.

NuGet నుండి అప్లికేషన్‌లను ఎలా ఇన్‌స్టాల్ చేయాలో తెలియని లేదా మర్చిపోయిన వారికి.విజువల్ స్టూడియో కోసం సూచనలు

  1. టాబ్‌కి వెళ్లండి ప్రాజెక్ట్ - NuGet ప్యాకేజీలను నిర్వహించండి;
  2. సమీక్షపై క్లిక్ చేయండి మరియు శోధన ఫీల్డ్‌లో "DSharpPlus"ని నమోదు చేయండి;
  3. ఫ్రేమ్‌వర్క్‌ను ఎంచుకోండి మరియు ఇన్‌స్టాల్ చేయండి;
  4. లాభం!

సన్నాహక దశ ముగిసింది, మీరు బోట్ రాయడం కొనసాగించవచ్చు.

లాజిక్ రాయడం

VPS సర్వర్‌కి విస్తరణతో .NET కోర్‌లో డిస్కార్డ్ బాట్‌ను సృష్టిస్తోంది

మేము అప్లికేషన్ యొక్క మొత్తం లాజిక్‌ను పరిగణించము, బోట్ ద్వారా సందేశాల అంతరాయంతో ఎలా పని చేయాలో మరియు Wargaming APIతో ఎలా పని చేయాలో మాత్రమే నేను చూపుతాను.

డిస్కార్డ్ బాట్‌తో పని చేయడం స్టాటిక్ ఎసిన్క్ టాస్క్ మెయిన్‌టాస్క్ (స్ట్రింగ్[] ఆర్గ్స్) ద్వారా జరుగుతుంది;
ఈ ఫంక్షన్‌కు కాల్ చేయడానికి, మెయిన్‌లో మీరు నమోదు చేసుకోవాలి

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 అనేది వినియోగదారు మారుపేరును పొందుతోంది.

ఈ విధంగా, మీరు &తో ప్రారంభమయ్యే ఏదైనా సందేశాన్ని పంపినప్పుడు, బోట్ మిమ్మల్ని పలకరిస్తుంది.

ఈ ఫంక్షన్ ముగింపులో, మీరు తప్పనిసరిగా 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;
        }

శ్రద్ధ! అన్ని టోకెన్‌లు మరియు అప్లికేషన్ IDలను స్పష్టమైన వచనంలో నిల్వ చేయడం ఖచ్చితంగా సిఫార్సు చేయబడదు! కనిష్టంగా, డిస్కార్డ్ అటువంటి టోకెన్‌లను ప్రపంచవ్యాప్త నెట్‌వర్క్‌లోకి ప్రవేశించినప్పుడు నిషేధిస్తుంది మరియు గరిష్టంగా, బాట్‌ను దాడి చేసేవారు ఉపయోగించడం ప్రారంభిస్తారు.

VPS - సర్వర్‌కి అమలు చేయండి

VPS సర్వర్‌కి విస్తరణతో .NET కోర్‌లో డిస్కార్డ్ బాట్‌ను సృష్టిస్తోంది

మీరు బాట్‌ని పూర్తి చేసిన తర్వాత, అది నిరంతరం 24/7 నడుస్తున్న సర్వర్‌లో హోస్ట్ చేయబడాలి. మీ అప్లికేషన్ రన్ అవుతున్నప్పుడు, బోట్ కూడా రన్ అవుతుండటమే దీనికి కారణం. మీరు అప్లికేషన్‌ను ఆఫ్ చేసిన వెంటనే, మీ బోట్ కూడా నిద్రపోతుంది.

ఈ ప్రపంచంలో చాలా VPS సర్వర్లు Windows మరియు Linuxలో ఉన్నాయి, అయినప్పటికీ, చాలా సందర్భాలలో, Linuxలో హోస్ట్ చేయడం చాలా చౌకగా ఉంటుంది.

డిస్కార్డ్ సర్వర్‌లో, నాకు vscale.io అని సలహా ఇవ్వబడింది మరియు నేను వెంటనే దానిపై ఉబుంటులో వర్చువల్ సర్వర్‌ని సృష్టించి బాట్‌ను అప్‌లోడ్ చేసాను. ఈ సైట్ ఎలా పనిచేస్తుందో నేను వివరించను, కానీ నేరుగా బాట్ సెట్టింగ్‌లకు వెళ్తాను.

అన్నింటిలో మొదటిది, మీరు .NET కోర్‌లో వ్రాసిన మా బాట్‌ను అమలు చేసే అవసరమైన సాఫ్ట్‌వేర్‌ను ఇన్‌స్టాల్ చేయాలి. దీన్ని ఎలా చేయాలో ఇక్కడ వివరించబడింది.

తర్వాత, మీరు బోట్‌ను GitHub వంటి Git సేవకు అప్‌లోడ్ చేయాలి మరియు దానిని VPS సర్వర్‌కు క్లోన్ చేయాలి లేదా ఇతర మార్గాల్లో మీ బాట్‌ను డౌన్‌లోడ్ చేయాలి. దయచేసి మీకు కన్సోల్ మాత్రమే ఉంటుందని, GUI లేదని గుర్తుంచుకోండి. అస్సలు.

మీరు మీ బాట్‌ను డౌన్‌లోడ్ చేసిన తర్వాత, మీరు దాన్ని అమలు చేయాలి. దీని కోసం, మీకు ఇది అవసరం:

  • అన్ని డిపెండెన్సీలను పునరుద్ధరించండి: డాట్నెట్ పునరుద్ధరణ
  • అప్లికేషన్‌ను రూపొందించండి: dotnet build name_project.sln -c విడుదల
  • నిర్మించిన DLLకి వెళ్లండి;
  • dotnet name_of_file.dll

అభినందనలు! మీ బోట్ నడుస్తోంది. అయితే, బోట్, దురదృష్టవశాత్తూ, కన్సోల్‌ను ఆక్రమించింది మరియు VPS సర్వర్ నుండి నిష్క్రమించడం అంత సులభం కాదు. అలాగే, సర్వర్ పునఃప్రారంభించబడిన సందర్భంలో, మీరు బోట్‌ను కొత్త మార్గంలో ప్రారంభించాలి. పరిస్థితి నుండి రెండు మార్గాలు ఉన్నాయి. అవన్నీ సర్వర్ స్టార్టప్‌లో ప్రారంభానికి సంబంధించినవి:

  • రన్ స్క్రిప్ట్‌ని /etc/init.dకి జోడించండి
  • ప్రారంభంలో అమలు చేసే సేవను సృష్టించండి.

నేను వాటిపై వివరంగా నివసించే అంశాన్ని చూడలేదు, ప్రతిదీ ఇంటర్నెట్‌లో తగినంత వివరంగా వివరించబడింది.

కనుగొన్న

నేను ఈ అసైన్‌మెంట్ తీసుకున్నందుకు సంతోషిస్తున్నాను. ఇది నా మొదటి బోట్ డెవలప్‌మెంట్ అనుభవం, మరియు నాకు C #లో కొత్త పరిజ్ఞానం లభించినందుకు మరియు Linuxతో పని చేస్తున్నందుకు నేను సంతోషిస్తున్నాను.

డిస్కార్డ్ సర్వర్‌కి లింక్. వార్‌గేమింగ్ గేమ్‌లు ఆడే వారికి.
డిస్కార్డ్ బాట్ ఉన్న రిపోజిటరీకి లింక్ చేయండి.
DSharpPlus రిపోజిటరీకి లింక్ చేయండి.
Спасибо!

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి