Example #1
0
        /// <summary>
        /// Sends a message to a chat
        /// </summary>
        /// <returns>on success, the sent Message is returned </returns>
        public Message SendMessage(Chat chat, string text, MarkdownStyles markdownStyle = MarkdownStyles.None, bool disableWebPagePreview = false, bool disableNotification = false, Message replyToMessage = null)
        {
            Require(chat, text);

            if (string.IsNullOrEmpty(text))
            {
                throw new ArgumentException("text cannot be empty");
            }

            if (text.Length > Constants.MaxTextLength)
            {
                text = text.Substring(0, Constants.MaxTextLength - 3) + "...";
            }

            var parameters = new List <QueryStringParameter>
            {
                new QueryStringParameter("chat_id", chat.Id.ToString()),
                new QueryStringParameter("text", text)
            };

            if (markdownStyle != MarkdownStyles.None)
            {
                parameters.Add(new QueryStringParameter("parse_mode", Enum.GetName(typeof(MarkdownStyles), markdownStyle)));
            }

            if (disableWebPagePreview)
            {
                parameters.Add(new QueryStringParameter("disable_web_page_preview", true.ToString()));
            }

            if (disableNotification)
            {
                parameters.Add(new QueryStringParameter("disable_notification", true.ToString()));
            }

            if (replyToMessage != null)
            {
                parameters.Add(new QueryStringParameter("reply_to_message_id", replyToMessage.MessageId.ToString()));
            }

            var result = _communicator.GetReply <SendMessageReply>("sendMessage", parameters.ToArray());

            if (result.Ok)
            {
                return(result.SentMessage);
            }
            else
            {
                return(null);
            }
        }
Example #2
0
        /// <summary>
        /// Retrieves a cached instance of the markdown parser
        /// </summary>
        /// <param name="markdownStyle"></param>
        /// <param name="RenderLinksAsExternal"></param>
        /// <returns></returns>
        public static MarkdownParser GetParser(MarkdownStyles markdownStyle, bool RenderLinksAsExternal = false)
        {
            if (RenderLinksAsExternal)
            {
                CommonMarkSettings.Default.OutputDelegate =
                    (doc, output, settings) => new ExternalLinkFormatter(output, settings).WriteDocument(doc);
            }

            if (markdownStyle == MarkdownStyles.GitHub)
            {
                return(new GithubMarkdownParser());
            }

            return(new MarkdownParser());
        }
Example #3
0
        /// <summary>
        /// sends a voice message to the chat
        /// </summary>
        /// <returns>on success, the sent mesage is returned</returns>
        public Message SendVoice(Chat chat, InputFile voice, string caption = null, MarkdownStyles markdownStyle = MarkdownStyles.None, long duration = long.MinValue, bool disableNotification = false, Message replyToMessage = null)
        {
            Require(chat, voice);

            var parameters = new List <MultiPartParameter>()
            {
                new MultiPartStringParameter("chat_id", chat.Id.ToString()),
                voice.GetMultiPartParameter("voice")
            };

            if (!string.IsNullOrEmpty(caption))
            {
                parameters.Add(new MultiPartStringParameter("caption", caption));
            }

            if (markdownStyle != MarkdownStyles.None)
            {
                parameters.Add(new MultiPartStringParameter("parse_mode", Enum.GetName(typeof(MarkdownStyles), markdownStyle)));
            }

            if (duration > long.MinValue)
            {
                parameters.Add(new MultiPartStringParameter("duration", duration.ToString()));
            }

            if (disableNotification)
            {
                parameters.Add(new MultiPartStringParameter("disable_notification", disableNotification.ToString()));
            }

            if (replyToMessage != null)
            {
                parameters.Add(new MultiPartStringParameter("reply_to_message_id", replyToMessage.MessageId.ToString()));
            }

            var result = _communicator.GetMultiPartReply <SendVoiceReply>("sendVoice", parameters.ToArray());

            if (result.Ok)
            {
                return(result.SentMessage);
            }
            else
            {
                return(null);
            }
        }
