private void Listen(StateContext context) { Console.WriteLine("Listening to messages."); Console.WriteLine("Press 'a' to answer last message. Press any key to stop listening."); using (this.tokenSource = new CancellationTokenSource()) { var bacgroundPrinting = Task.Run((Action)BackGroundPrinting, this.tokenSource.Token); var key = Console.ReadKey(); this.context.LastMessage = this.lastMessage; if (key.KeyChar == 'a') { Console.WriteLine(); this.context.Signals = Signals.ResponseLastChatFromListening; } else { this.context.Signals = Signals.Exit; } this.tokenSource.Cancel(); try { bacgroundPrinting.Wait(); } catch (AggregateException e) { if (!bacgroundPrinting.IsCanceled) { throw new Exception("Listen failed.", e.InnerException); } } } }
public override void Execute(StateContext context) { Console.WriteLine($"Enter the message you want to send to {context.MessageDestination} (empty string to abort)"); string message = Console.ReadLine(); if (string.IsNullOrEmpty(message)) { context.MessageText = null; context.OutcomeMessageType = OutcomeMessageType.None; context.MessageDestination = null; if (context.Signals == Signals.TypeInMessageFromListening) { context.Signals = Signals.ListenToMessages; } else if (context.Signals == Signals.TypeInMessage) { context.Signals = Signals.Exit; } } context.MessageText = message; if (context.Signals == Signals.TypeInMessageFromListening) { context.Signals = Signals.SendMessageFromListening; } else if (context.Signals == Signals.TypeInMessage) { context.Signals = Signals.SendMessage; } base.Execute(context); }
private void PrepareDestinationAndOutcomeType(StateContext context) { context.MessageDestination = null; context.OutcomeMessageType = OutcomeMessageType.None; if (context.LastMessage == null) { return; } if (context.LastMessage.SourceType == IncomeMessageSource.PrivateMessage) { context.MessageDestination = context.LastMessage.UserName; context.OutcomeMessageType = OutcomeMessageType.PrivateMessage; } else if (context.LastMessage.SourceType == IncomeMessageSource.GroupMessage) { context.MessageDestination = context.LastMessage.GroupTitle; context.OutcomeMessageType = OutcomeMessageType.GroupMessage; } else if (context.LastMessage.SourceType == IncomeMessageSource.ChannelPost) { context.MessageDestination = context.LastMessage.ChannelTitle; context.OutcomeMessageType = OutcomeMessageType.ChannelPost; } }
public override void Execute(StateContext context) { PrepareDestinationAndOutcomeType(context); if (context.OutcomeMessageType == OutcomeMessageType.None || string.IsNullOrEmpty(context.MessageDestination)) { Console.WriteLine("Can not find message destination user/group/channel."); if (context.Signals == Signals.ResponseLastChat) { context.Signals = Signals.Exit; Console.ReadKey(); } if (context.Signals == Signals.ResponseLastChatFromListening) { context.Signals = Signals.ListenToMessages; } return; } if (context.Signals == Signals.ResponseLastChat) { context.Signals = Signals.TypeInMessage; } if (context.Signals == Signals.ResponseLastChatFromListening) { context.Signals = Signals.TypeInMessageFromListening; } base.Execute(context); }
public override void Execute(StateContext context) { Console.Clear(); Console.WriteLine("Main menu"); Console.WriteLine("Choose one option :"); Console.WriteLine("1 : Listen to messages"); Console.WriteLine("2 : Write new message"); Console.WriteLine("3 : Answer to last chat"); var key = Console.ReadKey(); if (key.KeyChar == '1') { context.Signals = Signals.ListenToMessages; } else if (key.KeyChar == '2') { context.Signals = Signals.WriteTo; } else if (key.KeyChar == '3') { context.Signals = Signals.ResponseLastChat; } else { context.Signals = Signals.Exit; } Console.Clear(); base.Execute(context); }
public override void Execute(StateContext context) { bool exists = context.Bot.DestinationExists(context.OutcomeMessageType, context.MessageDestination); if (exists) { context.Signals = Signals.TypeInMessage; } else { Console.WriteLine($"Can not write to {context.MessageDestination}. It is not exists or Bot did not receive any message from this user/group/channel."); Console.ReadKey(); context.Signals = Signals.Exit; } base.Execute(context); }
public override void Execute(StateContext context) { var destType = AskDestinationType(); var destination = AskDestination(destType); if (string.IsNullOrEmpty(destination)) { context.OutcomeMessageType = OutcomeMessageType.None; context.MessageDestination = null; context.Signals = Signals.Exit; return; } context.OutcomeMessageType = destType; context.MessageDestination = destination; context.Signals = Signals.CheckIfCanFindDestination; base.Execute(context); }
public override void Execute(StateContext context) { Console.WriteLine("Sending ..."); SentMessageStatus status = null; if (context.OutcomeMessageType == OutcomeMessageType.PrivateMessage) { status = context.Bot.SendMessageToUser(context.MessageDestination, context.MessageText); } else if (context.OutcomeMessageType == OutcomeMessageType.GroupMessage) { status = context.Bot.SendMessageToGroup(context.MessageDestination, context.MessageText); } else if (context.OutcomeMessageType == OutcomeMessageType.ChannelPost) { status = context.Bot.SendMessageToChannel(context.MessageDestination, context.MessageText); } context.MessageText = null; context.OutcomeMessageType = OutcomeMessageType.None; context.MessageDestination = null; if (status.Ok) { Console.WriteLine("Sent"); } else { Console.WriteLine(status.Exception); } if (context.Signals == Signals.SendMessageFromListening) { context.Signals = Signals.ListenToMessages; return; } Console.ReadKey(); context.Signals = Signals.Exit; base.Execute(context); }
public override void Execute(StateContext context) { this.context = context; this.Listen(context); base.Execute(context); }
public virtual void Execute(StateContext context) { callback?.Invoke(); }