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); } }
/// <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)); } }
/// <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); } }
/// <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); } } }
/// <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); } }
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); } }
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); } }
/// <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); }
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); } }
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); } }