Update the quickstart structure to rc3.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Discord;
|
||||
using Discord.Commands;
|
||||
using Discord.WebSocket;
|
||||
@@ -9,8 +10,8 @@ class Program
|
||||
{
|
||||
private readonly DiscordSocketClient _client;
|
||||
|
||||
// Keep the CommandService and IDependencyMap around for use with commands.
|
||||
private readonly IDependencyMap _map = new DependencyMap();
|
||||
// Keep the CommandService and IServiceCollection around for use with commands.
|
||||
private readonly IServiceCollection _map = new ServiceCollection();
|
||||
private readonly CommandService _commands = new CommandService();
|
||||
|
||||
// Program entry point
|
||||
@@ -78,22 +79,29 @@ class Program
|
||||
// Login and connect.
|
||||
await _client.LoginAsync(TokenType.Bot, /* <DON'T HARDCODE YOUR TOKEN> */);
|
||||
await _client.StartAsync();
|
||||
|
||||
|
||||
// Wait infinitely so your bot actually stays connected.
|
||||
await Task.Delay(-1);
|
||||
}
|
||||
|
||||
private IServiceProvider _services;
|
||||
|
||||
private async Task InitCommands()
|
||||
{
|
||||
// Repeat this for all the service classes
|
||||
// and other dependencies that your commands might need.
|
||||
_map.Add(new SomeServiceClass());
|
||||
_map.AddSingleton(new SomeServiceClass());
|
||||
|
||||
// Either search the program and add all Module classes that can be found:
|
||||
await _commands.AddModulesAsync(Assembly.GetEntryAssembly());
|
||||
// Or add Modules manually if you prefer to be a little more explicit:
|
||||
await _commands.AddModuleAsync<SomeModule>();
|
||||
|
||||
// When all your required services are in the collection, build the container.
|
||||
// Tip: There's an overload taking in a 'validateScopes' bool to make sure
|
||||
// you haven't made any mistakes in your dependency graph.
|
||||
_services = _map.BuildServiceProvider();
|
||||
|
||||
// Subscribe a handler to see if a message invokes a command.
|
||||
_client.MessageReceived += HandleCommandAsync;
|
||||
}
|
||||
@@ -110,14 +118,14 @@ class Program
|
||||
// you want to prefix your commands with.
|
||||
// Uncomment the second half if you also want
|
||||
// commands to be invoked by mentioning the bot instead.
|
||||
if (msg.HasCharPrefix('!', ref pos) /* || msg.HasMentionPrefix(msg.Discord.CurrentUser, ref pos) */)
|
||||
if (msg.HasCharPrefix('!', ref pos) /* || msg.HasMentionPrefix(_client.CurrentUser, ref pos) */)
|
||||
{
|
||||
// Create a Command Context
|
||||
var context = new SocketCommandContext(msg.Discord, msg);
|
||||
var context = new SocketCommandContext(_client, msg);
|
||||
|
||||
// Execute the command. (result does not indicate a return value,
|
||||
// rather an object stating if the command executed succesfully).
|
||||
var result = await _commands.ExecuteAsync(context, pos, _map);
|
||||
var result = await _commands.ExecuteAsync(context, pos, _services);
|
||||
|
||||
// Uncomment the following lines if you want the bot
|
||||
// to send a message if it failed (not advised for most situations).
|
||||
|
||||
Reference in New Issue
Block a user