
¡Hola Khabrovchans!
Hoy leerá un artículo que le dirá cómo crear un bot usando C # en .NET Core, y cómo obtenerlo en un servidor remoto.
El artículo consistirá en un trasfondo, una etapa preparatoria, escribir lógica y transferir un bot a un servidor remoto.
Espero que este artículo ayude a muchos principiantes.
Antecedentes
Todo comenzó en una noche de otoño sin dormir que pasé en el servidor Discord. Desde que me uní a él hace relativamente poco tiempo, comencé a estudiarlo de arriba abajo. Al encontrar el canal de texto "Empleos", me interesé, lo abrí y encontré entre las propuestas que no me interesaban, esto:
"Programador (desarrollador de bot)
Requisitos:
- conocimiento de lenguajes de programación;
- capacidad de autoaprendizaje.
Deseos:
- capacidad de entender el código de otra persona;
- conocimiento de la funcionalidad de DISCORD.
Tareas
- desarrollo de bot;
- soporte y mantenimiento del bot.
Su beneficio:
- La capacidad de apoyar e influir en el proyecto que te gusta;
- Adquiriendo experiencia de trabajo en equipo;
- Una oportunidad para demostrar y mejorar las habilidades existentes ".
Al instante me interesó. Sí, no pagaron por este trabajo, pero no le exigieron ninguna obligación y no será superfluo en la cartera. Así que le escribí al administrador del servidor, y él me pidió que escribiera un bot que mostrara las estadísticas de los jugadores en World of Tanks.
Fase preparatoria
DiscrodAntes de comenzar a escribir nuestro bot, debe crearlo para Discord. Necesitas:
- Inicie sesión en la cuenta de Discord en
- En la pestaña "Aplicaciones", haga clic en el botón "Nueva aplicación" y nombre el bot
- Obtenga el token bot iniciando sesión en su bot y buscando la pestaña "Bot" en la lista "Configuración"
- Guardar token en alguna parte
Juegos de guerraTambién debe crear una aplicación en Wargaming para acceder a la API de Wargaming. Aquí, también, todo es simple:
- Vamos a la cuenta de Wargaming en este enlace.
- Vaya a "Mis aplicaciones" y haga clic en el botón "Agregar nueva aplicación", dando el nombre de la aplicación y seleccionando su tipo
- Guardar ID de la aplicación
SoftwareYa hay libertad de elección. Alguien usa Visual Studio, alguien Rider, alguien es generalmente poderoso y escribe código en Vim (aún así, los programadores reales usan solo el teclado, ¿verdad?). Sin embargo, para no implementar la API de Discord, puede usar la biblioteca no oficial de C # "DSharpPlus". Se puede instalar desde NuGet o recogiendo la fuente del repositorio usted mismo.
Para aquellos que no saben u olvidaron cómo instalar aplicaciones desde NuGet.Instrucciones para Visual Studio- Vaya a la pestaña Proyecto - Administración de paquetes NuGet;
- Haga clic en la revisión e ingrese "DSharpPlus" en el campo de búsqueda;
- Seleccionamos e instalamos el marco;
- BENEFICIOS!
La fase preparatoria ha terminado, puede proceder a escribir el bot.
Lógica de ortografía

No consideraremos la lógica completa de la aplicación, solo mostraré cómo trabajar con la intercepción de mensajes por parte del bot y cómo trabajar con la API de Wargaming.
El trabajo con el bot Discord se realiza a través de la función Async estático Tarea MainTask (string [] args);
Para llamar a esta función, en Main es necesario registrarse
MainTask(args).ConfigureAwait(false).GetAwaiter().GetResult();
A continuación, debe inicializar su bot:
discord = new DiscordClient(new DiscordConfiguration { Token = token, TokenType = TokenType.Bot, UseInternalLogHandler = true, LogLevel = LogLevel.Debug });
Donde token es el token de tu bot.
Luego, a través de lambda, escribimos los comandos necesarios que el bot debe ejecutar:
discord.MessageCreated += async e => { string message = e.Message.Content; if (message.StartsWith("&")) { await e.Message.RespondAsync(“Hello, ” + e.Author.Username); } };
Donde e.Author.Username: obtiene el apodo del usuario.
Por lo tanto, cuando envíe cualquier mensaje que comience con &, el bot le dará la bienvenida.
Al final de esta función, debe registrarse esperar discord.ConnectAsync (); y esperar Task.Delay (-1);
Esto le permitirá ejecutar comandos en segundo plano sin ocupar el hilo principal.
Ahora debe lidiar con la API de Wargaming. Aquí todo es simple: escriba solicitudes CURL, obtenga la respuesta en forma de cadenas JSON, extraiga los datos necesarios de allí y realice manipulaciones en ellas.
Un ejemplo de trabajo con WargamingAPI public Player FindPlayer(string searchNickname) {
Atencion No se recomienda mantener todos los tokens e ID de aplicaciones en claro Como mínimo, Discord prohíbe estos tokens cuando llegan a la red mundial, como máximo, el bot comienza a usar ciberdelincuentes.
Implementar en el servidor VPS

Una vez que haya terminado con el bot, debe colocarlo en un servidor que se ejecute constantemente las 24 horas, los 7 días de la semana. Esto se debe al hecho de que cuando su aplicación funciona, el bot también funciona. Tan pronto como apaga la aplicación, su bot se queda dormido.
Existen muchos servidores VPS en este mundo, tanto en Windows como en Linux, pero en la mayoría de los casos, Linux es varias veces más barato de alojar.
En el servidor Discord, vscale.io me aconsejó, e inmediatamente creé un servidor virtual en Ubuntu y cargué el bot. No describiré cómo funciona este sitio, pero procederé inmediatamente a la configuración del bot.
En primer lugar, debe instalar el software necesario que ejecutará nuestro bot escrito en .NET Core.
Cómo hacer esto se describe aquí .
A continuación, debe cargar el bot en el servicio Git, como GitHub y similares, y clonarlo en el servidor VPS o, de otras maneras, descargar su bot. Tenga en cuenta que solo tendrá una consola, no habrá GUI. Absolutamente
Después de haber descargado su bot, debe ejecutarlo. Para hacer esto, necesitas:
- Restaurar todas las dependencias: restauración dotnet
- Aplicación de compilación: dotnet build name_project.sln -c Release
- Vaya a la DLL construida;
- dotnet name_of_file.dll
Felicidades Tu bot se está ejecutando. Sin embargo, el bot, desafortunadamente, ocupa la consola, y no será fácil salir del servidor VPS. Además, en caso de reinicio del servidor, deberá iniciar el bot nuevamente. Hay un par de formas de salir de la situación. Todos ellos están relacionados con el inicio al inicio del servidor:
- Agregar script ejecutado a /etc/init.d
- Cree un servicio que comenzará en el inicio.
No veo el punto de detallarlos; todo se describe con suficiente detalle en Internet.
Conclusiones
Me alegro de haber asumido esta tarea. Esta fue mi primera experiencia de desarrollo de bot, y me alegro de haber adquirido nuevos conocimientos en C # y trabajar con Linux.
Enlace a Discord - servidor.
Para aquellos que juegan juegos de Wargaming.Enlace al repositorio donde se encuentra el bot de Discord.Enlace al repositorio DSharpPlus.Gracias por su atencion!