Пример #1
0
        protected async Task <Message> SendMessage(long ChatId, BotMessage botMessage, bool DisableNotifi = false)
        {
            try
            {
                if (botMessage != null && this.Update.CallbackQuery != null && this.CallBackQueryId != null)
                {
                    await AnswerCallback(botMessage.CallBackTitleText);
                }

                if (botMessage != null && botMessage.TextMessage != null)
                {
                    return(await Telegram.SendTextMessageAsync(ChatId, botMessage.TextMessage, ParseMode.Html, false, DisableNotifi, 0, botMessage.MessageReplyMarkup));
                }

                else
                {
                    return(null);
                }
            }

            catch (Exception exp)
            {
                return(null);
            }
        }
Пример #2
0
        /// <summary>
        /// Изменить сообщение
        /// </summary>
        /// <param name="botMessage"></param>
        /// <returns></returns>
        protected async Task <Message> EditMessage(BotMessage botMessage)
        {
            IReplyMarkup replyMarkup;

            replyMarkup = botMessage.MessageReplyMarkup;

            try
            {
                if (botMessage != null && this.Update.CallbackQuery != null && this.CallBackQueryId != null)
                {
                    await AnswerCallback(botMessage.CallBackTitleText);
                }

                if (botMessage != null)
                {
                    return(await Telegram.EditMessageTextAsync(this.ChatId, this.MessageId, botMessage.TextMessage, ParseMode.Html, false, replyMarkup));
                }

                else
                {
                    return(null);
                }
            }

            catch
            {
                return(await Telegram.SendTextMessageAsync(this.ChatId, botMessage.TextMessage, ParseMode.Html, false, false, 0, replyMarkup));
            }
        }
Пример #3
0
        /// <summary>
        /// отправить фото
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        protected async Task <Message> SendPhoto(BotMessage message)
        {
            Message mess = new Message();

            try
            {
                if (this.Update.CallbackQuery != null && this.CallBackQueryId != null)
                {
                    await AnswerCallback(message.CallBackTitleText);
                }

                //максимальная длина подписи для фотографии 200 символов
                if (message.MediaFile != null && message.MediaFile.Caption != null &&
                    message.MediaFile.Caption != "" && message.MediaFile.Caption.Length < 200)
                {
                    mess = await Telegram.SendPhotoAsync(ChatId, message.MediaFile.FileTo, message.MediaFile.Caption, false, 0, message.MessageReplyMarkup);
                }

                if (message.MediaFile != null && message.MediaFile.Caption == null)
                {
                    mess = await Telegram.SendPhotoAsync(ChatId, message.MediaFile.FileTo, "", false, 0, message.MessageReplyMarkup);
                }

                //если подпись для фотографии больше 200 символом, то разибваем на два сообщения 1) Фото 2) Текст
                if (message.MediaFile != null && message.MediaFile.Caption != null && message.MediaFile.Caption != "" && message.MediaFile.Caption.Length >= 200)
                {
                    mess = await Telegram.SendPhotoAsync(this.ChatId, message.MediaFile.FileTo, "");
                    await SendMessage(this.ChatId, new BotMessage { TextMessage = message.MediaFile.Caption, MessageReplyMarkup = message.MessageReplyMarkup });
                }

                // если фотки нет
                if (message.MediaFile != null && message.MediaFile.Caption != null && message.MediaFile.Caption != "" && message.MediaFile.FileTo.Content == null &&
                    message.MediaFile.FileTo.FileId == null)
                {
                    mess = await Telegram.SendTextMessageAsync(ChatId, message.TextMessage, ParseMode.Html, false, false, 0, message.MessageReplyMarkup);
                }

                if (message.MediaFile == null)
                {
                    mess = await Telegram.SendTextMessageAsync(ChatId, message.TextMessage, ParseMode.Html, false, false, 0, message.MessageReplyMarkup);
                }

                //Если мы отрпавляем файл для этого бота первый раз, то Записываем FileId в базу для этог бота, что бы в следующий раз не отслылать целый файл
                //а только FileId на сервере телеграм
                if (mess != null && mess.Photo != null && message.MediaFile.AttachmentFsId > 0 && message.MediaFile.FileTo.FileId == null)
                {
                    InsertToAttachment(message.MediaFile, mess.Photo[mess.Photo.Length - 1].FileId);
                }

                return(mess);
            }

            catch (Exception exp)
            {
                return(null);
            }
        }
