เบเบฒเบ™เบชเป‰เบฒเบ‡ Discord bot เป€เบ—เบดเบ‡ .NET Core เบ”เป‰เบงเบเบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบเบฑเบšเป€เบŠเบตเบšเป€เบงเบต VPS

เบเบฒเบ™เบชเป‰เบฒเบ‡ Discord bot เป€เบ—เบดเบ‡ .NET Core เบ”เป‰เบงเบเบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบเบฑเบšเป€เบŠเบตเบšเป€เบงเบต VPS

เบชเบฐเบšเบฒเบเบ”เบต, เบŠเบฒเบงเป€เบกเบทเบญเบ‡ Khabrovsk!

เบกเบทเป‰เบ™เบตเป‰เบ—เปˆเบฒเบ™เบˆเบฐเบญเปˆเบฒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ—เบตเปˆเบˆเบฐเบšเบญเบเบ—เปˆเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบชเป‰เบฒเบ‡ bot เป‚เบ”เบเปƒเบŠเป‰ C# เปƒเบ™ .NET Core, เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบ.

เบšเบปเบ”เบ„เบงเบฒเบกเบˆเบฐเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบžเบทเป‰เบ™เบ–เบฒเบ™, เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบเบฐเบเบฝเบก, เบเบฒเบ™เบ‚เบฝเบ™เป€เบซเบ”เบœเบปเบ™เปเบฅเบฐเบเบฒเบ™เป‚เบญเบ™ bot เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบ.

เบ‚เป‰เบญเบเบซเบงเบฑเบ‡เบงเปˆเบฒเบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบœเบนเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบซเบผเบฒเบเบ„เบปเบ™.

เบ›เบฐเบงเบฑเบ”เบชเบฒเบ”

เบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ•เบญเบ™เบเบฒเบ‡เบ„เบทเบ™เบ”เบนเปƒเบšเป„เบกเป‰เบฅเบปเปˆเบ™ sleepless, เบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเปƒเบŠเป‰เป€เบงเบฅเบฒเบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ Discord. เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบกเบฑเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบชเบถเบเบชเบฒเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เปเบฅเบฐเบ™เบญเบ. เป‚เบ”เบเป„เบ”เป‰เบ„เบปเป‰เบ™เบžเบปเบšเบŠเปˆเบญเบ‡เบ—เบฒเบ‡เบ‚เปเป‰เบ„เบงเบฒเบก "เบงเบฝเบเบซเบงเปˆเบฒเบ‡", เบ‚เป‰เบญเบเบชเบปเบ™เปƒเบˆ, เป€เบ›เบตเบ”เบกเบฑเบ™, เปเบฅเบฐเบžเบปเบšเบ‚เปเป‰เบชเบฐเป€เบซเบ™เบตเบ—เบตเปˆเบšเปเปˆเบชเบปเบ™เปƒเบˆเบ‚เป‰เบญเบ, เบ™เบตเป‰:

โ€œเป‚เบ›เบฅเปเบเบฅเบก (เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบšเบฑเบญเบ”)
เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™:

  • เบ„เบงเบฒเบกเบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบก;
  • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบฎเบฝเบ™เบฎเบนเป‰เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡.

เบ„เบงเบฒเบกเบ›เบฒเบ”เบ–เบฐเบซเบ™เบฒ:

  • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ„เบปเบ™เบญเบทเปˆเบ™;
  • เบ„เบงเบฒเบกเบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ DISCORD.

เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡:

  • เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ bot;
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปเบฅเบฐเบšเปเบฒเบฅเบธเบ‡เบฎเบฑเบเบชเบฒเบ‚เบญเบ‡ bot เป„เบ”เป‰.

เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™:

  • เป‚เบญเบเบฒเบ”เบ—เบตเปˆเบˆเบฐเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปเบฅเบฐเบกเบตเบญเบดเบ”เบ—เบดเบžเบปเบ™เบ•เปเปˆเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบกเบฑเบ;
  • เบกเบตเบ›เบฐเบชเบปเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเป€เบ›เบฑเบ™เบ—เบตเบก;
  • เป‚เบญเบเบฒเบ”เบ—เบตเปˆเบˆเบฐเบชเบฐเปเบ”เบ‡เปเบฅเบฐเบ›เบฑเบšเบ›เบธเบ‡เบ—เบฑเบเบชเบฐเบ—เบตเปˆเบกเบตเบขเบนเปˆ."


เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบ‚เบญเบ‡เบ‚เป‰เบญเบเบ—เบฑเบ™เบ—เบต. เปเบกเปˆเบ™เปเบฅเป‰เบง, เบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เบˆเปˆเบฒเบเป€เบ‡เบดเบ™เบชเปเบฒเบฅเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบ™เบตเป‰, เปเบ•เปˆเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบžเบฑเบ™เบ—เบฐเปƒเบ”เป†เบˆเบฒเบเป€เบˆเบปเป‰เบฒ, เปเบฅเบฐเบกเบฑเบ™เบˆเบฐเบšเปเปˆเป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เป€เบชเบ”เป€เบซเบผเบทเบญเปƒเบ™เบซเบผเบฑเบเบŠเบฑเบšเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ‚เบฝเบ™เป„เบ›เบซเบฒเบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เปเบฅเบฐเบฅเบฒเบงเบ‚เปเปƒเบซเป‰เบ‚เป‰เบญเบเบ‚เบฝเบ™ bot เบ—เบตเปˆเบˆเบฐเบชเบฐเปเบ”เบ‡เบชเบฐเบ–เบดเบ•เบดเบ‚เบญเบ‡เบœเบนเป‰เบซเบผเบดเป‰เบ™เปƒเบ™ World of Tanks.

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฝเบกเบžเป‰เบญเบก

เบเบฒเบ™เบชเป‰เบฒเบ‡ Discord bot เป€เบ—เบดเบ‡ .NET Core เบ”เป‰เบงเบเบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบเบฑเบšเป€เบŠเบตเบšเป€เบงเบต VPS
เบ›เบฐเบ•เบดเป€เบชเบ”
เบเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบฝเบ™ bot เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบกเบฑเบ™เบชเปเบฒเบฅเบฑเบš Discord. เป€เบˆเบปเป‰เบฒโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™:

  1. เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบšเบฑเบ™เบŠเบต Discord เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ
  2. เปƒเบ™เปเบ–เบš "เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ", เปƒเบซเป‰เบ„เบฅเบดเบเปƒเบชเปˆเบ›เบธเปˆเบก "เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปƒเบซเบกเปˆ" เปเบฅเบฐเบ•เบฑเป‰เบ‡เบŠเบทเปˆ bot เป„เบ”เป‰
  3. เป„เบ”เป‰เบฎเบฑเบš token bot เป‚เบ”เบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš bot เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเบŠเบญเบเบซเบฒเปเบ–เบš "Bot" เปƒเบ™เบฅเบฒเบเบเบฒเบ™ "เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ"
  4. เบšเบฑเบ™เบ—เบถเบเป‚เบ—เป€เบ„เบฑเบ™เบขเบนเปˆเบšเปˆเบญเบ™เปƒเบ”เบšเปˆเบญเบ™เปœเบถเปˆเบ‡

Wargaming

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบ™ Wargaming เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ Wargaming API. เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เบ„เบทเบเบฑเบ™:

  1. เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบšเบฑเบ™เบŠเบต Wargaming เบ‚เบญเบ‡เบ—เปˆเบฒเบ™ เบœเปˆเบฒเบ™เบฅเบดเป‰เบ‡เบ™เบตเป‰
  2. เป„เบ›เบ—เบตเปˆ "เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ" เปเบฅเบฐเบเบปเบ”เบ›เบธเปˆเบก "เป€เบžเบตเปˆเบกเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบซเบกเปˆ", เปƒเบซเป‰เบŠเบทเปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเป€เบฅเบทเบญเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบกเบฑเบ™.
  3. เบเบณเบฅเบฑเบ‡เบšเบฑเบ™เบ—เบถเบ ID เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™

เบŠเบญเบšเปเบง

