VPS เชธเชฐเซเชตเชฐ เชชเชฐ เชœเชฎเชพเชตเชŸ เชธเชพเชฅเซ‡ .NET เช•เซ‹เชฐ เชชเชฐ เชกเชฟเชธเซเช•เซ‹เชฐเซเชก เชฌเซ‹เชŸ เชฌเชจเชพเชตเชตเซเช‚

VPS เชธเชฐเซเชตเชฐ เชชเชฐ เชœเชฎเชพเชตเชŸ เชธเชพเชฅเซ‡ .NET เช•เซ‹เชฐ เชชเชฐ เชกเชฟเชธเซเช•เซ‹เชฐเซเชก เชฌเซ‹เชŸ เชฌเชจเชพเชตเชตเซเช‚

เชนเซ‡เชฒเซ‹ Khabrovites!

เช†เชœเซ‡ เชคเชฎเซ‡ เชเช• เชฒเซ‡เช– เชœเซ‹เชถเซ‹ เชœเซ‡ เชคเชฎเชจเซ‡ เชฌเชคเชพเชตเชถเซ‡ เช•เซ‡ .NET เช•เซ‹เชฐ เชชเชฐ C# เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฌเซ‹เชŸ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฐเชฟเชฎเซ‹เชŸ เชธเชฐเซเชตเชฐ เชชเชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชšเชฒเชพเชตเชตเซ‹.

เชฒเซ‡เช–เชฎเชพเช‚ เชชเซƒเชทเซเช เชญเซ‚เชฎเชฟ, เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชคเชฌเช•เซเช•เซ‹, เชคเชฐเซเช• เชฒเช–เชตเชพเชจเซ‹ เช…เชจเซ‡ เชฌเซ‰เชŸเชจเซ‡ เชฐเชฟเชฎเซ‹เชŸ เชธเชฐเซเชตเชฐ เชชเชฐ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเชพเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชถเซ‡.

เชฎเชจเซ‡ เช†เชถเชพ เช›เซ‡ เช•เซ‡ เช† เชฒเซ‡เช– เช˜เชฃเชพ เชจเชตเชพ เชจเชฟเชถเชพเชณเซ€เชฏเชพเชจเซ‡ เชฎเชฆเชฆ เช•เชฐเชถเซ‡.

เชชเซเชฐเชพเช—เซˆเชคเชฟเชนเชพเชธเชฟเช•

เช† เชฌเชงเซเช‚ เชเช• เชจเชฟเช‚เชฆเซเชฐเชพเชตเชฟเชนเซ€เชจ เชชเชพเชจเช–เชฐ เชฐเชพเชคเซเชฐเซ‡ เชถเชฐเซ‚ เชฅเชฏเซเช‚ เชœเซ‡ เชฎเซ‡เช‚ เชกเชฟเชธเซเช•เซ‹เชฐเซเชก เชธเชฐเซเชตเชฐ เชชเชฐ เชตเชฟเชคเชพเชตเซเชฏเซเช‚. เชนเซเช‚ เชคเชพเชœเซ‡เชคเชฐเชฎเชพเช‚ เชœ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‹ เชคเซเชฏเชพเชฐเชฅเซ€, เชฎเซ‡เช‚ เชคเซ‡เชจเซ‡ เช‰เชชเชฐ เช…เชจเซ‡ เชจเซ€เชšเซ‡ เช…เชญเซเชฏเชพเชธ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚. เชŸเซ‡เช•เซเชธเซเชŸ เชšเซ‡เชจเชฒ "เชตเซ‡เช•เซ‡เชจเซเชธเซ€เช" เชฎเชณเซเชฏเชพ เชชเช›เซ€, เชฎเชจเซ‡ เชฐเชธ เชชเชกเซเชฏเซ‹, เชคเซ‡เชจเซ‡ เช–เซ‹เชฒเซเชฏเซ‹ เช…เชจเซ‡ เชฎเชจเซ‡ เชฐเซเชšเชฟ เชจ เชนเซ‹เชฏ เชคเซ‡เชตเซ€ เช‘เชซเชฐเซ‹เชฎเชพเช‚เชฅเซ€ เชฎเชณเซ€, เช† เช›เซ‡:

"เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฐ (เชฌเซ‹เชŸ เชกเซ‡เชตเชฒเชชเชฐ)
เชœเชฐเซ‚เชฐเซ€เชฏเชพเชคเซ‹:

  • เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชญเชพเชทเชพเช“เชจเซเช‚ เชœเซเชžเชพเชจ;
  • เชธเซเชต-เชถเชฟเช•เซเชทเชฃ เชฎเชพเชŸเซ‡เชจเซ€ เช•เซเชทเชฎเชคเชพ.

เชถเซเชญเซ‡เชšเซเช›เชพเช“:

  • เช…เชจเซเชฏ เชฒเซ‹เช•เซ‹เชจเชพ เช•เซ‹เชกเชจเซ‡ เชธเชฎเชœเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ;
  • DISCORD เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพเชจเซเช‚ เชœเซเชžเชพเชจ.

เช‰เชฆเซเชฆเซ‡เชถเซ‹:

  • เชฌเซ‹เชŸ เชตเชฟเช•เชพเชธ;
  • เชฌเซ‰เชŸเชจเซเช‚ เชธเชฎเชฐเซเชฅเชจ เช…เชจเซ‡ เชœเชพเชณเชตเชฃเซ€.

เชคเชฎเชพเชฐเซ‹ เชซเชพเชฏเชฆเซ‹:

  • เชคเชฎเชจเซ‡ เช—เชฎเชคเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เช…เชจเซ‡ เชชเซเชฐเชญเชพเชตเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชคเช•;
  • เชŸเซ€เชฎเชฎเชพเช‚ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ‹ เช…เชจเซเชญเชต เชฎเซ‡เชณเชตเชตเซ‹;
  • เชชเซเชฐเชตเชฐเซเชคเชฎเชพเชจ เช•เซŒเชถเชฒเซเชฏเซ‹ เชฆเชฐเซเชถเชพเชตเชตเชพ เช…เชจเซ‡ เชธเซเชงเชพเชฐเชตเชพเชจเซ€ เชคเช•.


เช† เชฎเชจเซ‡ เชคเชฐเชค เชœ เชฐเชธ เชชเชกเซเชฏเซ‹. เชนเชพ, เชคเซ‡เช“เช เช† เช•เชพเชฐเซเชฏ เชฎเชพเชŸเซ‡ เชšเซ‚เช•เชตเชฃเซ€ เช•เชฐเซ€ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชคเซ‡เช“เช เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡เชฅเซ€ เช•เซ‹เชˆ เชœเชตเชพเชฌเชฆเชพเชฐเซ€เชจเซ€ เชฎเชพเช‚เช—เชฃเซ€ เช•เชฐเซ€ เชจเชฅเซ€, เช…เชจเซ‡ เชคเซ‡ เชชเซ‹เชฐเซเชŸเชซเซ‹เชฒเชฟเชฏเซ‹เชฎเชพเช‚ เช…เชจเชพเชตเชถเซเชฏเช• เชฐเชนเซ‡เชถเซ‡ เชจเชนเซ€เช‚. เชคเซ‡เชฅเซ€, เชฎเซ‡เช‚ เชธเชฐเซเชตเชฐ เชเชกเชฎเชฟเชจเชจเซ‡ เชชเชคเซเชฐ เชฒเช–เซเชฏเซ‹, เช…เชจเซ‡ เชคเซ‡เชฃเซ‡ เชฎเชจเซ‡ เชเช• เชฌเซ‹เชŸ เชฒเช–เชตเชพเชจเซเช‚ เช•เชนเซเชฏเซเช‚ เชœเซ‡ เชตเชฐเซเชฒเซเชก เช“เชซ เชŸเซ‡เชจเซเช•เซเชธเชฎเชพเช‚ เช–เซ‡เชฒเชพเชกเซ€เชจเชพ เช†เช‚เช•เชกเชพ เชฌเชคเชพเชตเชถเซ‡.

เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชฎเช‚เชš

