Creando Discordia bot in .NET Core cum instruere ad VPS server
Khabrovites salve!
Hodie videbis articulum qui monstrabit tibi quomodo creare autocinetum utens C# in .NET Core et quomodo eum in calculo remoto persequeris.
Articulus e scaena, scaena praeparatoria, logicam scribens et autocinetum ad longinquum cultorem transferens, constabit.
Spero hunc articulum multos incipientium adiuvabit.
erectus
Omnia insomnem autumni nocte exegi in Discordia servo. Cum nuper eum coniunxi, eum sursum ac deorsum studere coepi. Cum canalem textum "Vacanciis" invenisset, studiosi factus sum, aperui, et inter oblationes quae mihi non curabant inveni, hae sunt:
"Programma (bot elit) requisita:
scientia programmandi linguarum;
facultatem ad sui ipsius doctrinam.
ΠΠΎΠΆΠ΅Π»Π°Π½ΠΈΡ:
posse intelligere aliorum codicem;
cognitio discordiae functionality.
aliquip;
progressus bot;
sustentationem et sustentationem bot.
Beneficium tuum;
Facultatem ad favorem gratiaeque tuae similem esse;
Nituntur operandi in quadrigis;
Facultatem demonstrandi et emendandi artes exsistentes.
Hoc statim quaero. Pro hoc opere non solvebant, sed obligationes a te non exigebant, et non erit superfluum in librario. Ideo servo admin scripsi, et me rogavit ut autocinetum scriberet quod statisticam in mundo Tanks ostendet.
Praeparatoria
Discrod
Priusquam incipiamus scribere autocinetum nostrum, necesse est nos eam ad Discordiam creare. Opus est tibi;
Addimus "Meae Applicationes" et deprime "novam applicationem" conjunctionem adde, nomen applicationis praebens et eius genus eligens
Salvo Application ID
Software
Iam non est liberum arbitrium. Aliquis Visual Studio utitur, aliquis Equitem, aliquis plerumque potens est, et codicem in Vim scribit (post omnes programmatores reales tantum claviaturis, iure utuntur?). Nihilominus, ne Discordiam API efficiamus, privata C# bibliotheca uti potes "DSharpPlus". Id instituere potes vel ex NuGet, vel ex repositorio fontes aedificando.
Nam qui nesciunt vel obliti sunt quomodo applicationes a NuGet instituendi.Instructiones pro Visual Studio
Vade ad tab Project - Curo NuGet Packages;
Deprime in recognitione et in agro investigationis intra "DSharpPlus";
Lego et sol- nite;
QUAESTUS!
Praeparatio finita est, potes scribere automati.
Logica scribo
Totam logicam applicationis non considerabimus, tantum ostendemus quomodo intercipiendo nuntios ab autocineto laborare, et quomodo apud Wargaming API laborare.
Discordia laborare cum static accidit per async Task MainTask(nervum[] args);
Hoc munus vocare, in Main te scribere debes
Ubi signum est signum automati.
Tum per labda mandata necessaria scribimus ut autocinetus exequatur;
discord.MessageCreated += async e =>
{
string message = e.Message.Content;
if (message.StartsWith("&"))
{
await e.Message.RespondAsync(βHello, β + e.Author.Username);
}
};
Ubi e.Author.Username utentis cognomen accipit.
Hoc modo, cum epistulam aliquam, quae mecum incipit, mittis, bot te salutabit.
In fine huius functionis scribere debes exspectare discordiam.ConnectAsync(); et exspecta Task.Delay(-1);
Hoc licebit tibi in curriculo mandata exequi sine filo principali tollendo.
Nunc de Wargaming API agendum est. Omnia hic simplicia sunt - scribe CURL petitiones, responsionem accipe in forma chordae JSON, necessarias inde notitias collige, et in illis manipulationes exerce.
Exemplum operandi cum 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;
}
Attendite! Stricte non commendatur omnia signa et applicationem IDs in textu perspicuo reponere! Ad minimum, Discordia talia signa cum retiacula terrarum intrant, et ad maximum, autocinetum ab oppugnatoribus uti incipit.
Explicandi ordinis VPS - server
Cum peractis autocinetis, necesse est ut hosted in servo qui perpetuo currit 24/7. Hoc ex eo quod applicatione tua currit, bot quoque currit. Ut primum applicationes averteris, dormit etiam automata tua.
Multi VPS servientes in hoc mundo existunt, tam in Fenestra quam in Linux, tamen in pluribus, multo vilius Linux hospitio.
De Discord servo, vscale.io monitus sum, et statim virtualem ministrantem in Ubuntu creavi et automati imposuisti. Non describam quomodo situs hic laborat, sed recta ad bot occasus perget.
Ante omnia, programmata necessaria instituere debes quae nostra automataria scripta in .NET Core persequetur. Facere describitur hic.
Deinde, necesse est ut autocinetum ad ministerium Git immittere, sicut GitHub et similia, et clone illud servo VPS, vel automati aliis modis depone. Nota quaeso quod solacium habebis tantum, nullum GUI. Omnino.
Postquam botones detraxisti, currere debes. Hoc enim debes;
Macte! Bot tuus currit. Nihilominus automati, proh dolor, consolatorium occupat, et non facile servo VPS exire. Etiam, si sileo cultor, novo modo incipiet autocinetum. Duobus modis e situ. Omnia haec cum servo startup ad launch referuntur:
Adde scriptum currere ad /etc/init.d
Creare servitium quod in satus current.
Punctum singillatim inesse non video, omnia in Interrete satis accurate descripta sunt.
Inventiones
Gaudeo me hoc negotium suscepisse. Haec prima experientia progressus autocineti fuit, et gaudeo me novam in C # scientiam accepisse, et cum Linux operando.