Example #4
0
        /// <summary>
        /// sends a video to the chat
        /// </summary>
        /// <returns>on success, the sent message is returned</returns>
        public Message SendAnimation(Chat chat, InputFile animation, long duration = long.MinValue, long width = long.MinValue, long height = long.MinValue, InputFile thumb = null, string caption = null, MarkdownStyles markdownStyle = MarkdownStyles.None, bool supportsStreaming = false, bool disableNotification = false, Message replyToMessage = null)
        {
            Require(chat, animation);

            var parameters = new List <MultiPartParameter>()
            {
                new MultiPartStringParameter("chat_id", chat.Id.ToString()),
                animation.GetMultiPartParameter("animation")
            };

            if (duration > long.MinValue)
            {
                parameters.Add(new MultiPartStringParameter("duration", duration.ToString()));
            }

            if (width > long.MinValue)
            {
                parameters.Add(new MultiPartStringParameter("width", duration.ToString()));
            }

            if (height > long.MinValue)
            {
                parameters.Add(new MultiPartStringParameter("height", duration.ToString()));
            }

            if (thumb != null)
            {
                parameters.Add(thumb.GetMultiPartParameter("thumb"));
            }

            if (!string.IsNullOrEmpty(caption))
            {
                parameters.Add(new MultiPartStringParameter("caption", caption));
            }

            if (markdownStyle != MarkdownStyles.None)
            {
                parameters.Add(new MultiPartStringParameter("parse_mode", Enum.GetName(typeof(MarkdownStyles), markdownStyle)));
            }

            if (disableNotification)
            {
                parameters.Add(new MultiPartStringParameter("disable_notification", disableNotification.ToString()));
            }

            if (replyToMessage != null)
            {
                parameters.Add(new MultiPartStringParameter("reply_to_message_id", replyToMessage.MessageId.ToString()));
            }

            var result = _communicator.GetMultiPartReply <SendAnimationReply>("sendAnimation", parameters.ToArray());

            if (result.Ok)
            {
                return(result.SentMessage);
            }
            else
            {
                return(null);
            }
        }
Example #5
0
        /// <summary>
        /// sends an audio file to the chat
        /// </summary>
        /// <returns>on success, the sent Message is returned</returns>
        public Message SendAudio(Chat chat, InputFile audio, string caption = null, MarkdownStyles markdownStyle = MarkdownStyles.None, long duration = long.MinValue, string performer = null, string title = null, InputFile thumb = null, bool disableNotification = false, Message replyToMessage = null)
        {
            Require(chat, audio);

            var parameters = new List <MultiPartParameter>
            {
                new MultiPartStringParameter("chat_id", chat.Id.ToString()),
                audio.GetMultiPartParameter("audio")
            };

            if (!string.IsNullOrEmpty(caption))
            {
                parameters.Add(new MultiPartStringParameter("caption", caption));
            }

            if (markdownStyle != MarkdownStyles.None)
            {
                parameters.Add(new MultiPartStringParameter("parse_mode", Enum.GetName(typeof(MarkdownStyles), markdownStyle)));
            }

            if (duration > long.MinValue)
            {
                parameters.Add(new MultiPartStringParameter("duration", duration.ToString()));
            }

            if (!string.IsNullOrEmpty(performer))
            {
                parameters.Add(new MultiPartStringParameter("performer", performer));
            }

            if (!string.IsNullOrEmpty(title))
            {
                parameters.Add(new MultiPartStringParameter("title", title));
            }

            if (thumb != null)
            {
                parameters.Add(thumb.GetMultiPartParameter("thumb"));
            }

            if (disableNotification)
            {
                parameters.Add(new MultiPartStringParameter("disable_notification", disableNotification.ToString()));
            }

            if (replyToMessage != null)
            {
                parameters.Add(new MultiPartStringParameter("reply_to_message_id", replyToMessage.MessageId.ToString()));
            }

            var result = _communicator.GetMultiPartReply <SendAudioReply>("sendAudio", parameters.ToArray());

            if (result.Ok)
            {
                return(result.SentMessage);
            }
            else
            {
                return(null);
            }
        }