Add generic sentry tracing to the main command module
This commit is contained in:
parent
1f518e980c
commit
3299ac4eab
1 changed files with 39 additions and 1 deletions
|
@ -1,9 +1,13 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Discord;
|
||||
using Discord.Commands;
|
||||
using Geekbot.Core.Database.Models;
|
||||
using Geekbot.Core.ErrorHandling;
|
||||
using Geekbot.Core.GuildSettingsManager;
|
||||
using Sentry;
|
||||
|
||||
namespace Geekbot.Core
|
||||
{
|
||||
|
@ -12,6 +16,7 @@ namespace Geekbot.Core
|
|||
protected readonly IGuildSettingsManager GuildSettingsManager;
|
||||
protected GuildSettingsModel GuildSettings;
|
||||
protected readonly IErrorHandler ErrorHandler;
|
||||
protected ITransaction Transaction;
|
||||
|
||||
protected GeekbotCommandBase(IErrorHandler errorHandler, IGuildSettingsManager guildSettingsManager)
|
||||
{
|
||||
|
@ -22,9 +27,42 @@ namespace Geekbot.Core
|
|||
protected override void BeforeExecute(CommandInfo command)
|
||||
{
|
||||
base.BeforeExecute(command);
|
||||
|
||||
// Transaction Setup
|
||||
Transaction = SentrySdk.StartTransaction(new Transaction(command.Name, "Exec"));
|
||||
Transaction.SetTags(new []
|
||||
{
|
||||
new KeyValuePair<string, string>("GuildId", Context.Guild.Id.ToString()),
|
||||
new KeyValuePair<string, string>("Guild", Context.Guild.Name),
|
||||
});
|
||||
Transaction.User = new User()
|
||||
{
|
||||
Id = Context.User.Id.ToString(),
|
||||
Username = Context.User.Username,
|
||||
};
|
||||
|
||||
// Command Setup
|
||||
var setupSpan = Transaction.StartChild("Setup");
|
||||
|
||||
GuildSettings = GuildSettingsManager.GetSettings(Context?.Guild?.Id ?? 0);
|
||||
var language = GuildSettings.Language;
|
||||
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(language == "CHDE" ? "de-ch" : language);
|
||||
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(language);
|
||||
|
||||
setupSpan.Finish();
|
||||
}
|
||||
|
||||
protected override void AfterExecute(CommandInfo command)
|
||||
{
|
||||
base.AfterExecute(command);
|
||||
Transaction.Finish();
|
||||
}
|
||||
|
||||
protected override Task<IUserMessage> ReplyAsync(string message = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null)
|
||||
{
|
||||
var replySpan = Transaction.StartChild("Reply");
|
||||
var msg = base.ReplyAsync(message, isTTS, embed, options, allowedMentions, messageReference);
|
||||
replySpan.Finish();
|
||||
return msg;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue