
Olá, Khabrovchans!
Hoje você lerá um artigo que mostrará como criar um bot usando C # no .NET Core e como obtê-lo em um servidor remoto.
O artigo consistirá de um plano de fundo, uma etapa preparatória, a lógica de escrita e a transferência de um bot para um servidor remoto.
Espero que este artigo ajude muitos iniciantes.
Antecedentes
Tudo começou em uma noite de outono sem sono que passei no servidor Discord. Desde que me juntei a ele relativamente recentemente, comecei a estudá-lo de cima a baixo. Tendo encontrado o canal de texto "Jobs", fiquei interessado, abri-o e encontrei entre as propostas que não eram interessantes para mim:
"Programador (desenvolvedor de bot)
Requisitos:
- conhecimento de linguagens de programação;
- capacidade de auto-aprendizagem.
Desejos:
- capacidade de entender o código de outra pessoa;
- conhecimento da funcionalidade do DISCORD.
Tarefas:
- desenvolvimento de bot;
- suporte e manutenção do bot.
Seu benefício:
- A capacidade de apoiar e influenciar o projeto que você gosta;
- Ganhar experiência em trabalho em equipe;
- Uma oportunidade para demonstrar e melhorar as habilidades existentes. ”
Isso me interessou instantaneamente. Sim, eles não pagaram por esse trabalho, mas não exigiram nenhuma obrigação de sua parte e não será supérfluo no portfólio. Então, eu escrevi o administrador do servidor e ele me pediu para escrever um bot que mostrasse as estatísticas dos jogadores no World of Tanks.
Fase preparatória
DiscrodAntes de começar a escrever nosso bot, você precisa criá-lo para o Discord. Você precisa:
- Faça login na conta do Discord em
- Na guia "Aplicativos", clique no botão "Novo aplicativo" e nomeie o bot
- Obtenha o token do bot fazendo login no seu bot e localizando a guia "Bot" na lista "Configurações"
- Salvar token em algum lugar
WargamingVocê também deve criar um aplicativo no Wargaming para acessar a API do Wargaming. Aqui também tudo é simples:
- Vamos para a conta Wargaming neste link
- Vá para "Meus aplicativos" e clique no botão "Adicionar novo aplicativo", fornecendo o nome do aplicativo e selecionando seu tipo
- Salvar ID do aplicativo
De softwareJá existe liberdade de escolha. Alguém usa o Visual Studio, alguém Rider, alguém geralmente é poderoso e escreve código no Vim (ainda assim, programadores reais usam apenas o teclado, certo?). No entanto, para não implementar a API Discord, você pode usar a biblioteca não oficial do C # “DSharpPlus”. Ele pode ser instalado no NuGet ou coletando você mesmo a fonte do repositório.
Para quem não sabe ou esqueceu como instalar aplicativos do NuGet.Instruções para o Visual Studio- Vá para a guia Projeto - NuGet Package Management;
- Clique na revisão e digite "DSharpPlus" no campo de pesquisa;
- Nós selecionamos e instalamos a estrutura;
- LUCRO!
A fase preparatória terminou, você pode continuar escrevendo o bot.
Lógica de ortografia

Não consideraremos toda a lógica do aplicativo, mostrarei apenas como trabalhar com a interceptação de mensagens pelo bot e como trabalhar com a API Wargaming.
O trabalho com o bot Discord ocorre por meio da função static assíncrona Task MainTask (string [] args);
Para chamar esta função, em Main é necessário registrar
MainTask(args).ConfigureAwait(false).GetAwaiter().GetResult();
Em seguida, você precisa inicializar seu bot:
discord = new DiscordClient(new DiscordConfiguration { Token = token, TokenType = TokenType.Bot, UseInternalLogHandler = true, LogLevel = LogLevel.Debug });
Onde token é o token do seu bot.
Então, através do lambda, escrevemos os comandos necessários que o bot deve executar:
discord.MessageCreated += async e => { string message = e.Message.Content; if (message.StartsWith("&")) { await e.Message.RespondAsync(“Hello, ” + e.Author.Username); } };
Onde e.Author.Username - obtendo o apelido do usuário.
Assim, quando você envia qualquer mensagem que comece com &, o bot o receberá.
No final desta função, você precisa se registrar para aguardar discord.ConnectAsync (); e aguarde Task.Delay (-1);
Isso permitirá que você execute comandos em segundo plano sem ocupar o segmento principal.
Agora você precisa lidar com a API Wargaming. Tudo é simples aqui - escreva solicitações CURL, obtenha a resposta na forma de sequências JSON, retire os dados necessários de lá e faça manipulações nelas.
Um exemplo de trabalho com WargamingAPI public Player FindPlayer(string searchNickname) {
Atenção! Não é estritamente recomendado armazenar todos os tokens e IDs de aplicativos em texto não criptografado! No mínimo - o Discord proíbe esses tokens quando chegam à rede mundial, no máximo - o bot começa a usar criminosos cibernéticos.
Implantar no servidor VPS

Depois de concluir o bot, você precisa colocá-lo em um servidor que esteja constantemente em execução 24/7. Isso ocorre porque, quando seu aplicativo funciona, o bot também funciona. Assim que você desliga o aplicativo, seu bot adormece.
Muitos servidores VPS existem neste mundo, tanto no Windows quanto no Linux, mas na maioria dos casos, o Linux é várias vezes mais barato para hospedar.
No servidor Discord, fui aconselhado pelo vscale.io e imediatamente criei um servidor virtual no Ubuntu e carreguei o bot. Não descreverei como este site funciona, mas seguirei imediatamente para as configurações de bot.
Primeiro de tudo, você precisa instalar o software necessário que executará nosso bot escrito no .NET Core.
Como fazer isso é descrito aqui .
Em seguida, você precisa fazer o upload do bot para um serviço Git, como o GitHub e similares, e cloná-lo em um servidor VPS ou fazer o download do bot de outras maneiras. Observe que você só terá um console, não haverá GUI. Absolutamente.
Depois de baixar o seu bot, você precisa executá-lo. Para fazer isso, você precisa:
- Restaurar todas as dependências: restauração dotnet
- Compilar Aplicativo: dotnet build name_project.sln -c Release
- Vá para a DLL criada;
- dotnet name_of_file.dll
Parabéns! Seu bot está em execução. No entanto, o bot, infelizmente, ocupa o console e não será fácil sair do servidor VPS. Além disso, no caso de uma reinicialização do servidor, você terá que iniciar o bot novamente. Existem algumas maneiras de sair da situação. Todos eles estão relacionados à inicialização na inicialização do servidor:
- Adicionar execução de script ao /etc/init.d
- Crie um serviço que será iniciado na inicialização.
Não vejo sentido em detalhá-los; tudo é descrito em detalhes suficientes na Internet.
Conclusões
Fico feliz por ter assumido essa tarefa. Esta foi minha primeira experiência em desenvolvimento de bot e estou feliz por ter adquirido novos conhecimentos em C # e trabalhando com Linux.
Link para Discord - servidor.
Para quem joga jogos de Wargaming.Link para o repositório em que o bot Discord está localizado.Link para o repositório DSharpPlus.Obrigado pela atenção!