/// <summary> /// Joins the room with the settings passed in. /// </summary> public void JoinRoom(InstallationSettings settings) { // Copy over the settings into this class so this class can use it. this.settings = settings; // Create the ChatMessageProcessor. cmp = new ChatMessageProcessor(settings); cmp.StopBotCommandIssued += cmp_StopBotCommandIssued; // Logic to join the chat room. chatClient = new Client(settings.Email, settings.Password); cvChatRoom = chatClient.JoinRoom(settings.ChatRoomUrl); ChatBotStats.LoginDate = DateTime.Now; cvChatRoom.StripMention = false; // Say the startup message? if (!settings.StartUpMessage.IsNullOrWhiteSpace()) { // This is the one of the few instances to not using the "OrThrow" method. var startMessage = cvChatRoom.PostMessage(settings.StartUpMessage); if (startMessage == null) { throw new InvalidOperationException("Unable to post start up message to room."); } } cvChatRoom.EventManager.ConnectListener(EventType.MessagePosted, new Action<Message>(cvChatRoom_NewMessage)); cvChatRoom.EventManager.ConnectListener(EventType.MessageEdited, new Action<Message>(cvChatRoom_NewMessage)); }
static void Main(string[] args) { WriteToConsole("Starting program"); // dispose our RoomManager using (mng = new RoomManager()) { mng.ShutdownOrderGiven += mng_ShutdownOrderGiven; mng.InformationMessageBroadcasted += mng_InformationMessageBroadcasted; WriteToConsole("Gathering settings"); var settings = new InstallationSettings() { ChatRoomUrl = SettingsFileAccessor.GetSettingValue<string>("ChatRoomUrl"), Email = SettingsFileAccessor.GetSettingValue<string>("LoginEmail"), Password = SettingsFileAccessor.GetSettingValue<string>("LoginPassword"), StartUpMessage = SettingsFileAccessor.GetSettingValue<string>("StartUpMessage"), StopMessage = SettingsFileAccessor.GetSettingValue<string>("StopMessage"), MaxReviewLengthHours = SettingsFileAccessor.GetSettingValue<int>("MaxReviewLengthHours"), DefaultCompletedTagsPeopleThreshold = SettingsFileAccessor.GetSettingValue<int>("DefaultCompletedTagsPeopleThreshold"), MaxTagsToFetch = SettingsFileAccessor.GetSettingValue<int>("MaxFetchTags"), DatabaseConnectionString = SettingsFileAccessor.GetSettingValue<string>("DatabaseConnectionString"), PingReviewersDaysBackThreshold = SettingsFileAccessor.GetSettingValue<int>("PingReviewersDaysBackThreshold"), DefaultNextTagCount = SettingsFileAccessor.GetSettingValue<int>("DefaultNextTagCount"), }; WriteToConsole("Joining room"); mng.JoinRoom(settings); WriteToConsole("Running wait loop"); // wait to get signaled // we do it this way because this is cross-thread shutdownEvent.WaitOne(); } }
public ChatMessageProcessor(InstallationSettings settings) { roomSettings = settings; da = new DatabaseAccessor(roomSettings.DatabaseConnectionString); }