เบกเบตเป€เบชเบฅเบตเบžเบฒเบšเปƒเบ™เบเบฒเบ™เป€เบฅเบทเบญเบเบขเบนเปˆเปเบฅเป‰เบง. เบšเบฒเบ‡เบ„เบปเบ™เปƒเบŠเป‰ Visual Studio, เบšเบฒเบ‡ Rider, เบšเบฒเบ‡เบ„เบปเบ™เบกเบตเบญเปเบฒเบ™เบฒเบ”เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เปเบฅเบฐเบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เปƒเบ™ Vim (เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบฑเบ‡เบซเบกเบปเบ”, เบœเบนเป‰เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบžเบฝเบ‡เปเบ•เปˆเปƒเบŠเป‰เปเบ›เป‰เบ™เบžเบดเบก, เปเบกเปˆเบ™เบšเป?). เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” Discord API, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” C # เบ—เบตเปˆเบšเปเปˆเป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™ "DSharpPlus". เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบกเบฑเบ™เป„เบ”เป‰เบˆเบฒเบ NuGet, เบซเบผเบทเป‚เบ”เบเบเบฒเบ™เป€เบเบฑเบšเบเปเบฒเปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡เบˆเบฒเบ repository.

เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบšเปเปˆเบฎเบนเป‰เบซเบผเบทเบฅเบทเบกเบงเบดเบ—เบตเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบˆเบฒเบ NuGet.เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเปเบฒเบฅเบฑเบš Visual Studio

  1. เป„เบ›เบ—เบตเปˆเปเบ–เบšเป‚เบ„เบ‡เบเบฒเบ™ - เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบซเบธเป‰เบกเบซเปเปˆ NuGet;
  2. เปƒเบซเป‰เบ„เบฅเบดเบเปƒเบชเปˆเบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบ„เบทเบ™เปเบฅเบฐเปƒเบชเปˆ "DSharpPlus" เปƒเบ™เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ„เบปเป‰เบ™เบซเบฒ;
  3. เป€เบฅเบทเบญเบเปเบฅเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเบญเบš;
  4. เป‚เบ›เบฃเป„เบŸเบฅเปŒ!

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบเบฐเบเบฝเบกเปเบกเปˆเบ™เบชเบดเป‰เบ™เบชเบธเบ”เบฅเบปเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเป‰เบฒเบเป„เบ›เบ‚เบฝเบ™ bot เป„เบ”เป‰.

เบเบฒเบ™เบ‚เบฝเบ™เป€เบซเบ”เบœเบปเบ™

เบเบฒเบ™เบชเป‰เบฒเบ‡ Discord bot เป€เบ—เบดเบ‡ .NET Core เบ”เป‰เบงเบเบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบเบฑเบšเป€เบŠเบตเบšเป€เบงเบต VPS

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเป€เบšเบดเปˆเบ‡เบ—เบธเบเป€เบซเบ”เบœเบปเบ™เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™; เบ‚เป‰เบญเบเบžเบฝเบ‡เปเบ•เปˆเบˆเบฐเบชเบฐเปเบ”เบ‡เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš bot interception เบ‚เบญเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Wargaming API.

เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Discord bot เป€เบเบตเบ”เบ‚เบถเป‰เบ™เป‚เบ”เบเบœเปˆเบฒเบ™ static async Task MainTask(string[] args);
เป€เบžเบทเปˆเบญเป€เบญเบตเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰, เปƒเบ™ Main เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™

MainTask(args).ConfigureAwait(false).GetAwaiter().GetResult();

เบ•เปเปˆเป„เบ›, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ bot เบ‚เบญเบ‡เบ—เปˆเบฒเบ™:

discord = new DiscordClient(new DiscordConfiguration
{
    Token = token,
    TokenType = TokenType.Bot,
    UseInternalLogHandler = true,
    LogLevel = LogLevel.Debug
});

เบšเปˆเบญเบ™เบ—เบตเปˆ token เปเบกเปˆเบ™ token เบ‚เบญเบ‡ bot เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.
เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ lambda, เบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆ bot เบ„เบงเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”:

discord.MessageCreated += async e =>
{
    string message = e.Message.Content;
    if (message.StartsWith("&"))
    {
        await e.Message.RespondAsync(โ€œHello, โ€ + e.Author.Username);
    }
};

