using System; using System.Net.Http; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Discord; using Discord.WebSocket; using Discord.Commands; using _02_commands_framework.Services; namespace _02_commands_framework { // This is a minimal example of using Discord.Net's command // framework - by no means does it show everything the framework // is capable of. // // You can find samples of using the command framework: // - Here, under the 02_commands_framework sample // - https://github.com/foxbot/DiscordBotBase - a barebones bot template // - https://github.com/foxbot/patek - a more feature-filled bot, utilizing more aspects of the library class Program { static void Main(string[] args) => new Program().MainAsync().GetAwaiter().GetResult(); public async Task MainAsync() { var services = ConfigureServices(); var client = services.GetRequiredService<DiscordSocketClient>(); client.Log += LogAsync; services.GetRequiredService<CommandService>().Log += LogAsync; await client.LoginAsync(TokenType.Bot, Environment.GetEnvironmentVariable("token")); await client.StartAsync(); await services.GetRequiredService<CommandHandlingService>().InitializeAsync(); await Task.Delay(-1); } private Task LogAsync(LogMessage log) { Console.WriteLine(log.ToString()); return Task.CompletedTask; } private IServiceProvider ConfigureServices() { return new ServiceCollection() .AddSingleton<DiscordSocketClient>() .AddSingleton<CommandService>() .AddSingleton<CommandHandlingService>() .AddSingleton<HttpClient>() .AddSingleton<PictureService>() .BuildServiceProvider(); } } }