VPS เชธเชฐเซเชตเชฐ เชชเชฐ เชœเชฎเชพเชตเชŸ เชธเชพเชฅเซ‡ .NET เช•เซ‹เชฐ เชชเชฐ เชกเชฟเชธเซเช•เซ‹เชฐเซเชก เชฌเซ‹เชŸ เชฌเชจเชพเชตเชตเซเช‚
เชกเชฟเชธเซเช•เซเชฐเซ‹เชก
เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เชฌเซ‹เชŸเชจเซ‡ เชฒเช–เชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ€เช เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚, เช…เชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เชกเชฟเชธเซเช•เซ‹เชฐเซเชก เชฎเชพเชŸเซ‡ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชคเชฎเชจเซ‡ เชœเชฐเซ‚เชฐ เช›เซ‡:

  1. เชกเชฟเชธเซเช•เซ‹เชฐเซเชก เชเช•เชพเช‰เชจเซเชŸเชฎเชพเช‚ เชฒเซ‹เช—เชฟเชจ เช•เชฐเซ‹ เชฒเชฟเช‚เช•
  2. "เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ" เชŸเซ‡เชฌเชฎเชพเช‚, "เชจเชตเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ" เชฌเชŸเชจ เชชเชฐ เช•เซเชฒเชฟเช• เช•เชฐเซ‹ เช…เชจเซ‡ เชฌเซ‹เชŸเชจเซ‡ เชจเชพเชฎ เช†เชชเซ‹
  3. เชคเชฎเชพเชฐเชพ เชฌเซ‰เชŸเชฎเชพเช‚ เชฒเซ‰เช— เช‡เชจ เช•เชฐเซ€เชจเซ‡ เช…เชจเซ‡ "เชธเซ‡เชŸเชฟเช‚เช—เซเชธ" เชธเซ‚เชšเชฟเชฎเชพเช‚ "เชฌเซ‹เชŸ" เชŸเซ…เชฌ เชถเซ‹เชงเซ€เชจเซ‡ เชฌเซ‰เชŸ เชŸเซ‹เช•เชจ เชฎเซ‡เชณเชตเซ‹
  4. เชŸเซ‹เช•เชจ เช•เซเชฏเชพเช‚เช• เชธเชพเชšเชตเซ‹

เชฏเซเชฆเซเชง เชฐเชฎเชค

เช‰เชชเชฐเชพเช‚เชค, เชคเชฎเชพเชฐเซ‡ Wargaming API เชจเซ€ เชเช•เซเชธเซ‡เชธ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ Wargaming เชฎเชพเช‚ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช…เชนเซ€เช‚ เชชเชฃ, เชฌเชงเซเช‚ เชธเชฐเชณ เช›เซ‡:

  1. เชคเชฎเชพเชฐเชพ เชตเซ‹เชฐเช—เซ‡เชฎเชฟเช‚เช— เชเช•เชพเช‰เชจเซเชŸเชฎเชพเช‚ เชฒเซ‹เช—เชฟเชจ เช•เชฐเซ‹ เช† เชฒเชฟเช‚เช• เชฆเซเชตเชพเชฐเชพ
  2. เช…เชฎเซ‡ "เชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ" เชชเชฐ เชœเชˆเช เช›เซ€เช เช…เชจเซ‡ "เชเช• เชจเชตเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช‰เชฎเซ‡เชฐเซ‹" เชฌเชŸเชจ เชชเชฐ เช•เซเชฒเชฟเช• เช•เชฐเซ€เช เช›เซ€เช, เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซเช‚ เชจเชพเชฎ เช†เชชเซ€เชจเซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‹ เชชเซเชฐเช•เชพเชฐ เชชเชธเช‚เชฆ เช•เชฐเซ€เช เช›เซ€เช.
  3. เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ ID เชธเชพเชšเชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ

