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.Globalization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Discord;
|
||||||
using Discord.Commands;
|
using Discord.Commands;
|
||||||
using Geekbot.Core.Database.Models;
|
using Geekbot.Core.Database.Models;
|
||||||
using Geekbot.Core.ErrorHandling;
|
using Geekbot.Core.ErrorHandling;
|
||||||
using Geekbot.Core.GuildSettingsManager;
|
using Geekbot.Core.GuildSettingsManager;
|
||||||
|
using Sentry;
|
||||||
|
|
||||||
namespace Geekbot.Core
|
namespace Geekbot.Core
|
||||||
{
|
{
|
||||||
|
@ -12,6 +16,7 @@ namespace Geekbot.Core
|
||||||
protected readonly IGuildSettingsManager GuildSettingsManager;
|
protected readonly IGuildSettingsManager GuildSettingsManager;
|
||||||
protected GuildSettingsModel GuildSettings;
|
protected GuildSettingsModel GuildSettings;
|
||||||
protected readonly IErrorHandler ErrorHandler;
|
protected readonly IErrorHandler ErrorHandler;
|
||||||
|
protected ITransaction Transaction;
|
||||||
|
|
||||||
protected GeekbotCommandBase(IErrorHandler errorHandler, IGuildSettingsManager guildSettingsManager)
|
protected GeekbotCommandBase(IErrorHandler errorHandler, IGuildSettingsManager guildSettingsManager)
|
||||||
{
|
{
|
||||||
|
@ -22,9 +27,42 @@ namespace Geekbot.Core
|
||||||
protected override void BeforeExecute(CommandInfo command)
|
protected override void BeforeExecute(CommandInfo command)
|
||||||
{
|
{
|
||||||
base.BeforeExecute(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);
|
GuildSettings = GuildSettingsManager.GetSettings(Context?.Guild?.Id ?? 0);
|
||||||
var language = GuildSettings.Language;
|
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