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