เชชเชธเช‚เชฆเช—เซ€เชจเซ€ เชธเซเชตเชคเช‚เชคเซเชฐเชคเชพ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช›เซ‡. เช•เซ‹เชˆ เชตเชฟเชเซเชฏเซเช…เชฒ เชธเซเชŸเซเชกเชฟเชฏเซ‹ เชตเชพเชชเชฐเซ‡ เช›เซ‡, เช•เซ‹เชˆ เชฐเชพเชˆเชกเชฐ, เช•เซ‹เชˆ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชชเชพเชตเชฐเชซเซเชฒ เชนเซ‹เชฏ เช›เซ‡ เช…เชจเซ‡ เชตเชฟเชฎเชฎเชพเช‚ เช•เซ‹เชก เชฒเช–เซ‡ เช›เซ‡ (เช›เซ‡เชตเชŸเซ‡, เชตเชพเชธเซเชคเชตเชฟเช• เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฐเซ‹ เชฎเชพเชคเซเชฐ เช•เซ€เชฌเซ‹เชฐเซเชกเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เช–เชฐเซเช‚ เชจเซ‡?). เชœเซ‹ เช•เซ‡, Discord API เชจเซ‹ เช…เชฎเชฒ เชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเซ‡ เชฌเชฟเชจเชธเชคเซเชคเชพเชตเชพเชฐ C# เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ โ€œDSharpPlusโ€ เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เช•เซเชฏเชพเช‚ เชคเซ‹ NuGet เชฎเชพเช‚เชฅเซ€ เช…เชฅเชตเชพ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚เชฅเซ€ เชธเซเชคเซเชฐเซ‹เชคเซ‹ เชœเชพเชคเซ‡ เชฌเชจเชพเชตเซ€เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชœเซ‡เช“ เชœเชพเชฃเชคเชพ เชจเชฅเซ€ เช…เชฅเชตเชพ เชญเซ‚เชฒเซ€ เช—เชฏเชพ เช›เซ‡ เช•เซ‡ เชจเซเชฏเซเช—เซ‡เชŸเชฎเชพเช‚เชฅเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเซ€.เชตเชฟเชเซเชฏเซเช…เชฒ เชธเซเชŸเซเชกเชฟเชฏเซ‹ เชฎเชพเชŸเซ‡เชจเซ€ เชธเซ‚เชšเชจเชพเช“

  1. เชŸเซ‡เชฌ เชชเชฐ เชœเชพเช“ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ - เชจเซเชฏเซเช—เซ‡เชŸ เชชเซ‡เช•เซ‡เชœเซ‹ เชฎเซ‡เชจเซ‡เชœ เช•เชฐเซ‹;
  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 เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซเช‚ เช‰เชชเชจเชพเชฎ เชฎเซ‡เชณเชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡.

เช† เชฐเซ€เชคเซ‡, เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ & เชฅเซ€ เชถเชฐเซ‚ เชฅเชคเซ‹ เช•เซ‹เชˆเชชเชฃ เชธเช‚เชฆเซ‡เชถ เชฎเซ‹เช•เชฒเซ‹ เช›เซ‹, เชคเซเชฏเชพเชฐเซ‡ เชฌเซ‹เชŸ เชคเชฎเชจเซ‡ เชถเซเชญเซ‡เชšเซเช›เชพ เชชเชพเช เชตเชถเซ‡.

เช† เช•เชพเชฐเซเชฏเชจเชพ เช…เช‚เชคเซ‡, เชคเชฎเชพเชฐเซ‡ 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;
        }

เชงเซเชฏเชพเชจ เช†เชชเซ‹! เชฌเชงเชพ เชŸเซ‹เช•เชจเซเชธ เช…เชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ ID เชจเซ‡ เชธเซเชชเชทเซเชŸ เชŸเซ‡เช•เซเชธเซเชŸเชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชธเช–เชค เชญเชฒเชพเชฎเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ€ เชจเชฅเซ€! เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ, เชกเชฟเชธเซเช•เซ‹เชฐเซเชก เช†เชตเชพ เชŸเซ‹เช•เชจเซเชธ เชชเชฐ เชชเซเชฐเชคเชฟเชฌเช‚เชง เชฎเซ‚เช•เซ‡ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เชคเซ‡เช“ เชตเชฟเชถเซเชตเชตเซเชฏเชพเชชเซ€ เชจเซ‡เชŸเชตเชฐเซเช•เชฎเชพเช‚ เชชเซเชฐเชตเซ‡เชถ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชตเชงเซเชฎเชพเช‚ เชตเชงเซ, เชฌเซ‹เชŸ เชนเซเชฎเชฒเชพเช–เซ‹เชฐเซ‹ เชฆเซเชตเชพเชฐเชพ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡.

