public static async Task <Message> SendMessageTextAsync(
        this TelegramService telegramService,
        MessageResponseDto messageResponseDto
        )
    {
        var sendMessageText = await telegramService.SendTextMessageAsync(
            sendText : messageResponseDto.MessageText,
            replyMarkup : messageResponseDto.ReplyMarkup,
            replyToMsgId : messageResponseDto.ReplyToMessageId.ToInt(),
            disableWebPreview : messageResponseDto.DisableWebPreview
            );

        if (messageResponseDto.ScheduleDeleteAt == default)
        {
            return(sendMessageText);
        }

        var currentCommand = telegramService.GetCommand(withoutSlash: true);
        var commandFlag    = currentCommand.ToEnum(defaultValue: MessageFlag.General);

        if (messageResponseDto.IncludeSenderForDelete)
        {
            telegramService.SaveSenderMessageToHistory(commandFlag, messageResponseDto.ScheduleDeleteAt);
        }

        telegramService.SaveSentMessageToHistory(commandFlag, messageResponseDto.ScheduleDeleteAt);

        return(sendMessageText);
    }
示例#2
0
        public IActionResult SendMessage([FromQuery(Name = "id")] int id, [FromBody] MessageRequestDto message)
        {
            if (id == 0)
            {
                return(new NotFoundObjectResult("Cannot resolve this url"));
            }

            var chatRoom = ChatRoomRepository.GetById(id);

            if (chatRoom == null)
            {
                return(new NotFoundObjectResult($"Cannot find chat room with id {id}"));
            }

            var existingUser = chatRoom.Users.FirstOrDefault(x => x.UserName == message.Name);

            if (existingUser == null)
            {
                return(new NotFoundObjectResult($"User with name {message.Name} not found in chat with id = {id}"));
            }

            var hubMessage = new MessageResponseDto
            {
                Name    = existingUser.UserName,
                Message = message.Message,
                Time    = DateTime.Now
            };

            return(new OkObjectResult(hubMessage));
        }
示例#3
0
    public async Task <MessageResponseDto> Execute(string payload)
    {
        var response = new MessageResponseDto();
        var chatId   = payload.ToInt64().FixChatId();
        var rules    = await _rulesService.GetRulesAsync(chatId);

        var latestRule = rules.LastOrDefault();
        var ruleText   = latestRule?.RuleText;

        if (latestRule == null)
        {
            return(response);
        }

        var chat = await _chatService.GetChatAsync(chatId);

        var chatNameLink = chat.GetChatNameLink();
        var lastUpdate   = latestRule.UpdatedAt;

        var ruleTextWithTitle = $"📜 Rules di <b>{chatNameLink}</b>\n" +
                                $"\n{ruleText}" +
                                $"\n\n<b>Diperbarui: </b> {lastUpdate.ToDetailDateTimeString()}";

        response.MessageText       = ruleTextWithTitle;
        response.DisableWebPreview = true;
        response.ReplyToMessageId  = 0;

        return(response);
    }