Пример #4
0
        /// <summary>
        /// Рассылка сообщений всем сотудникам в лс + в чат
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        protected async Task <bool> SendMessageAllBotEmployeess(BotMessage message)
        {
            using (MarketBotDbContext db = new MarketBotDbContext())
            {
                var list = db.Admin.Where(a => a.Enable && a.FollowerId != FollowerId).Include(a => a.Follower).ToList();

                try
                {
                    if (this.ChatId != BotOwner) // проверяем тот кто отправляет сообщения, не является ли он владельцем. Что бы не отправлять сообщение самому себе
                    {
                        if (db.Configuration.Where(o => o.BotInfoId == BotOwner).FirstOrDefault() != null &&
                            db.Configuration.Where(o => o.BotInfoId == BotOwner).FirstOrDefault().OwnerPrivateNotify)
                        {
                            await SendMessage(BotOwner, message);
                        }
                    }

                    if (list != null)
                    {
                        foreach (var admin in list)
                        {
                            if (admin.NotyfiActive)
                            {
                                await SendMessage(admin.Follower.ChatId, message, true);

                                System.Threading.Thread.Sleep(300);
                            }
                        }

                        await SendMessageToGroupChat(message);

                        return
                            (true);
                    }

                    else
                    {
                        return(false);
                    }
                }

                catch
                {
                    return
                        (false);
                }
            }
        }
Пример #5
0
        /// <summary>
        /// Отправить сообщение в групповой чат в котором находятся все операторы
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        private async Task <Message> SendMessageToGroupChat(BotMessage message)
        {
            try
            {
                using (MarketBotDbContext db = new MarketBotDbContext())
                {
                    this.GroupChatId = Convert.ToInt64(db.Configuration.FirstOrDefault().PrivateGroupChatId);
                    return(await SendMessage(this.GroupChatId, message));
                }
            }

            catch
            {
                return(null);
            }
        }
Пример #6
0
        private async Task <Message> SendAudio(BotMessage message)
        {
            try
            {
                if (message.MediaFile.AttachmentFsId > 0 && message.MediaFile.FileTo.FileId != null)
                {
                    InsertToAttachment(message.MediaFile, this.AudioId);
                }

                return(await Telegram.SendVoiceAsync(this.ChatId, message.MediaFile.FileTo, Caption, 0, false, 0, message.MessageReplyMarkup));
            }

            catch
            {
                return(null);
            }
        }
Пример #7
0
        protected async Task <Message> SendDocument(BotMessage message)
        {
            try
            {
                if (this.Update.CallbackQuery != null && this.CallBackQueryId != null)
                {
                    await AnswerCallback();
                }

                return(await Telegram.SendDocumentAsync(this.ChatId, message.MediaFile.FileTo, message.MediaFile.Caption));
            }

            catch (Exception exp)
            {
                return(null);
            }
        }
Пример #8
0
        /// <summary>
        /// отправить сообщение с кнопками добавления отзыва к товару
        /// </summary>
        /// <returns></returns>
        private async Task <IActionResult> SendFeedBackToProductEditor()
        {
            if (Argumetns.Count == 2)
            {
                BotMessage = new FeedBackToProductEditorMessage(Argumetns[0], Argumetns[1]);
            }

            if (Argumetns.Count == 1)
            {
                BotMessage = new FeedBackToProductEditorMessage(Argumetns[0]);
            }

            if (BotMessage != null)
            {
                await EditMessage(BotMessage.BuildMsg());
            }

            return(OkResult);
        }
Пример #9
0
        protected async Task <Message> SendMediaMessage(BotMessage message)
        {
            try
            {
                if (message.MediaFile.TypeFileTo == EnumMediaFile.Audio)
                {
                    return(await SendAudio(message));
                }

                if (message.MediaFile.TypeFileTo == EnumMediaFile.Video)
                {
                    return(await SendVideo(message));
                }

                if (message.MediaFile.TypeFileTo == EnumMediaFile.Voice)
                {
                    return(await SendVoice(message));
                }

                if (message.MediaFile.TypeFileTo == EnumMediaFile.Video)
                {
                    return(await SendVideoNote(message));
                }

                if (message.MediaFile.TypeFileTo == EnumMediaFile.Photo)
                {
                    return(await SendPhoto(message));
                }

                else
                {
                    return(null);
                }
            }

            catch
            {
                return(null);
            }
        }
Пример #10
0
        protected async Task <Message> SendMessage(BotMessage botMessage, int EditMessageId = 0, int ReplyToMessageId = 0)
        {
            IReplyMarkup replyMarkup;

            try
            {
                replyMarkup = botMessage.MessageReplyMarkup;


                if (botMessage != null && this.Update.CallbackQuery != null && this.CallBackQueryId != null)
                {
                    await AnswerCallback(botMessage.CallBackTitleText);
                }

                if (botMessage != null && EditMessageId != 0)
                {
                    return(await Telegram.EditMessageTextAsync(this.ChatId, EditMessageId, botMessage.TextMessage, ParseMode.Html, false, replyMarkup));
                }

                if (botMessage != null && botMessage.TextMessage != null)
                {
                    return(await Telegram.SendTextMessageAsync(this.ChatId, botMessage.TextMessage, ParseMode.Html, false, false, ReplyToMessageId, replyMarkup));
                }

                else
                {
                    return(null);
                }
            }

            catch
            {
                //await telegram.SendTextMessageAsync(this.ChatId, botMessage.Text, ParseMode.Html, false, false, ReplyToMessageId, botMessage.InlineKeyboard);

                return(null);
            }
        }