VPS - เชธเชฐเซเชตเชฐ เชชเชฐ เชœเชฎเชพเชตเซ‹

VPS เชธเชฐเซเชตเชฐ เชชเชฐ เชœเชฎเชพเชตเชŸ เชธเชพเชฅเซ‡ .NET เช•เซ‹เชฐ เชชเชฐ เชกเชฟเชธเซเช•เซ‹เชฐเซเชก เชฌเซ‹เชŸ เชฌเชจเชพเชตเชตเซเช‚

เชเช•เชตเชพเชฐ เชคเชฎเซ‡ เชฌเซ‹เชŸ เชธเชพเชฅเซ‡ เชชเซ‚เชฐเซเชฃ เช•เชฐเซ€ เชฒเซ‹ เชคเซ‡ เชชเช›เซ€, เชคเซ‡เชจเซ‡ เชธเชฐเซเชตเชฐ เชชเชฐ เชนเซ‹เชธเซเชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเซ‡ เชธเชคเชค 24/7 เชšเชพเชฒเชคเซเช‚ เชนเซ‹เชฏ. เช† เช เชนเช•เซ€เช•เชคเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เช›เซ‡ เช•เซ‡ เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชšเชพเชฒเซ€ เชฐเชนเซ€ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชฌเซ‹เชŸ เชชเชฃ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡. เชœเชฒเชฆเซ€ เชคเชฎเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฌเช‚เชง เช•เชฐเซ‹ เช›เซ‹, เชคเชฎเชพเชฐเซ‹ เชฌเซ‹เชŸ เชชเชฃ เชŠเช‚เช˜เซ€ เชœเชพเชฏ เช›เซ‡.

เชตเชฟเชจเซเชกเซ‹เช เช…เชจเซ‡ เชฒเชฟเชจเช•เซเชธ เชฌเช‚เชจเซ‡ เชชเชฐ เช† เชตเชฟเชถเซเชตเชฎเชพเช‚ เช˜เชฃเชพ VPS เชธเชฐเซเชตเชฐเซเชธ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เช›เซ‡, เชœเซ‹ เช•เซ‡, เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚, เชคเซ‡ Linux เชชเชฐ เชนเซ‹เชธเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช–เซ‚เชฌ เชธเชธเซเชคเซเช‚ เช›เซ‡.

เชกเชฟเชธเซเช•เซ‹เชฐเซเชก เชธเชฐเซเชตเชฐ เชชเชฐ, เชฎเชจเซ‡ 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# เชฎเชพเช‚ เชจเชตเซเช‚ เชœเซเชžเชพเชจ เชฎเชณเซเชฏเซเช‚, เช…เชจเซ‡ Linux เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซเชฏเซเช‚.

เชกเชฟเชธเซเช•เซ‹เชฐเซเชก เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ‡ เชฒเชฟเช‚เช•. เชœเซ‡เช“ เชตเซ‹เชฐเช—เซ‡เชฎเชฟเช‚เช— เช—เซ‡เชฎเซเชธ เชฐเชฎเซ‡ เช›เซ‡.
เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€ เชธเชพเชฅเซ‡ เชฒเชฟเช‚เช• เช•เชฐเซ‹ เชœเซเชฏเชพเช‚ เชกเชฟเชธเซเช•เซ‹เชฐเซเชก เชฌเซ‹เชŸ เชธเซเชฅเชฟเชค เช›เซ‡.
DSharpPlus เชญเช‚เชกเชพเชฐ เชธเชพเชฅเซ‡ เชฒเชฟเช‚เช• เช•เชฐเซ‹.
เชคเชฎเชพเชฐเซเช‚ เชงเซเชฏเชพเชจ เชฌเชฆเชฒ เช†เชญเชพเชฐ!

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