···1using Microsoft.EntityFrameworkCore;
02using NetCord.Rest;
3using StreakBot.Data;
4using StreakBot.Data.Entities;
···11{
12 private readonly StreakDbContext _context;
13 private readonly RestClient _restClient;
01415- public ChannelService(StreakDbContext context, RestClient restClient)
16 {
17 _context = context;
18 _restClient = restClient;
019 }
2021 public async Task UpdateStreakChannelAsync(ulong serverId, int streakCount, bool endOfDay = false)
···106 {
107 if (user1NeedsReminder)
108 {
109- var dmChannel = await _restClient.GetDMChannelAsync(user1Id);
110- var message = new MessageProperties()
111- .WithContent($"Your streak with <@{user2Id}> will reset in less than an hour! Send a message in the server to keep it alive!");
112- await _restClient.SendMessageAsync(dmChannel.Id, message);
0000000113 }
114115 if (user2NeedsReminder)
116 {
117- var dmChannel = await _restClient.GetDMChannelAsync(user2Id);
118- var message = new MessageProperties()
119- .WithContent($"Your streak with <@{user1Id}> will reset in less than an hour! Send a message in the server to keep it alive!");
120- await _restClient.SendMessageAsync(dmChannel.Id, message);
0000000121 }
122 }
123
···1using Microsoft.EntityFrameworkCore;
2+using Microsoft.Extensions.Logging;
3using NetCord.Rest;
4using StreakBot.Data;
5using StreakBot.Data.Entities;
···12{
13 private readonly StreakDbContext _context;
14 private readonly RestClient _restClient;
15+ private readonly ILogger<ChannelService> _logger;
1617+ public ChannelService(StreakDbContext context, RestClient restClient, ILogger<ChannelService> logger)
18 {
19 _context = context;
20 _restClient = restClient;
21+ _logger = logger;
22 }
2324 public async Task UpdateStreakChannelAsync(ulong serverId, int streakCount, bool endOfDay = false)
···109 {
110 if (user1NeedsReminder)
111 {
112+ try
113+ {
114+ var dmChannel = await _restClient.GetDMChannelAsync(user1Id);
115+ var message = new MessageProperties()
116+ .WithContent($"Your streak with <@{user2Id}> will reset in less than an hour! Send a message in the server to keep it alive!");
117+ await _restClient.SendMessageAsync(dmChannel.Id, message);
118+ }
119+ catch (RestException)
120+ {
121+ _logger.LogWarning("Failed to send streak reminder DM to user {UserId}", user1Id);
122+ }
123 }
124125 if (user2NeedsReminder)
126 {
127+ try
128+ {
129+ var dmChannel = await _restClient.GetDMChannelAsync(user2Id);
130+ var message = new MessageProperties()
131+ .WithContent($"Your streak with <@{user1Id}> will reset in less than an hour! Send a message in the server to keep it alive!");
132+ await _restClient.SendMessageAsync(dmChannel.Id, message);
133+ }
134+ catch (RestException)
135+ {
136+ _logger.LogWarning("Failed to send streak reminder DM to user {UserId}", user2Id);
137+ }
138 }
139 }
140