C# Discord bot made using NetCord for keeping a TikTok-style streak
1using Microsoft.Extensions.DependencyInjection;
2using NetCord.Gateway;
3using NetCord.Hosting.Gateway;
4using StreakBot.Services;
5
6namespace StreakBot.Handlers;
7
8public class MessageCreateHandler : IMessageCreateGatewayHandler
9{
10 private readonly IServiceScopeFactory _scopeFactory;
11
12 public MessageCreateHandler(IServiceScopeFactory scopeFactory)
13 {
14 _scopeFactory = scopeFactory;
15 }
16
17 public async ValueTask HandleAsync(Message message)
18 {
19 if (message.Author.IsBot)
20 return;
21
22 using var scope = _scopeFactory.CreateScope();
23 var streakService = scope.ServiceProvider.GetRequiredService<StreakService>();
24
25 if (message.GuildId is null)
26 {
27 // DM message - process for DM streaks
28 await streakService.ProcessDmMessageAsync(message.Author.Id, message.ChannelId);
29 }
30 else
31 {
32 // Server message - process for server streaks
33 await streakService.ProcessMessageAsync(message.Author.Id, message.GuildId.Value);
34 }
35 }
36}