Креирање Дисцорд бота на .НЕТ Цоре са применом на ВПС сервер

Креирање Дисцорд бота на .НЕТ Цоре са применом на ВПС сервер

Здраво Хабровци!

Данас ћете видети чланак који ће вам показати како да направите бота користећи Ц# на .НЕТ Цоре-у и како да га покренете на удаљеном серверу.

Чланак ће се састојати од позадине, припремне фазе, писања логике и преноса бота на удаљени сервер.

Надам се да ће овај чланак помоћи многим почетницима.

praistorija

Све је почело једне непроспаване јесење ноћи коју сам провео на Дисцорд серверу. Пошто сам му се недавно придружио, почео сам да га проучавам горе-доле. Пронашавши текстуални канал "Ваканси", заинтересовао сам се, отворио га и међу понудама које ме нису занимале пронашао:

„Програмер (програмер робота)
zahtevi:

  • познавање програмских језика;
  • способност за самоучење.

Пожелания:

  • способност разумевања кода других људи;
  • познавање ДИСЦОРД функционалности.

Задаци:

  • развој ботова;
  • подршка и одржавање бота.

Ваша корист:

  • Могућност да подржите и утичете на пројекат који вам се допада;
  • Стицање искуства рада у тиму;
  • Прилика за демонстрацију и унапређење постојећих вештина.


Ово ме је одмах заинтересовало. Да, нису платили за овај посао, али нису тражили никакве обавезе од вас и неће бити сувишно у портфељу. Стога сам писао администратору сервера, а он ме је замолио да напишем бота који ће приказати статистику играча у Ворлд оф Танкс.

Припремна фаза

Креирање Дисцорд бота на .НЕТ Цоре са применом на ВПС сервер
Дисцрод
Пре него што почнемо да пишемо нашег бота, морамо да га креирамо за Дисцорд. Потребан вам је:

  1. Пријавите се на Дисцорд налог по ссылке
  2. На картици „Апликације“ кликните на дугме „Нова апликација“ и именујте бот
  3. Набавите токен бота тако што ћете се пријавити на свог бота и пронаћи картицу „Бот“ на листи „Подешавања“
  4. Сачувајте токен негде

Варгаминг

Такође, потребно је да креирате апликацију у Варгаминг-у да бисте добили приступ Варгаминг АПИ-ју. И овде је све једноставно:

  1. Пријавите се на свој Варгаминг налог путем ове везе
  2. Идемо на „Моје апликације“ и кликнемо на дугме „Додај нову апликацију“, дајући назив апликације и бирајући њен тип
  3. Чување ИД-а апликације

софтвер

Већ постоји слобода избора. Неко користи Висуал Студио, неко Ридер, неко је генерално моћан и пише код у Виму (на крају крајева, прави програмери користе само тастатуру, зар не?). Међутим, да не бисте имплементирали Дисцорд АПИ, можете користити незваничну Ц# библиотеку „ДСхарпПлус“. Можете га инсталирати или из НуГет-а или тако што ћете сами направити изворе из спремишта.

За оне који не знају или су заборавили како да инсталирају апликације са НуГет-а.Упутства за Висуал Студио

  1. Идите на картицу Пројекат - Управљање НуГет пакетима;
  2. Кликните на рецензију и у поље за претрагу унесите „ДСхарпПлус“;
  3. Изаберите и инсталирајте оквир;
  4. ДОБИТ!

Припремна фаза је завршена, можете наставити са писањем бота.

Логика писања

Креирање Дисцорд бота на .НЕТ Цоре са применом на ВПС сервер

Нећемо разматрати целу логику апликације, само ћу показати како се ради са пресретањем порука од стране бота и како се ради са Варгаминг АПИ-јем.

Рад са Дисцорд ботом одвија се кроз статички асинхронизовани задатак МаинТаск(стринг[] аргс);
Да бисте позвали ову функцију, потребно је да се региструјете у главном

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);
    }
};

Где е.Аутхор.Усернаме добија надимак корисника.

На овај начин, када пошаљете било коју поруку која почиње са &, бот ће вас поздравити.

На крају ове функције морате написати аваит дисцорд.ЦоннецтАсинц(); и сачекајте Таск.Делаи(-1);

Ово ће вам омогућити да извршавате команде у позадини без преузимања главне нити.

Сада морамо да се позабавимо Варгаминг АПИ-јем. Овде је све једноставно - напишите ЦУРЛ захтеве, добијете одговор у облику ЈСОН стринга, извуците потребне податке одатле и извршите манипулације на њима.

Пример рада са ВаргамингАПИ

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;
        }

Пажња! Строго се не препоручује чување свих токена и ИД-ова апликација у чистом тексту! У најмању руку, Дисцорд забрањује такве токене када уђу у светску мрежу, а максимално, нападачи почињу да користе бот.

Поставите на ВПС - сервер

Креирање Дисцорд бота на .НЕТ Цоре са применом на ВПС сервер

Када завршите са ботом, он мора бити хостован на серверу који стално ради 24/7. То је због чињенице да када је ваша апликација покренута, бот такође ради. Чим искључите апликацију, и ваш бот заспи.

Многи ВПС сервери постоје на овом свету, како на Виндовс-у тако и на Линук-у, међутим, у већини случајева, много је јефтиније хостовати на Линук-у.

На Дисцорд серверу су ми саветовали всцале.ио и одмах сам направио виртуелни сервер на Убунту-у на њему и поставио бота. Нећу описивати како овај сајт функционише, већ ћу ићи директно на подешавања бота.

Пре свега, потребно је да инсталирате неопходан софтвер који ће покренути наш бот написан у .НЕТ Цоре. Како то учинити је описано овде.

Затим морате да отпремите бота на Гит сервис, као што је ГитХуб и слично, и да га клонирате на ВПС сервер или да преузмете свог бота на друге начине. Имајте на уму да ћете имати само конзолу, без ГУИ. Уопште.

Након што преузмете свој бот, потребно је да га покренете. За ово вам је потребно:

  • Вратите све зависности: дотнет рестаурацију
  • Израда апликације: дотнет буилд наме_пројецт.слн -ц Издање
  • Идите на уграђени ДЛЛ;
  • дотнет наме_оф_филе.длл

Честитам! Ваш бот ради. Међутим, бот, нажалост, заузима конзолу и није тако лако изаћи са ВПС сервера. Такође, у случају поновног покретања сервера, мораћете да покренете бота на нови начин. Постоји неколико излаза из ситуације. Сви они се односе на покретање при покретању сервера:

  • Додајте скрипту за покретање у /етц/инит.д
  • Направите услугу која ће се покренути при покретању.

Не видим смисао да се детаљније задржавам на њима, све је довољно детаљно описано на интернету.

Налази

Драго ми је што сам преузео овај задатак. Ово је било моје прво искуство у развоју ботова и драго ми је што сам стекао нова знања у Ц # и раду са Линуком.

Веза до Дисцорд сервера. За оне који играју Варгаминг игрице.
Линк до спремишта где се налази Дисцорд бот.
Веза до ДСхарпПлус спремишта.
Спасибо за внимание!

Извор: ввв.хабр.цом

Додај коментар