public DatadogRoutine( AccountService accounts, AchievementEvents achievements, IAsyncEventingExecutor <IDiscordMessage> commandPipeline, Config config, IDiscordClient discordClient) { if (string.IsNullOrWhiteSpace(config.DatadogHost)) { Log.Warning("Metrics are not being collected"); return; } DogStatsd.Configure(new StatsdConfig { StatsdServerName = config.DatadogHost, StatsdPort = 8125, Prefix = "miki" }); CreateAchievementsMetrics(achievements); CreateAccountMetrics(accounts); CreateEventSystemMetrics(commandPipeline); CreateDiscordMetrics(discordClient); Log.Message("Datadog set up!"); }
public AccountsModule( MikiApp app, Config config, IDiscordClient discordClient, AccountService accountsService, AchievementService achievementService, AchievementEvents achievementEvents, TransactionEvents transactionEvents) { this.app = app; this.achievementService = achievementService; this.discordClient = discordClient; if (!string.IsNullOrWhiteSpace(config.ImageApiUrl)) { client = new HttpClient(config.ImageApiUrl); } else { Log.Warning("Image API can not be loaded in AccountsModule"); } discordClient.Events.MessageCreate.SubscribeTask(OnMessageCreateAsync); accountsService.OnLocalLevelUp += OnUserLevelUpAsync; accountsService.OnLocalLevelUp += OnLevelUpAchievementsAsync; transactionEvents.OnTransactionComplete += CheckCurrencyAchievementUnlocksAsync; achievementEvents.OnAchievementUnlocked .SubscribeTask(SendAchievementNotificationAsync); achievementEvents.OnAchievementUnlocked .SubscribeTask(CheckAchievementUnlocksAsync); }
public AchievementService( IUnitOfWork unitOfWork, AchievementCollection achievementCollection, IRepositoryFactory <Achievement> factory, AchievementEvents events) { this.achievementCollection = achievementCollection; this.unitOfWork = unitOfWork; this.events = events; repository = unitOfWork.GetRepository(factory); }
private (AchievementService, AchievementEvents) NewService(IUnitOfWork work = null) { var collection = new AchievementCollection(); collection.AddAchievement(new AchievementObject.Builder("test").Add("x").Build()); var events = new AchievementEvents(); return(new AchievementService( work ?? NewContext(), collection, new AchievementRepository.Factory(), events), events); }
public void Initialize() { ModerationEvents.Register(); AchievementEvents.Register(); GroupEvents.Register(); CatalogEvents.Register(); CameraEvents.Register(); UserEvents.Register(); RoomEvents.Register(); LandingEvents.Register(); NavigatorEvents.Register(); CraftingEvents.Register(); GameCenterEvents.Register(); MiscEvents.Register(); }
private void CreateAchievementsMetrics(AchievementEvents events) { if (events == null) { return; } events.OnAchievementUnlocked.Subscribe((response) => { DogStatsd.Increment( "achievements.gained", tags: new[] { $"achievement:{response.Item1.ResourceName}" }); }); }
/** * Awake is called when the script instance is being loaded. */ private void Awake() { aEvents = this; }