From 27a480d2b0f0bf6f38be2542fd3115f3e1b199a1 Mon Sep 17 00:00:00 2001 From: Chris Plaatjes Date: Mon, 13 Feb 2023 19:18:49 -0500 Subject: [PATCH] Preliminary work on tiktok url regex --- Program.cs | 70 +++++++++++++++++++++++++++++++++++++++++++++++++- VidDownload.cs | 10 ++++++++ 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 VidDownload.cs diff --git a/Program.cs b/Program.cs index 281553e..1749d3e 100644 --- a/Program.cs +++ b/Program.cs @@ -1,6 +1,12 @@ using Microsoft.Extensions.Configuration; using System; +using System.Web; +using System.Text.RegularExpressions; using Telegram.Bot; +using Telegram.Bot.Exceptions; +using Telegram.Bot.Polling; +using Telegram.Bot.Types; +using Telegram.Bot.Types.Enums; namespace TeleTok { @@ -16,10 +22,72 @@ namespace TeleTok var token = config.GetSection("TeleTokConf:token").Value; var botClient = new TelegramBotClient(token); + using var cts = new CancellationTokenSource(); + // StartReceiving does not block the caller thread. Receiving is done on the ThreadPool. + ReceiverOptions receiverOptions = new () + { + AllowedUpdates = Array.Empty() // receive all update types + }; + + // HandleUpdateAsync and HandlePollingErrorAsync no worky Tyler help + botClient.StartReceiving( + updateHandler: HandleUpdateAsync, + pollingErrorHandler: HandlePollingErrorAsync, + receiverOptions: receiverOptions, + cancellationToken: cts.Token + ); + + var me = await botClient.GetMeAsync(); - Console.WriteLine($"Hello world! I am user {me.Id} and my name is {me.FirstName}."); + Console.WriteLine($"Start listening for @{me.Username}"); + while (true) + { + // Do nothing until the stuff happens + } + + cts.Cancel(); + } + + async Task HandleUpdateAsync(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken) + { + // Only process Message updates: https://core.telegram.org/bots/api#message + if (update.Message is not { } message) + return; + // Only process text messages + if (message.Text is not { } messageText) + return; + + var chatId = message.Chat.Id; + + bool isUri = Uri.IsWellFormedUriString(message.ToString(), UriKind.RelativeOrAbsolute); + + if (isUri) + { + Regex isTikTok = new Regex(@"(?x)(http(s)?:\/\/)?(?:www|m)\.(?:tiktok.com)\/(?:v|embed|trending)(?:\/)?(?:\?shareId=)?(?P[\da-z]+)", RegexOptions.Singleline); + } + + Console.WriteLine($"Received a '{messageText}' message in chat {chatId}."); + + // Echo received message text + Message sentMessage = await botClient.SendTextMessageAsync( + chatId: chatId, + text: "You said:\n" + messageText, + cancellationToken: cancellationToken); + } + + Task HandlePollingErrorAsync(ITelegramBotClient botClient, Exception exception, CancellationToken cancellationToken) + { + var ErrorMessage = exception switch + { + ApiRequestException apiRequestException + => $"Telegram API Error:\n[{apiRequestException.ErrorCode}]\n{apiRequestException.Message}", + _ => exception.ToString() + }; + + Console.WriteLine(ErrorMessage); + return Task.CompletedTask; } } } \ No newline at end of file diff --git a/VidDownload.cs b/VidDownload.cs new file mode 100644 index 0000000..291eff0 --- /dev/null +++ b/VidDownload.cs @@ -0,0 +1,10 @@ +using System; +using System.Diagnostics; + +namespace TeleTok +{ + public class VidDownload + { + + } +} \ No newline at end of file