private static void Main() { TaskScheduler.UnobservedTaskException += (sender, args) => Console.WriteLine($"Unobserved ex {args.Exception}"); _settings = ReadConfiguration(); var yandexDictionaryClient = new YandexDictionaryApiClient(_settings.YadicapiKey, _settings.YadicapiTimeout); var yandexTranslateApiClient = new YandexTranslateApiClient(_settings.YatransapiKey, _settings.YatransapiTimeout); var client = new MongoClient(_settings.MongoConnectionString); var db = client.GetDatabase("SayWhatDb"); var userWordRepo = new UserWordsRepo(db); var dictionaryRepo = new DictionaryRepo(db); var userRepo = new UsersRepo(db); var examplesRepo = new ExamplesRepo(db); userWordRepo.UpdateDb(); dictionaryRepo.UpdateDb(); userRepo.UpdateDb(); examplesRepo.UpdateDb(); _userWordService = new UsersWordsService(userWordRepo, examplesRepo); _dictionaryService = new DictionaryService(dictionaryRepo, examplesRepo); _userService = new UserService(userRepo); _addWordService = new AddWordService( _userWordService, yandexDictionaryClient, yandexTranslateApiClient, _dictionaryService, _userService); QuestionSelector.Singletone = new QuestionSelector(_dictionaryService); Console.WriteLine("Dic started"); _botClient = new TelegramBotClient(_settings.TelegramToken); var me = _botClient.GetMeAsync().Result; Console.WriteLine( $"Hello, World! I am user {me.Id} and my name is {me.FirstName}." ); _botClient.OnUpdate += BotClientOnOnUpdate; _botClient.OnMessage += Bot_OnMessage; _botClient.StartReceiving(); // workaround for infinity awaiting new TaskCompletionSource <bool>().Task.Wait(); // it will never happens _botClient.StopReceiving(); }
public void Intitalize() { MongoTestHelper.DropAllCollections(); _repo = new ExamplesRepo(MongoTestHelper.Database); _repo.UpdateDb().Wait(); }
private static void Main() { TaskScheduler.UnobservedTaskException += (sender, args) => Console.WriteLine($"Unobserved ex {args.Exception}"); _settings = ReadConfiguration(substitudeDebugConfig: false); var yandexDictionaryClient = new YandexDictionaryApiClient(_settings.YadicapiKey, _settings.YadicapiTimeout); var client = new MongoClient(_settings.MongoConnectionString); var db = client.GetDatabase(_settings.MongoDbName); //StatsMigrator.Do(db).Wait(); var userWordRepo = new UserWordsRepo(db); var dictionaryRepo = new LocalDictionaryRepo(db); var userRepo = new UsersRepo(db); var examplesRepo = new ExamplesRepo(db); var questionMetricsRepo = new QuestionMetricRepo(db); var learningSetsRepo = new LearningSetsRepo(db); userWordRepo.UpdateDb(); dictionaryRepo.UpdateDb(); userRepo.UpdateDb(); examplesRepo.UpdateDb(); questionMetricsRepo.UpdateDb(); learningSetsRepo.UpdateDb(); Botlog.QuestionMetricRepo = questionMetricsRepo; _userWordService = new UsersWordsService(userWordRepo, examplesRepo); _localDictionaryService = new LocalDictionaryService(dictionaryRepo, examplesRepo); _userService = new UserService(userRepo); _learningSetService = new LearningSetService(learningSetsRepo); _addWordService = new AddWordService( _userWordService, yandexDictionaryClient, _localDictionaryService, _userService); QuestionSelector.Singletone = new QuestionSelector(_localDictionaryService); _botClient = new TelegramBotClient(_settings.TelegramToken); Botlog.CreateTelegramLogger(_settings.BotHelperToken, _settings.ControlPanelChatId); var me = _botClient.GetMeAsync().Result; Botlog.WriteInfo($"Waking up. I am {me.Id}:{me.Username} ", true); _botClient.SetMyCommandsAsync(new[] { new BotCommand { Command = BotCommands.Help, Description = "Help and instructions (Помощь и инстркции)" }, new BotCommand { Command = BotCommands.Start, Description = "Main menu (Главное меню)" }, new BotCommand { Command = BotCommands.Translate, Description = "Translator (Переводчик)" }, new BotCommand { Command = BotCommands.Learn, Description = "Learning translated words (Учить слова)" }, new BotCommand { Command = BotCommands.New, Description = "Show learning sets (Показать наборы для изучения)" }, new BotCommand { Command = BotCommands.Stats, Description = "Your stats (Твоя статистика)" }, new BotCommand { Command = BotCommands.Words, Description = "Your learned words (Твои выученные слова)" }, new BotCommand { Command = BotCommands.Chlang, Description = "Change interface language (Сменить язык интерфейса)" }, }).Wait(); var allUpdates = _botClient.GetUpdatesAsync().Result; Botlog.WriteInfo($"{allUpdates.Length} messages were missed"); foreach (var update in allUpdates) { OnBotWokeUp(update); } if (allUpdates.Any()) { _botClient.MessageOffset = allUpdates.Last().Id + 1; Botlog.WriteInfo($"{Chats.Count} users were waiting for us"); } _botClient.OnUpdate += BotClientOnOnUpdate; _botClient.OnMessage += Bot_OnMessage; _botClient.StartReceiving(); Botlog.WriteInfo($"... and here i go!", false); // workaround for infinity awaiting new TaskCompletionSource <bool>().Task.Wait(); // it will never happens _botClient.StopReceiving(); }