เบšเปˆเบญเบ™เบ—เบตเปˆ e.Author.Username โ€“ เป„เบ”เป‰เบฎเบฑเบšเบŠเบทเปˆเบซเบผเบดเป‰เบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰.

เบงเบดเบ—เบตเบ™เบตเป‰, เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเปƒเบ”เป†เบ—เบตเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ &, bot เบˆเบฐเบŠเบปเบกเป€เบŠเบตเบเบ—เปˆเบฒเบ™.

เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ‚เบฝเบ™ await discord.ConnectAsync(); เปเบฅเบฐเบฅเปเบ–เป‰เบฒ Task.Delay(-1);

เบ™เบตเป‰เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบžเบทเป‰เบ™เบซเบฅเบฑเบ‡เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ„เบญเบšเบ„เบญเบ‡เบซเบปเบงเบ‚เปเป‰เบ•เบปเป‰เบ™เบ•เป.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบˆ Wargaming API. เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰ - เบ‚เบฝเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป CURL, เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡ JSON string, เบชเบฐเบเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบˆเบฒเบเบšเปˆเบญเบ™เบ™เบฑเป‰เบ™เปเบฅเบฐเบˆเบฑเบ”เบเบฒเบ™เบกเบฑเบ™.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš 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;
        }

เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆ! เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเปเบ™เบฐ เบ™เบณ เบขเปˆเบฒเบ‡เป€เบ‚เบฑเป‰เบกเบ‡เบงเบ”เป€เบžเบทเปˆเบญเป€เบเบฑเบš tokens เปเบฅเบฐ ID เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบฑเบ‡ เปเบปเบ” เปƒเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบˆเบฐเปเบˆเป‰เบ‡! เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบ, Discord เบซเป‰เบฒเบก tokens เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบกเบทเปˆเบญเบžเบงเบเป€เบ‚เบปเบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ World Wide Web; เบชเบนเบ‡เบชเบธเบ”, bot เบˆเบฐเป€เบฅเบตเปˆเบกเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเบœเบนเป‰เป‚เบˆเบกเบ•เบต.

เบ™เบณเปƒเบŠเป‰เบเบฑเบšเป€เบŠเบตเบšเป€เบงเบต VPS

เบเบฒเบ™เบชเป‰เบฒเบ‡ Discord bot เป€เบ—เบดเบ‡ .NET Core เบ”เป‰เบงเบเบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบเบฑเบšเป€เบŠเบตเบšเป€เบงเบต VPS

เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เบเบฑเบš bot, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ–เบทเบเป‚เบฎเบ”เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡ 24/7. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ™เบทเปˆเบญเบ‡เบกเบฒเบˆเบฒเบเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ, bot เบเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบ. เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ›เบดเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, bot เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบˆเบฐเป„เบ›เบ™เบญเบ™.

เบกเบตเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ VPS เบซเบผเบฒเบเปƒเบ™เป‚เบฅเบเบ™เบตเป‰, เบ—เบฑเบ‡เบขเบนเปˆเปƒเบ™ Windows เปเบฅเบฐ Linux, เปเบ•เปˆเปƒเบ™เบเปเบฅเบฐเบ™เบตเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”, เบกเบฑเบ™เบกเบตเบฅเบฒเบ„เบฒเบ–เบทเบเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบžเบฒเบšเปƒเบ™ Linux.

เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ Discord เบžเบงเบเป€เบ‚เบปเบฒเปเบ™เบฐเบ™เปเบฒ vscale.io เบเบฑเบšเบ‚เป‰เบญเบ, เปเบฅเบฐเบ‚เป‰เบญเบเบเปเปˆเบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ virtual เปƒเบ™ Ubuntu เบ—เบฑเบ™เบ—เบตเปเบฅเบฐเบญเบฑเบšเป‚เบซเบฅเบ” bot. เบ‚เป‰เบญเบเบˆเบฐเบšเปเปˆเบญเบฐเบ—เบดเบšเบฒเบเบงเปˆเบฒเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”, เปเบ•เปˆเบˆเบฐเบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ bot เปƒเบ™เบ—เบฑเบ™เบ—เบต.

เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบŠเบญเบšเปเบงเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ bot เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ‚เบฝเบ™เปƒเบ™ .NET Core. เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบ™เบตเป‰เปเบกเปˆเบ™เป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰.

เบ•เปเปˆเป„เบ›, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบญเบฑเบšเป‚เบซเบฅเบ” bot เบเบฑเบš Git - เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบŠเบฑเปˆเบ™ GitHub เปเบฅเบฐเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™ - เปเบฅเบฐ clone เบกเบฑเบ™เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ VPS, เบซเบผเบท, เปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบญเบทเปˆเบ™เป†, เบ”เบฒเบงเบ™เปŒเป‚เบซเบฅเบ” bot เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบเบฐเบฅเบธเบ™เบฒเบฎเบฑเบšเบŠเบฒเบšเบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเบฐเบกเบตเบžเบฝเบ‡เปเบ•เปˆ console, เบšเปเปˆเบกเบต GUI. เบ—เบฑเบ‡เปเบปเบ”.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบ—เปˆเบฒเบ™เป„เบ”เป‰เบ”เบฒเบงเป‚เบซเบผเบ” bot เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เป€เบ›เบตเบ”เบ•เบปเบงเบกเบฑเบ™. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™:

  • เบŸเบทเป‰เบ™เบŸเบนเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ—เบฑเบ‡เปเบปเบ”: dotnet เบŸเบทเป‰เบ™เบŸเบน
  • เบชเป‰เบฒเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™: dotnet build name_project.sln -c Release
  • เป„เบ›เบ—เบตเปˆ DLL เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™;
  • dotnet name_of_file.dll

เบŠเบปเบกเป€เบŠเบตเบ! เบšเบฑเบญเบ”เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบเบณเบฅเบฑเบ‡เปเบฅเปˆเบ™เบขเบนเปˆ. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, bot, เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบ„เบญเบšเบ„เบญเบ‡ console, เปเบฅเบฐเบเบฒเบ™เบญเบญเบเบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ VPS เปเบกเปˆเบ™เบšเปเปˆเบ‡เปˆเบฒเบเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ–เป‰เบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ–เบทเบ rebooted, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ bot เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡. เบกเบตเบชเบญเบ‡เบงเบดเบ—เบตเบ—เบฒเบ‡เบญเบญเบเบˆเบฒเบเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™. เบžเบงเบเบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ:

  • เป€เบžเบตเปˆเบกเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบชเบฐเบ„เบฃเบดเบšเปƒเบชเปˆ /etc/init.d
  • เบชเป‰เบฒเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

เบ‚เป‰เบญเบเบšเปเปˆเป€เบซเบฑเบ™เบˆเบธเบ”เปƒเบ”เบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เบขเบนเปˆเบเบฑเบšเบžเบงเบเบกเบฑเบ™เบขเปˆเบฒเบ‡เบฅเบฐเบญเบฝเบ”; เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบเบขเปˆเบฒเบ‡เบžเบฝเบ‡เบžเปเปƒเบ™เบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”.

เบเบฒเบ™เบ„เบปเป‰เบ™เบžเบปเบš

เบ‚เป‰เบญเบเบ”เบตเปƒเบˆเบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบ™เบตเป‰. เบ™เบตเป‰เปเบกเปˆเบ™เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ bot, เปเบฅเบฐเบ‚เป‰เบญเบเบ”เบตเปƒเบˆเบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบฒเบกเบฎเบนเป‰เปƒเบซเบกเปˆเปƒเบ™ C# เปเบฅเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Linux.

เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเป€เบŠเบตเบšเป€เบงเบต Discord. เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบซเบผเบดเป‰เบ™เป€เบเบก Wargaming.
เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบ—เบตเปˆ Discord bot เบ•เบฑเป‰เบ‡เบขเบนเปˆ.
เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš DSharpPlus repository.
เบ‚เบญเบšเปƒเบˆเบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบ‚เบญเบ‡เบ—เปˆเบฒเบ™!

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™