IRC parsing, tokenization, and state handling in C#
1namespace IRCRobots;
2
3public class Bot : IBot
4{
5 private readonly Dictionary<string, Server> _servers = [];
6 private readonly Queue<Server> _serverQueue = [];
7
8 public Server CreateServer(string name)
9 {
10 throw new NotImplementedException();
11 }
12
13 public Task Disconnected(Server server)
14 {
15 throw new NotImplementedException();
16 }
17
18 public async Task DisconnectAsync(Server server)
19 {
20 _servers.Remove(server.Name);
21 await server.DisconnectAsync();
22 }
23
24 public async Task<Server> AddServerAsync(string name, ConnectionParams connectionParams)
25 {
26 var server = CreateServer(name);
27 _servers[name] = server;
28 await server.ConnectAsync();
29 _serverQueue.Enqueue(server);
30 return server;
31 }
32
33 public Task RunAsync()
34 {
35 return Task.CompletedTask;
36 }
37}
38
39public interface IBot
40{
41 Server CreateServer(string name);
42 Task Disconnected(Server server);
43 Task DisconnectAsync(Server server);
44 Task<Server> AddServerAsync(string name, ConnectionParams connectionParams);
45 Task RunAsync();
46}