protected override void Done(List <string> chosenValues) { TelegramTextMessage message = new TelegramTextMessage(UserId, string.Join("\n", chosenValues), ParseMode.Markdown); PostMessage(message); Machine.Bot.terminate = true; }
public override void ProcessCommand(TelegramCommand command) { if (command.CommandType == TelegramCommandType.ButtonPressed) { if ((command as TelegramButtonPressedCommand).CallbackData == Callback) { if (ActiveMessage.MessageId > 0) { Increment++; ActiveMessage = new TelegramTextMessageWithKeyboardEdited(ActiveMessage.MessageId, ActiveMessage, string.Format(MessageTemplate, Increment)); PostMessage(ActiveMessage); } } } else if (command.CommandType == TelegramCommandType.Geo) { PostMessage(ActiveMessage.GetMessageToHide()); double Latitude = (command as TelegramGeoCommand).Latitude; double Longitude = (command as TelegramGeoCommand).Longitude; TelegramTextMessage m = new TelegramTextMessage(UserId, string.Format("{0} {1}", Latitude, Longitude)); PostMessage(m); } else { Machine.Bot.terminate = true; } }
public async Task SendMessage(TelegramTextMessage textMessage) { await HttpClient.PostAsJsonAsync( $"{Settings.BotApiUrl}/sendMessage", textMessage ); }
public static TelegramTextMessage CreateTelegramTextMessage(string messageText) { return(TelegramTextMessage.Create( TelegramMessage.Create( new TelegramUpdate { Message = new Message { Text = messageText } }))); }
public async Task HandleAsync(TelegramTextMessage textMessage) { if (textMessage == null) { return; } _logger.LogDebug("TextMessage Received"); await TryParseAsCommand(textMessage); }
private async Task TryParseAsCommand(TelegramTextMessage textMessage) { var command = new TelegramCommand(textMessage); if (!command.IsCommand) { return; } var applicableExecutors = _commandExecutors.Where(c => c.CanExecute(command)); foreach (var commandExecutor in applicableExecutors) { await commandExecutor.ExecuteCommand(command); } }
public static TelegramCommand CreateTelegramCommand(string messageText, long chatId = 42) { return(new TelegramCommand( TelegramTextMessage.Create( TelegramMessage.Create( new TelegramUpdate { Message = new Message { Chat = new Chat { Id = chatId }, Text = messageText } })))); }
public void CanExecute_returns_false_if_command_is_not_a_command() { var executor = new EchoCommandExecutor(null, null); var command = new TelegramCommand( TelegramTextMessage.Create( TelegramMessage.Create( new TelegramUpdate { Message = new Message { Text = "" } }))); command.IsCommand.Should().BeFalse(); var result = executor.CanExecute(command); result.Should().BeFalse(); }
public TelegramCommand(TelegramTextMessage message) { Message = message; Parse(); }
public async Task HandleAsync(TelegramMessage message) { if (message == null) { return; } _logger.LogDebug("Message Received"); switch (message.Type) { case MessageType.Unknown: break; case MessageType.Text: await _textMessageHandler.HandleAsync(TelegramTextMessage.Create(message)); break; case MessageType.Photo: break; case MessageType.Audio: break; case MessageType.Video: break; case MessageType.Voice: break; case MessageType.Document: break; case MessageType.Sticker: break; case MessageType.Location: break; case MessageType.Contact: break; case MessageType.Venue: break; case MessageType.Game: break; case MessageType.VideoNote: break; case MessageType.Invoice: break; case MessageType.SuccessfulPayment: break; case MessageType.WebsiteConnected: break; case MessageType.ChatMembersAdded: break; case MessageType.ChatMemberLeft: break; case MessageType.ChatTitleChanged: break; case MessageType.ChatPhotoChanged: break; case MessageType.MessagePinned: break; case MessageType.ChatPhotoDeleted: break; case MessageType.GroupCreated: break; case MessageType.SupergroupCreated: break; case MessageType.ChannelCreated: break; case MessageType.MigratedToSupergroup: break; case MessageType.MigratedFromGroup: break; case MessageType.Poll: break; default: throw new ArgumentOutOfRangeException(); } }
private void TimeToSend(object sender, ElapsedEventArgs e) { SendTimer.Stop(); if (Queue.Count > 0) { TelegramMessage message; message = Queue.First.Value; Queue.RemoveFirst(); if (LoggingEnabled) { try { Console.WriteLine(DateTime.UtcNow); Console.WriteLine(message.ToString()); } catch (Exception err) { BotUtils.LogException(err); } } switch (message.MessageType) { case TelegramMessageType.Empty: break; case TelegramMessageType.Text: { TelegramTextMessage msg = message as TelegramTextMessage; int result; try { result = bot.SendTextMessageAsync(msg.ChatId, msg.Text, msg.ParseMode, disableWebPagePreview: msg.DisableWebPagePreview).Result.MessageId; bot.SetLastMessageId(msg.ChatId, result); } catch (Exception error) { BotUtils.LogException(error); try { result = bot.SendTextMessageAsync(msg.ChatId, msg.Text, ParseMode.Markdown).Result.MessageId; bot.SetLastMessageId(msg.ChatId, result); } catch (Exception internalError) { BotUtils.LogException(internalError); } } } break; case TelegramMessageType.TextWithKeyboard: { TelegramTextMessageWithKeyboard msg = message as TelegramTextMessageWithKeyboard; int result; try { result = bot.SendTextMessageAsync(msg.ChatId, msg.Text, msg.ParseMode, replyMarkup: msg.ReplyMarkup, disableWebPagePreview: msg.DisableWebPagePreview).Result.MessageId; msg.SetMessageId(result); bot.SetLastMessageId(msg.ChatId, result); } catch (Exception error) { BotUtils.LogException(error); try { result = bot.SendTextMessageAsync(msg.ChatId, msg.Text, ParseMode.Markdown, replyMarkup: msg.ReplyMarkup, disableWebPagePreview: msg.DisableWebPagePreview).Result.MessageId; msg.SetMessageId(result); bot.SetLastMessageId(msg.ChatId, result); } catch (Exception internalError) { BotUtils.LogException(internalError); } } } break; case TelegramMessageType.TextWithKeyboardHide: { TelegramTextMessageWithKeyboardHide msg = message as TelegramTextMessageWithKeyboardHide; int result; try { result = bot.EditMessageReplyMarkupAsync(msg.ChatId, msg.OriginalMessageId).Result.MessageId; bot.SetLastMessageId(msg.ChatId, result); } catch (Exception error) { BotUtils.LogException(error); } } break; case TelegramMessageType.TextWithLink: { TelegramTextMessageWithLink msg = message as TelegramTextMessageWithLink; int result; try { result = bot.SendTextMessageAsync(msg.ChatId, msg.Text, msg.ParseMode, replyMarkup: msg.ReplyMarkup).Result.MessageId; bot.SetLastMessageId(msg.ChatId, result); } catch (Exception error) { BotUtils.LogException(error); try { result = bot.SendTextMessageAsync(msg.ChatId, msg.Text, ParseMode.Markdown, replyMarkup: msg.ReplyMarkup).Result.MessageId; bot.SetLastMessageId(msg.ChatId, result); } catch (Exception internalError) { BotUtils.LogException(internalError); } } } break; case TelegramMessageType.Payment: { TelegramPaymentMessage msg = message as TelegramPaymentMessage; if (!string.IsNullOrEmpty(bot.PaymentsKey)) { try { int result = bot.SendInvoiceAsync(msg.ChatId, msg.Title, msg.Description, msg.InvoiceId, bot.PaymentsKey, "RUB", msg.Prices).Result.MessageId; bot.SetLastMessageId(msg.ChatId, result); } catch (Exception error) { BotUtils.LogException(error); } } } break; case TelegramMessageType.Typing: { try { bot.SendChatActionAsync(message.ChatId, ChatAction.Typing); } catch (Exception error) { BotUtils.LogException(error); } } break; case TelegramMessageType.File: { TelegramFileMessage msg = message as TelegramFileMessage; try { int result = bot.SendDocumentAsync(message.ChatId, new InputOnlineFile(new MemoryStream(msg.Data), msg.FileName), msg.Caption).Result.MessageId; bot.SetLastMessageId(msg.ChatId, result); } catch (Exception error) { BotUtils.LogException(error); } } break; case TelegramMessageType.Picture: { TelegramPictureMessage msg = message as TelegramPictureMessage; try { int result = bot.SendPhotoAsync(message.ChatId, new InputOnlineFile(new MemoryStream(msg.Data)), msg.Caption).Result.MessageId; bot.SetLastMessageId(msg.ChatId, result); } catch (Exception error) { BotUtils.LogException(error); } } break; case TelegramMessageType.TextWithKeyboardEdited: { TelegramTextMessageWithKeyboardEdited msg = message as TelegramTextMessageWithKeyboardEdited; try { int result = bot.EditMessageTextAsync(msg.ChatId, msg.OriginalMessageId, msg.Text, msg.ParseMode, disableWebPagePreview: msg.DisableWebPagePreview, replyMarkup: msg.Keyboard).Result.MessageId; msg.SetMessageId(result); bot.SetLastMessageId(msg.ChatId, result); } catch (Exception error) { BotUtils.LogException(error); } } break; } } SendTimer.Start(); }