示例#4
0
        public async Task <IActionResult> PostMessage(MessageDto messageDto)
        {
            var rabbitMqClient    = new RabbitMqClient();
            var serializedMessage = JsonConvert.SerializeObject(messageDto);
            var response          = rabbitMqClient.Call(serializedMessage);

            rabbitMqClient.Close();
            MessagePm deserializedResponse;

            try
            {
                deserializedResponse = JsonConvert.DeserializeObject <MessagePm>(response);
            }
            catch (Exception e)
            {
                return(StatusCode(500, e.Message));
            }

            _messageContext.Messages.Add(deserializedResponse);
            await _messageContext.SaveChangesAsync();

            var messageResponseDto = new MessageResponseDto
            {
                Id         = deserializedResponse.Id,
                ExternalId = deserializedResponse.ExternalId,
                Message    = deserializedResponse.Message
            };

            return(Ok(messageResponseDto));
        }
    public static async Task <RequestResult> SendMediaGroupAsync(
        this TelegramService telegramService,
        MessageResponseDto messageResponseDto
        )
    {
        var requestResult = await telegramService.SendMediaGroupAsync(
            listAlbum : messageResponseDto.ListAlbum
            );

        if (messageResponseDto.ScheduleDeleteAt == default)
        {
            return(requestResult);
        }

        var currentCommand = telegramService.GetCommand(withoutSlash: true);
        var commandFlag    = currentCommand.ToEnum(defaultValue: MessageFlag.General);

        requestResult.SentMessages.ForEach(
            message => {
            var messageId = message.MessageId;

            if (messageResponseDto.IncludeSenderForDelete)
            {
                telegramService.SaveMessageToHistoryAsync(
                    messageId: messageId,
                    messageFlag: commandFlag,
                    deleteAt: messageResponseDto.ScheduleDeleteAt
                    ).InBackground();
            }

            telegramService.SaveMessageToHistoryAsync(
                messageId: messageId,
                messageFlag: commandFlag,
                deleteAt: messageResponseDto.ScheduleDeleteAt
                ).InBackground();
        }
            );

        return(requestResult);
    }
        public MessageResponseDto Execute(string payload)
        {
            var response = new MessageResponseDto();

            var replyMarkup = new InlineKeyboardMarkup
                              (
                new[]
            {
                new[]
                {
                    InlineKeyboardButton.WithUrl("Pasang Username", "https://t.me/WinTenDev/29")
                }
            }
                              );

            var send = "Untuk cara pasang Username, silakan klik tombol di bawah ini";

            response.MessageText = send;
            response.ReplyMarkup = replyMarkup;

            return(response);
        }
    public static async Task <Message> EditMessageTextAsync(
        this TelegramService telegramService,
        MessageResponseDto messageResponseDto
        )
    {
        var sendMessageText = await telegramService.EditMessageTextAsync(
            sendText : messageResponseDto.MessageText,
            replyMarkup : messageResponseDto.ReplyMarkup,
            disableWebPreview : messageResponseDto.DisableWebPreview
            );

        if (messageResponseDto.ScheduleDeleteAt == default)
        {
            return(sendMessageText);
        }

        var currentCommand = telegramService.GetCommand(withoutSlash: true);
        var commandFlag    = currentCommand.ToEnum(defaultValue: MessageFlag.General);

        await telegramService.MessageHistoryService.DeleteMessageHistoryAsync(
            new MessageHistoryFindDto()
        {
            ChatId    = sendMessageText.Chat.Id,
            MessageId = sendMessageText.MessageId
        }
            );

        if (messageResponseDto.IncludeSenderForDelete)
        {
            telegramService.SaveSenderMessageToHistory(commandFlag, messageResponseDto.ScheduleDeleteAt);
        }

        telegramService.SaveSentMessageToHistory(commandFlag, messageResponseDto.ScheduleDeleteAt);

        return(sendMessageText);
    }
示例#8
0
    public static async Task <MessageResponseDto> OnStartSubsceneDownloadAsync(
        this TelegramService telegramService,
        string subtitleSlug
        )
    {
        var response = new MessageResponseDto();

        var subsceneService = telegramService.GetRequiredService <SubsceneService>();
        var fixedSlug       = subtitleSlug.Replace("=", "/");

        Task.Run(
            async() => {
            await telegramService.SendTextMessageAsync("Subtitle sedang diproses, mohon tunggu...");
            await telegramService.SendChatActionAsync(ChatAction.UploadDocument);

            var movieDetail = await subsceneService.GetSubtitleFileAsync(fixedSlug);

            var subsceneUrl    = "https://subscene.com" + movieDetail.SubtitleMovieUrl;
            var commentaryUrl  = "https://subscene.com" + movieDetail.CommentaryUrl;
            var serverFileName = await movieDetail.SubtitleDownloadUrl.GetServerFileName();
            var fileName       = movieDetail.ReleaseInfos?
                                 .OrderBy(s => s.Length).FirstOrDefault(movieDetail.MovieName)?
                                 .Replace(".", " ") ??
                                 movieDetail.MovieName;
            var fileNameWithExt = fileName + serverFileName.GetFileExtension();

            var subtitleInfo = HtmlMessage.Empty
                               .Bold("Movie: ").TextBr(movieDetail.MovieName, true)
                               .Bold("Language: ").TextBr(movieDetail.Language)
                               .Bold("Author: ").Url(commentaryUrl, movieDetail.CommentaryUser).Br();

            if (movieDetail.ReleaseInfo.IsNotNullOrEmpty())
            {
                subtitleInfo.BoldBr("Release info")
                .TextBr(movieDetail.ReleaseInfo, true);
            }

            if (movieDetail.Comment.IsNotNullOrEmpty())
            {
                subtitleInfo.Br()
                .Text(movieDetail.Comment);
            }

            var buttonMarkup = new[]
            {
                new[]
                {
                    InlineKeyboardButton.WithUrl("Tautan Subscene", subsceneUrl),
                },
                new[]
                {
                    InlineKeyboardButton.WithSwitchInlineQueryCurrentChat("Pencarian baru", "subscene ")
                }
            };

            var replyMarkup = new InlineKeyboardMarkup(buttonMarkup);

            await telegramService.DeleteSentMessageAsync();

            await telegramService.SendMediaAsync(
                fileId: movieDetail.SubtitleDownloadUrl,
                mediaType: MediaType.Document,
                caption: subtitleInfo.ToString(),
                customFileName: fileNameWithExt,
                replyMarkup: replyMarkup
                );
        }
            ).InBackground();

        return(response);
    }