Browse Source

Tweak samples after feedback

pull/1171/head
FiniteReality 6 years ago
parent
commit
a8adbb1fe9
3 changed files with 24 additions and 25 deletions
  1. +2
    -9
      samples/01_basic_ping_bot/Program.cs
  2. +1
    -0
      samples/02_commands_framework/Program.cs
  3. +21
    -16
      samples/03_sharded_client/Program.cs

+ 2
- 9
samples/01_basic_ping_bot/Program.cs View File

@@ -14,7 +14,7 @@ namespace _01_basic_ping_bot
// - Here, under the 02_commands_framework sample // - Here, under the 02_commands_framework sample
// - https://github.com/foxbot/DiscordBotBase - a bare-bones bot template // - https://github.com/foxbot/DiscordBotBase - a bare-bones bot template
// - https://github.com/foxbot/patek - a more feature-filled bot, utilizing more aspects of the library // - https://github.com/foxbot/patek - a more feature-filled bot, utilizing more aspects of the library
class Program : IDisposable
class Program
{ {
private readonly DiscordSocketClient _client; private readonly DiscordSocketClient _client;


@@ -22,8 +22,7 @@ namespace _01_basic_ping_bot
// an asynchronous context from the beginning. // an asynchronous context from the beginning.
static void Main(string[] args) static void Main(string[] args)
{ {
using (var program = new Program())
program.MainAsync().GetAwaiter().GetResult();
new Program().MainAsync().GetAwaiter().GetResult();
} }


public Program() public Program()
@@ -73,11 +72,5 @@ namespace _01_basic_ping_bot
if (message.Content == "!ping") if (message.Content == "!ping")
await message.Channel.SendMessageAsync("pong!"); await message.Channel.SendMessageAsync("pong!");
} }

public void Dispose()
{
// Dispose of the client when we are done with it
_client.Dispose();
}
} }
} }

+ 1
- 0
samples/02_commands_framework/Program.cs View File

@@ -37,6 +37,7 @@ namespace _02_commands_framework
client.Log += LogAsync; client.Log += LogAsync;
services.GetRequiredService<CommandService>().Log += LogAsync; services.GetRequiredService<CommandService>().Log += LogAsync;


// Tokens should be considered secret data, and never hard-coded.
await client.LoginAsync(TokenType.Bot, Environment.GetEnvironmentVariable("token")); await client.LoginAsync(TokenType.Bot, Environment.GetEnvironmentVariable("token"));
await client.StartAsync(); await client.StartAsync();




+ 21
- 16
samples/03_sharded_client/Program.cs View File

@@ -13,41 +13,46 @@ namespace _03_sharded_client
// DiscordSocketClient instances (or shards) to serve a large number of guilds. // DiscordSocketClient instances (or shards) to serve a large number of guilds.
class Program class Program
{ {
private DiscordShardedClient _client;

static void Main(string[] args) static void Main(string[] args)
=> new Program().MainAsync().GetAwaiter().GetResult(); => new Program().MainAsync().GetAwaiter().GetResult();
public async Task MainAsync() public async Task MainAsync()
{ {
// You specify the amount of shards you'd like to have with the // You specify the amount of shards you'd like to have with the
// DiscordSocketConfig. Generally, it's recommended to
// DiscordSocketConfig. Generally, it's recommended to
// have 1 shard per 1500-2000 guilds your bot is in. // have 1 shard per 1500-2000 guilds your bot is in.
var config = new DiscordSocketConfig var config = new DiscordSocketConfig
{ {
TotalShards = 2 TotalShards = 2
}; };


_client = new DiscordShardedClient(config);
var services = ConfigureServices();
// You should dispose a service provider created using ASP.NET
// when you are finished using it, at the end of your app's lifetime.
// If you use another dependency injection framework, you should inspect
// its documentation for the best way to do this.
using (var services = ConfigureServices(config))
{
var client = services.GetRequiredService<DiscordShardedClient>();


// The Sharded Client does not have a Ready event.
// The ShardReady event is used instead, allowing for individual
// control per shard.
_client.ShardReady += ReadyAsync;
_client.Log += LogAsync;
// The Sharded Client does not have a Ready event.
// The ShardReady event is used instead, allowing for individual
// control per shard.
client.ShardReady += ReadyAsync;
client.Log += LogAsync;


await services.GetRequiredService<CommandHandlingService>().InitializeAsync();
await services.GetRequiredService<CommandHandlingService>().InitializeAsync();


await _client.LoginAsync(TokenType.Bot, Environment.GetEnvironmentVariable("token"));
await _client.StartAsync();
// Tokens should be considered secret data, and never hard-coded.
await client.LoginAsync(TokenType.Bot, Environment.GetEnvironmentVariable("token"));
await client.StartAsync();


await Task.Delay(-1);
await Task.Delay(-1);
}
} }


private IServiceProvider ConfigureServices()
private ServiceProvider ConfigureServices(DiscordSocketConfig config)
{ {
return new ServiceCollection() return new ServiceCollection()
.AddSingleton(_client)
.AddSingleton(new DiscordShardedClient(config))
.AddSingleton<CommandService>() .AddSingleton<CommandService>()
.AddSingleton<CommandHandlingService>() .AddSingleton<CommandHandlingService>()
.BuildServiceProvider(); .BuildServiceProvider();


Loading…
Cancel
Save