mirror of
https://github.com/PluralKit/PluralKit.git
synced 2026-02-04 04:56:49 +00:00
chore: clean up .net sentry exceptions
This commit is contained in:
parent
ce0983ba16
commit
09ed215e6c
6 changed files with 38 additions and 17 deletions
|
|
@ -2,6 +2,8 @@ using Autofac.Extensions.DependencyInjection;
|
||||||
|
|
||||||
using PluralKit.Core;
|
using PluralKit.Core;
|
||||||
|
|
||||||
|
using Sentry;
|
||||||
|
|
||||||
using Serilog;
|
using Serilog;
|
||||||
|
|
||||||
namespace PluralKit.API;
|
namespace PluralKit.API;
|
||||||
|
|
@ -21,9 +23,16 @@ public class Program
|
||||||
opts.Dsn = config.SentryUrl ?? "";
|
opts.Dsn = config.SentryUrl ?? "";
|
||||||
opts.Release = BuildInfoService.FullVersion;
|
opts.Release = BuildInfoService.FullVersion;
|
||||||
opts.AutoSessionTracking = true;
|
opts.AutoSessionTracking = true;
|
||||||
// opts.DisableTaskUnobservedTaskExceptionCapture();
|
opts.DisableUnobservedTaskExceptionCapture();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
TaskScheduler.UnobservedTaskException += (_, e) =>
|
||||||
|
{
|
||||||
|
foreach (var inner in e.Exception.Flatten().InnerExceptions)
|
||||||
|
SentrySdk.CaptureException(inner);
|
||||||
|
e.SetObserved();
|
||||||
|
};
|
||||||
|
|
||||||
await host.Services.GetRequiredService<RedisService>().InitAsync(config);
|
await host.Services.GetRequiredService<RedisService>().InitAsync(config);
|
||||||
await host.RunAsync();
|
await host.RunAsync();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -442,7 +442,7 @@ public class ProxiedMessage
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await ctx.Reply(components: await _embeds.CreateAuthorMessageComponents(user, message));
|
await ctx.Reply(components: _embeds.CreateAuthorMessageComponents(user, message));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,13 +58,19 @@ public class MessageEdited: IEventHandler<MessageUpdateEvent>
|
||||||
|
|
||||||
var channel = await _cache.TryGetChannel(guildId, evt.ChannelId); // todo: is this correct for message update?
|
var channel = await _cache.TryGetChannel(guildId, evt.ChannelId); // todo: is this correct for message update?
|
||||||
if (channel == null)
|
if (channel == null)
|
||||||
throw new Exception("could not find self channel in MessageEdited event");
|
{
|
||||||
|
_logger.Warning("could not find self channel in MessageEdited event");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!DiscordUtils.IsValidGuildChannel(channel))
|
if (!DiscordUtils.IsValidGuildChannel(channel))
|
||||||
return;
|
return;
|
||||||
var rootChannel = await _cache.GetRootChannel(guildId, channel.Id);
|
var rootChannel = await _cache.GetRootChannel(guildId, channel.Id);
|
||||||
var guild = await _cache.TryGetGuild(channel.GuildId!.Value);
|
var guild = await _cache.TryGetGuild(channel.GuildId!.Value);
|
||||||
if (guild == null)
|
if (guild == null)
|
||||||
throw new Exception("could not find self guild in MessageEdited event");
|
{
|
||||||
|
_logger.Warning("could not find self guild in MessageEdited event");
|
||||||
|
return;
|
||||||
|
}
|
||||||
var lastMessage = (await _lastMessageCache.GetLastMessage(evt.GuildId.HasValue ? evt.GuildId.Value ?? 0 : 0, evt.ChannelId))?.Current;
|
var lastMessage = (await _lastMessageCache.GetLastMessage(evt.GuildId.HasValue ? evt.GuildId.Value ?? 0 : 0, evt.ChannelId))?.Current;
|
||||||
|
|
||||||
// Only react to the last message in the channel
|
// Only react to the last message in the channel
|
||||||
|
|
|
||||||
|
|
@ -45,9 +45,16 @@ public class Init
|
||||||
opts.Dsn = services.Resolve<CoreConfig>().SentryUrl ?? "";
|
opts.Dsn = services.Resolve<CoreConfig>().SentryUrl ?? "";
|
||||||
opts.Release = BuildInfoService.FullVersion;
|
opts.Release = BuildInfoService.FullVersion;
|
||||||
opts.AutoSessionTracking = true;
|
opts.AutoSessionTracking = true;
|
||||||
// opts.DisableTaskUnobservedTaskExceptionCapture();
|
opts.DisableUnobservedTaskExceptionCapture();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
TaskScheduler.UnobservedTaskException += (_, e) =>
|
||||||
|
{
|
||||||
|
foreach (var inner in e.Exception.Flatten().InnerExceptions)
|
||||||
|
SentrySdk.CaptureException(inner);
|
||||||
|
e.SetObserved();
|
||||||
|
};
|
||||||
|
|
||||||
var config = services.Resolve<BotConfig>();
|
var config = services.Resolve<BotConfig>();
|
||||||
var coreConfig = services.Resolve<CoreConfig>();
|
var coreConfig = services.Resolve<CoreConfig>();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1004,7 +1004,7 @@ public class EmbedService
|
||||||
return eb.Build();
|
return eb.Build();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<MessageComponent[]> CreateAuthorMessageComponents(User? user, FullMessage msg)
|
public MessageComponent[] CreateAuthorMessageComponents(User? user, FullMessage msg)
|
||||||
{
|
{
|
||||||
MessageComponent authorInfo;
|
MessageComponent authorInfo;
|
||||||
var author = user != null
|
var author = user != null
|
||||||
|
|
@ -1049,16 +1049,15 @@ public class EmbedService
|
||||||
authorInfo,
|
authorInfo,
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
return (
|
return
|
||||||
[
|
[
|
||||||
new MessageComponent()
|
new MessageComponent()
|
||||||
{
|
{
|
||||||
Type = ComponentType.Text,
|
Type = ComponentType.Text,
|
||||||
Content = user != null ? $"{user.Mention()} ({user.Id})" : $"*(deleted user {msg.Message.Sender})*"
|
Content = user != null ? $"{user.Mention()} ({user.Id})" : $"*(deleted user {msg.Message.Sender})*"
|
||||||
},
|
},
|
||||||
container
|
container
|
||||||
]
|
];
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<MessageComponent[]> CreateCommandMessageInfoMessageComponents(Core.CommandMessage msg, bool showContent)
|
public async Task<MessageComponent[]> CreateCommandMessageInfoMessageComponents(Core.CommandMessage msg, bool showContent)
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ public class LastMessageCacheService
|
||||||
public async Task<CacheEntry?> GetLastMessage(ulong guild, ulong channel)
|
public async Task<CacheEntry?> GetLastMessage(ulong guild, ulong channel)
|
||||||
{
|
{
|
||||||
if (_maybeHttp is HttpDiscordCache)
|
if (_maybeHttp is HttpDiscordCache)
|
||||||
return await (_maybeHttp as HttpDiscordCache).GetLastMessage<CacheEntry>(guild, channel);
|
return await (_maybeHttp as HttpDiscordCache)!.GetLastMessage<CacheEntry>(guild, channel);
|
||||||
|
|
||||||
return _cache.TryGetValue(channel, out var message) ? message : null;
|
return _cache.TryGetValue(channel, out var message) ? message : null;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue