/// <summary> /// Creates an instance of Sender /// </summary> /// <param name="bot">Reference to the bot</param> /// <param name="SendingInterval">Interval of sending in milliseconds</param> public TelegramMessageSender(TelegramFSMBot bot, int SendingInterval = 50, bool logMessage = false) { this.bot = bot; Queue = new LinkedList <TelegramMessage>(); SendTimer = new Timer(SendingInterval); SendTimer.Elapsed += TimeToSend; LoggingEnabled = logMessage; SendTimer.Start(); }
private static async Task TelegramCallbackQuery(TelegramFSMBot bot, CallbackQuery callbackQuery) { long UserId = callbackQuery.From.Id; string CallbackData = callbackQuery.Data; TelegramButtonPressedCommand command = new TelegramButtonPressedCommand(UserId, CallbackData); await bot.AnswerCallbackQueryAsync(callbackQuery.Id); bot.Dispatch(command); }
/// <summary> /// Creates an instance of Sender /// </summary> /// <param name="bot">Reference to the bot</param> public TelegramMessageSender(TelegramFSMBot bot, bool logMessage = false) { this.bot = bot; Queue = new LinkedList <TelegramMessage>(); SendTimer = new Timer(SENDING_INTERVAL); SendTimer.Elapsed += TimeToSend; LoggingEnabled = logMessage; SendTimer.Start(); }
private static async Task AnswerPreCheckoutQuetry(TelegramFSMBot botClient, PreCheckoutQuery preCheckoutQuery) { try { string OopsAnswer = ""; bool result = botClient.PerformPreCheckoutQuery(preCheckoutQuery.InvoicePayload, ref OopsAnswer); if (result) { await botClient.AnswerPreCheckoutQueryAsync(preCheckoutQuery.Id); } else { await botClient.AnswerPreCheckoutQueryAsync(preCheckoutQuery.Id, OopsAnswer); } } catch (Exception err) { BotUtils.LogException(err); } }
private static async Task TelegramMessage(TelegramFSMBot bot, Message message) { if (message.Type == MessageType.Text) { if (Regex.IsMatch(message.Text, PARAMETRIC_COMMAND_PALETTE)) { string ParametricCommand = Regex.Match(message.Text, PARAMETRIC_COMMAND_PALETTE).Groups[1].Value; bot.ReceiveParametricStart(new ParametricStartEventArgs() { ParametricCommand = ParametricCommand, UserId = message.From.Id }); return; } TelegramTextCommand command = new TelegramTextCommand(message.From.Id, message.Text); bot.Dispatch(command); } if (message.Type == MessageType.Photo || message.Type == MessageType.Document) { MemoryStream ms = new MemoryStream(); string FileName = null; TelegramCommand command = null; switch (message.Type) { case MessageType.Photo: bot.GetInfoAndDownloadFileAsync(message.Photo.Last().FileId, ms).Wait(); ms.Seek(0, SeekOrigin.Begin); command = new TelegramPhotoCommand(message.From.Id, ms.ToArray()); break; case MessageType.Document: if (message.Document.FileSize < 19922944) { if (bot.AnswerToFilesWithType) { bot.Sender.Enqueue(new TelegramTypingMessage(message.From.Id)); } bot.GetInfoAndDownloadFileAsync(message.Document.FileId, ms).Wait(); ms.Seek(0, SeekOrigin.Begin); FileName = message.Document.FileName; command = new TelegramFileCommand(message.From.Id, ms.ToArray(), FileName); } else { FileTooBigEventArgs ftbea = new FileTooBigEventArgs(message.Chat.Id, message.From.Id, message.MessageId, message.Document.FileName, message.Document.FileId, message.Document.FileSize); EventHandler <FileTooBigEventArgs> handler = bot.FileTooBig; handler.Invoke(bot, ftbea); command = new TelegramEmptyCommand(message.From.Id); } break; } bot.Dispatch(command); } if (message.Type == MessageType.SuccessfulPayment) { string InvoiceId = message.SuccessfulPayment.InvoicePayload; PaymentEventArgs pea = new PaymentEventArgs(InvoiceId); EventHandler <PaymentEventArgs> handler = bot.PaymentReceived; handler.Invoke(bot, pea); } if (message.Type == MessageType.ChatMembersAdded) { Console.WriteLine(message.NewChatMembers); } if (message.Type == MessageType.Location || (message.Type == MessageType.Venue && message.Location != null)) { double[] coords = new double[2]; coords[0] = message.Location.Latitude; coords[1] = message.Location.Longitude; TelegramGeoCommand command = new TelegramGeoCommand(message.From.Id, coords); bot.Dispatch(command); } }