protected override void Done(List <string> chosenValues)
        {
            TelegramTextMessage message = new TelegramTextMessage(UserId, string.Join("\n", chosenValues), ParseMode.Markdown);

            PostMessage(message);
            Machine.Bot.terminate = true;
        }
Example #2
0
 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;
     }
 }
Example #3
0
 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
         }
     })));
 }
Example #5
0
        public async Task HandleAsync(TelegramTextMessage textMessage)
        {
            if (textMessage == null)
            {
                return;
            }

            _logger.LogDebug("TextMessage Received");


            await TryParseAsCommand(textMessage);
        }
Example #6
0
        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();
            }
        }
Example #11
0
        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();
        }